notesy::editor
The note in front: what it says, where the caret is, and typing into it.
Takes the editor permission. Everything here works on the note the user
has in front, and nothing else; changes are steps the user can undo, like
their own typing.
rustuse notesy::{commands, editor};
pub fn ready() {
commands::add("stamp", "Stamp the note's path", |command| {
editor::insert(`— ${editor::path().unwrap_or("?")}`);
});
}
| Function | What it does |
|---|---|
editor::note() |
The note in front, a Note (unsaved edits and all), Some(note), or None when there's none. |
editor::path() |
The note in front's path, Some(path), or None when there's none. |
editor::text() |
Its text, unsaved edits and all, or None. |
editor::selection() |
Where the caret is: #{ start, end, text }, start and end in characters from the top (the same when nothing's selected), or None. |
editor::insert(text) |
Types text at the caret, over what's selected. |
editor::insert_snippet(text) |
The same, and the caret goes to its first $0: "**$0**" leaves it between the stars. |
editor::replace(start, end, text) |
Puts text in place of the characters from start to end. |
editor::set_selection(start, end) |
Puts the selection from start to end (the caret, when they're the same), brought into sight. |
With no note in front, insert, replace and set_selection are errors. Positions count
characters, not bytes: "é" is one.
#Taking the keys
With keys.take (and keys and keys.which, to hear which), a plugin can
take what's typed in the editor before the note gets it: a vim mode's keys.
| Function | What it does |
|---|---|
editor::take_keys(on) |
While on, a key struck or text typed in the editor goes to the plugin, as key.down (with which), and not into the note. false gives them back. |
Shortcuts (with Ctrl, or Cmd on a Mac) still reach notesy, and so do pastes
and what an input method writes, so the user can always reach the palette
and settings. The keys are given back when the plugin stops. A key taken
reaches the script a moment after it's struck; one typed while the plugin
was giving them back (going into a vim's insert mode, say) arrives as a
key.down too, for it to type itself. Each key.down says which it was:
taken is true for a key that went to the plugin and not into the note,
and false for one the note got (or a shortcut). A vim mode types the
taken ones it hears after saying take_keys(false), and leaves the others,
which are in the note already.
examples/plugins/example.vim is
a whole vim mode built on it.
Every page
- Overview
- plugin.toml: Every field of plugin.toml
- Permissions: What a plugin can ask for, when notesy asks, and what changes it
- Scripts: How a script runs: its lifecycle, events, limits and errors
- Packing and installing: Making, checking, signing, packing and installing
- notesy::log: Lines for its log on the Plugins page
- notesy::events: Hearing what happens, and every event
- notesy::commands: Adding commands, and running notesy's
- notesy::store: Keeping its own data
- notesy::settings: Reading its settings
- notesy::secrets: Keys and tokens, in the system keychain
- notesy::notes: Reading and changing the vault's notes
- notesy::editor: The note in front
- notesy::templates: What templates fill in, and functions of its own for them
- notesy::files: A folder of its own
- notesy::links: Opening pages in the browser, naming links after their pages
- notesy::clipboard: Copying and pasting
- notesy::view: What panels, tabs and sections show
- notesy::sections: Sidebar sections
- notesy::hidden: Hiding notes, files and folders from the tree
- notesy::status: Status bar items
- notesy::tools: Buttons in the formatting bar
- notesy::notices: Notices
- notesy::dialogs: Asking in a dialog, notesy's kinds or its own
- notesy::wizards: Pages one after another, like a setup
- notesy::boards: Boards' cards and arrows, and kinds of card of its own
- notesy::blocks: Drawing its fenced blocks
- notesy::icons: Drawing its own icons
- notesy::net: Requests to the sites it names
- notesy::ipc: Talking to a program on this computer
- notesy::accounts: Signing in to a service
- notesy::json: Reading and writing JSON
- notesy::toml: Reading and writing TOML
- notesy::yaml: Reading and writing YAML, and a note's front matter
- notesy::time: Now, written in the user's time zone, dates read, how long ago
- notesy::math: Trigonometry and the like, for drawing
- Names: Icon, Color, Tone, Side, Method, Command, Zone, Event: Notesy's names as enums
- notesy::preview: Its own screens for notesy preview
- notesy::perf: Timing its own work
- notesy::drawings: Drawings' shapes, and buttons in their tool strip
- notesy::sound: Playing sounds, and making them as it runs
- notesy::tex: Math macros for every note's formulas
- notesy::views: Side panels, tabs of its own, and its part of the tree's hover cards
- notesy::zones: Notesy's own places — its menus, its bars and its headings