LSP-carve
Sublime Text LSP client for Carve, powered by carve-lsp
Details
Installs
- Total 0
- Win 0
- Mac 0
- Linux 0
| Jul 23 | Jul 22 | Jul 21 | Jul 20 | Jul 19 | Jul 18 | Jul 17 | Jul 16 | Jul 15 | Jul 14 | Jul 13 | Jul 12 | Jul 11 | Jul 10 | Jul 9 | Jul 8 | Jul 7 | Jul 6 | Jul 5 | Jul 4 | Jul 3 | Jul 2 | Jul 1 | Jun 30 | Jun 29 | Jun 28 | Jun 27 | Jun 26 | Jun 25 | Jun 24 | Jun 23 | Jun 22 | Jun 21 | Jun 20 | Jun 19 | Jun 18 | Jun 17 | Jun 16 | Jun 15 | Jun 14 | Jun 13 | Jun 12 | Jun 11 | Jun 10 | Jun 9 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
sublime-carve-lsp
Language-server support for the Carve markup language in Sublime Text, powered by carve-lsp.
Syntax highlighting comes from sublime-carve; this package adds everything a language server provides on top of it.
Names. This repository is
sublime-carve-lsp, but it installs as the package **LSP-carve** - Sublime's client packages are all namedLSP-<language>(LSP-yaml, LSP-json, …), which is how Package Control users find them. The same split already exists for the syntax package: the repo issublime-carve, the package isCarve.Do not confuse this with carve-lsp, which is the language server itself (a TypeScript npm package used by VS Code, IntelliJ, Zed, and Neovim too). This repository is only the thin Sublime client that installs and launches it.
Features
Advertised by carve-lsp and surfaced through the LSP package:
| Feature | What it gives you |
|---|---|
| Diagnostics | Markdown/Djot habits that silently produce wrong output - **bold** (Carve bold is a single *), ~~strike~~, + bullets - plus unresolved references and other document problems |
| Code actions | Quick fixes for those migration diagnostics |
| Document symbols | Headings as an outline (LSP: Document Symbols) |
| Hover | Explains the construct under the cursor |
| Go to definition | Jumps a </#id> cross-reference, a [^footnote], or a [link][ref] to what it names |
| Find references | Every use of a heading id, footnote, or reference definition |
| Rename | Renames an id or label and every reference to it |
| Formatting | carve fmt through the standard LSP format command |
| Folding | Sections, containers, and fenced blocks |
| Completion | Triggered on :, #, ^, [ |
Colouring stays with the syntax definition: carve-lsp deliberately does not advertise semantic tokens, so the two layers never fight over the same text.
Install
The server itself is an npm package. lsp_utils installs it into this
plugin's storage directory and provides a Node runtime, so no global Node
installation is required.
Keybindings
LSP ships its keybindings commented out, so F12 and friends do nothing
until you enable them - this is LSP's default, not a problem with this package.
Every feature is available immediately from the command palette
(LSP: Goto Definition, LSP: Find References, LSP: Rename, …).
To bind the common ones, run Preferences: LSP Key Bindings from the command palette (it opens the same user key-bindings file on the right, with LSP's own bindings for reference on the left) and add:
[
{
"keys": ["f12"],
"command": "lsp_symbol_definition",
"args": {"side_by_side": false, "force_group": true, "fallback": false, "group": -1},
"context": [
{"key": "lsp.session_with_capability", "operand": "definitionProvider"},
{"key": "auto_complete_visible", "operand": false}
]
},
{
"keys": ["f2"],
"command": "lsp_symbol_rename",
"context": [{"key": "lsp.session_with_capability", "operand": "renameProvider"}]
}
]
The capability guard means each key keeps its normal behaviour in files no
server handles. alt+enter (code action) and shift+f12 (find references) are
enabled by LSP out of the box.
Configuration
Open Preferences > Package Settings > LSP > Servers > LSP-carve, or run Preferences: LSP-carve Settings from the command palette.
carve-lsp reads no configuration of its own - what it reports is derived from
the document and the shared Carve corpus - so the settings file holds only the
standard LSP client options (selector, initializationOptions, env, and so
on).
Relationship to the Carve package
| sublime-carve | LSP-carve | |
|---|---|---|
| Syntax highlighting, embedded code languages | yes | no |
| Snippets, completions, build system | yes | no |
| Symbol outline | headings, from the syntax | headings, from the server |
| Cross-reference navigation | own command, single file | LSP go-to-definition and find-references |
| Formatting | runs the carve CLI directly |
through the server |
| Diagnostics, hover, rename, code actions | no | yes |
The two are complementary: install both. sublime-carve works on its own; this
package needs it for the text.carve selector to match.
License
MIT. See LICENSE.