A dedicated scratchpad for developers
Go to file
Florian Labarre d0d8f872a6
Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85)
* Add functionality to insert new block after the last block

- Update key bindings in `initial-content.ts` to include `Alt + Enter` for adding a new block after the last block.
- Implement `getLastNoteBlock` function in `block.js` to retrieve the last block in the note.
- Add `addNewBlockAfterLast` command in `commands.js` to handle the insertion of a new block after the last one.
- Integrate `addNewBlockAfterLast` command into the keymap in `keymap.js`.

* Add block insertion before/after current, before first and after last. Also, tests.

- Added `getFirstNoteBlock` in `block.js` for accessing the first text block.
- Implemented new functions in `commands.js` like `addNewBlockBeforeCurrent` and `addNewBlockBeforeFirst`.
- Updated `keymap.js` with new key bindings to facilitate block creation.
- Introduced `block-creation.spec.js` for testing the new block manipulation features.

* Fix visual bug when inserting new block at the top

* Update help text and Readme

* Fix wrong cursor position after inserting new blocks at the top of the buffer, when the previous first block's delimiter is long (e.g. Markdown)

* Make RegEx more generic

* Fix import

* Auto-generate the README.md and initial-content documentation

- Add a documentation generator
- Add an option to force the initial content to be erased with an env variable

* Add more specific tests

* Fix Mod key on Mac in test

---------

Co-authored-by: Jonatan Heyman <jonatan@heyman.info>
2024-01-04 16:11:26 +01:00
.github/workflows Implement tests using Playwright (#68) 2023-12-25 17:41:15 +01:00
assets Add Settings to web app (#125) 2024-01-04 14:27:04 +01:00
build Try to get Mac singning and notarization working in github action 2023-03-05 13:28:15 +01:00
electron Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
public Add Groovy language support (#111) 2024-01-04 15:18:28 +01:00
resources Mac icon pixel push 2023-01-17 00:53:15 +01:00
shared-utils Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
src Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
tests Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
webapp CloseBrackets setting toggle (#102) 2024-01-04 14:52:41 +01:00
.gitignore Implement tests using Playwright (#68) 2023-12-25 17:41:15 +01:00
electron-builder.json5 Add Linux support (#6) 2023-12-21 19:18:04 +01:00
index.html Turn off nodeIntegration. Without it disabled, Math.js does not work in production build. 2023-03-02 20:59:13 +01:00
LICENSE Add license info 2023-03-14 14:12:04 +01:00
package-lock.json Bump version to 1.5.0 2023-12-27 01:12:02 +01:00
package.json Bump version to 1.5.0 2023-12-27 01:12:02 +01:00
playwright.config.ts Add support for more languages (#69) 2023-12-26 00:27:43 +01:00
README.md Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
tsconfig.json Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
tsconfig.node.json Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00
vite.config.ts Add key bindings for inserting new blocks at the end/top of the buffer, as well as before the current block (#85) 2024-01-04 16:11:26 +01:00

Heynote

GitHub release (latest SemVer) Build Status

Heynote is a dedicated scratchpad for developers. It functions as a large persistent text buffer where you can write down anything you like. Works great for that Slack message you don't want to accidentally send, a JSON response from an API you're working with, notes from a meeting, your daily to-do list, etc.

The Heynote buffer is divided into blocks, and each block can have its own Language set (e.g. JavaScript, JSON, Markdown, etc.). This gives you syntax highlighting and lets you auto-format that JSON response.

Available for Mac, Windows, and Linux.

Features

  • Persistent text buffer

  • Block-based

  • Syntax highlighting:

    C++, C#, Clojure, CSS, Erlang, Go, Groovy, HTML, Java, JavaScript, JSX, Kotlin, TypeScript, TOML, TSX, JSON, Lezer, Markdown, PHP, Python, Ruby, Rust, Shell, SQL, Swift, XML, YAML

  • Language auto-detection

  • Auto-formatting

  • Math/Calculator mode

  • Currency conversion

  • Multi-cursor editing

  • Dark & Light themes

  • Option to set a global hotkey to show/hide the app

  • Default or Emacs-like key bindings

Installation

Download the appropriate (Mac, Windows or Linux) version from the latest Github release (or from heynote.com). The Windows build is not signed, so you might see some scary warning (I can not justify paying a yearly fee for a certificate just to get rid of that).

Notes on Linux installation

It's been reported (#48) that ChromeOS's Debian VM need the following packages installed to run the Heynote AppImage:

libfuse2
libnss3
libnspr4

Development

To develop Heynote you need Node.js and you should (hopefully) just need to check out the code and then run:

> npm install
> npm run dev

Run Tests

To run the tests:

> npm run test

To run the tests in the Playwright UI:

> npm run test:ui

Contributions

I'm happy to merge contributions that fit my vision for the app. Bug fixes are always welcome.

FAQ

Where is the buffer data stored?

The default paths for the buffer data for the respective OS are:

  • Mac: ~/Library/Application Support/Heynote/buffer.txt
  • Windows: %APPDATA%\Heynote\buffer.txt
  • Linux: ~/.config/Heynote/buffer.txt

From version >=1.5.0, symlinks will be supported and you'll be able to configure the path where buffer.txt is stored.

Can you make a mobile app?

No, at the moment this is out of scope, sorry.

Can you add a feature for naming blocks and/or adding tags? (#44)

Currently, I'm not planning on adding this. The main reason is that it goes against the scratchpadness of the program.

I can totally see the usefulness of such a feature, and it's definitely something that I would expect from a more traditional Notes app. However a large part of Heynote's appeal is it's simplicity, and if that is to remain so, I'm going to have to say no to a lot of actually useful features.

What are the default keyboard shortcuts?

On Mac

⌥ + Shift + Enter   Add new block at the start of the buffer
⌘ + Shift + Enter   Add new block at the end of the buffer
⌥ + Enter           Add new block before the current block
⌘ + Enter           Add new block below the current block
⌘ + ⌥ + Enter       Split the current block at cursor position
⌘ + L               Change block language
⌘ + Down            Goto next block
⌘ + Up              Goto previous block
⌘ + A               Select all text in a note block. Press again to select the whole buffer
⌘ + ⌥ + Up/Down     Add additional cursor above/below
⌥ + Shift + F       Format block content (works for JSON, JavaScript, HTML, CSS and Markdown)

On Windows and Linux

Alt + Shift + Enter    Add new block at the start of the buffer
Ctrl + Shift + Enter   Add new block at the end of the buffer
Alt + Enter            Add new block before the current block
Ctrl + Enter           Add new block below the current block
Ctrl + Alt + Enter     Split the current block at cursor position
Ctrl + L               Change block language
Ctrl + Down            Goto next block
Ctrl + Up              Goto previous block
Ctrl + A               Select all text in a note block. Press again to select the whole buffer
Ctrl + Alt + Up/Down   Add additional cursor above/below
Alt + Shift + F        Format block content (works for JSON, JavaScript, HTML, CSS and Markdown)
Alt                    Show menu

Can Math blocks do X?

Heynote's Math blocks are powered by Math.js. Checkout their documentation to see what functions and constants are available.

Thanks!

Heynote is built upon CodeMirror, Vue, Electron, Math.js, Prettier and other great open-source projects.