ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

LSP-carve

by markup-carve ST4 New

Sublime Text LSP client for Carve, powered by carve-lsp

Labels lsp, carve, markup

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 named LSP-<language> (LSP-yaml, LSP-json, …), which is how Package Control users find them. The same split already exists for the syntax package: the repo is sublime-carve, the package is Carve.

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

  1. Install LSP, LSP-carve and Carve from Package Control.
  2. Open a .crv file.

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.