`zk` can provide a basic integration with any [LSP-compatible](https://microsoft.github.io/language-server-protocol/overviews/lsp/overview/) text editor by shipping a Language Server. PR #21 implements a proof of concept server showing promising results, but there's more to come: * Links * [x] Auto-complete internal Markdown links with `[[` * [x] Auto-complete the path portion of a Markdown link with `[custom title]((` * [x] User configuration to specify the link format using a template * [x] Open a note from an inline Markdown link or WikiLink (**document link** when supported and **go to definition** as an alternative) * [x] Open a website from an inline external Markdown link (with [`textDocument/documentLink`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_documentLink)) * [x] Open a reference link * [ ] Move the caret to the next link in the note with a code action, for quick navigation (with [`window.showDocument`](https://microsoft.github.io/language-server-protocol/specification#window_showDocument)) * [x] Preview the content of a linked note with a **hover** * [x] Diagnostic (error) to show dead links * [x] Diagnostic (hint) to show the title of a linked note next to the link * [x] Browse backlinks with [find references](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_references) * [ ] Browse backlinks / outbound links with a tree-like [call hierarchy](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_prepareCallHierarchy) (client support is still lacking) * [ ] Highlight WikiLinks using [semantic tokens](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens) (client support is still lacking) * [ ] (Maybe?) Report `DocumentLink` for unlinked mentions, using `aliases` metadata * Tags * [x] Auto-complete tags with `#` and `:` trigger characters * [ ] Rename a tag with a refactor code action * [ ] Highlight tags using [semantic tokens](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens) (client support is still lacking) * [ ] View the list of all the notes for a particular tag when running the References action. * Notes * [x] Code action to create (and link) a new note using the current selection as its title * [x] Code action to create (and link) a new note using the current selection as its content (`refactor.extract`?) * [ ] Code action to rename the note title * [ ] User configuration to declare dynamic code actions to generate notes with custom group / template * [ ] Snippet support using `zk` templates * Expose `zk` commands as LSP commands, for easy client-side consumption * [ ] `zk.init` to create a new notebook * [x] `zk.index` to index a notebook manually * [x] `zk.new` to create a new note * [x] `zk.list` to search for notes (returning a JSON) * [x] `zk.tag.list` to return the list of tags * [ ] `zk.info` to provide detailed JSON metadata about a notebook (list of groups, templates, dirs, etc.) * Other * [ ] Optimizations for large (10k+) notebooks (esp. completion) Feel free to share more ideas!
zkcan provide a basic integration with any LSP-compatible text editor by shipping a Language Server.PR #21 implements a proof of concept server showing promising results, but there's more to come:
Links
[[[custom title]((textDocument/documentLink)window.showDocument)DocumentLinkfor unlinked mentions, usingaliasesmetadataTags
#and:trigger charactersNotes
refactor.extract?)zktemplatesExpose
zkcommands as LSP commands, for easy client-side consumptionzk.initto create a new notebookzk.indexto index a notebook manuallyzk.newto create a new notezk.listto search for notes (returning a JSON)zk.tag.listto return the list of tagszk.infoto provide detailed JSON metadata about a notebook (list of groups, templates, dirs, etc.)Other
Feel free to share more ideas!