Carve for Sublime Text
August 15, 2026 ยท View on GitHub
Syntax highlighting for the Carve markup language in Sublime Text 3 and 4.
Files with a .crv extension are highlighted automatically.
This package is authored from the maintained Carve TextMate grammar
(scope text.carve) so its scope names line up with existing color schemes.
Features
- Headings (
#...######) - Inline mnemonics:
/italic/,*bold*,_underline_,~strike~,=highlight=(single=),{^sup^},{,sub,},`code` - Links, autolinks (
<https://...>,<a@b.com>), images, reference and cross-reference links, inline spans - Lists, task lists (
- [ ]/- [x]), ordered lists, definition lists (:) - Block quotes (
>) - Fenced code with language plus the fence header
"header"/[label]- and the code inside is highlighted with Sublime's own syntax for that language (python, js/ts, rust, go, php, ruby, sql, shell, yaml, json, html, css and ~35 more) - Raw passthrough fences (
```=html), kept verbatim and never highlighted as code - Divs (
:::) with admonition types and"title"/[label], and the bare::: figureopener, which is a composite figure rather than an admonition and gets its own scope - Block and inline attributes (
{#id .class key="val"}) - Tables with
|,|=header rows,^rowspan,<colspan, and GFM|---|delimiter rows - Footnotes (
[^id]) - Math: inline
$..``, display$$..`` ````, and```mathfences - Frontmatter (
---,---toml,---json), highlighted with the declared format's own syntax - Mentions (
@name), tags (#tag), symbols (:smile:) - Critic markup (
{+ins+},{-del-},{~a~>b~},{#comment#}) - Line comments (
%%) and block comments (%%%)
Install
Package Control
- Open the command palette (
Ctrl/Cmd+Shift+P). - Run Package Control: Install Package.
- Search for Carve and install it.
Manual
- Find your packages directory via Preferences > Browse Packages....
- Create a folder named
Carveinside it. - Copy the contents of this repository into that folder.
Recommended view settings
The package does not override any editor settings. Since Carve is
prose-oriented markup, settings like these tend to work well - open a .crv
file and pick Preferences > Settings - Syntax Specific to apply them for
Carve files only:
{
"tab_size": 2,
"translate_tabs_to_spaces": true,
"word_wrap": true,
"spell_check": true,
// Spell-check prose only: skip code spans, code blocks, raw passthrough,
// math, links, and attribute values.
"spelling_selector": "text.carve - markup.raw - meta.math - markup.underline.link - meta.attributes",
"trim_trailing_white_space_on_save": false
}
trim_trailing_white_space_on_save matters more here than in most languages:
trailing spaces inside a Carve code block are content and render inside <pre>.
Commands
Available from the command palette:
| Command | What it does |
|---|---|
| Carve: Go to Cross-Reference Target | Jumps from a </#id> under the cursor to the heading it points at (explicit {#id} attributes and derived heading slugs both resolve, case-insensitively, like Carve itself). |
| Carve: Format Buffer (carve fmt) | Runs carve fmt over the buffer. Formats unsaved content and keeps undo history. |
Both need the carve CLI on PATH for formatting (npm install -g @markup-carve/carve
or cargo install carve-lang). Configure in Preferences > Package Settings:
{
"carve_binary": "carve",
"carve_format_on_save": false
}
Build system
With a .crv file open, Tools > Build (ctrl+b) runs carve lint and the
reported problems are clickable, because carve prints file:line:column.
Tools > Build With... offers the other variants: lint the whole project,
carve fmt --check, carve fmt -w, render HTML to stdout or to a file, and an
ANSI terminal preview.
Snippets
Tab triggers for the constructs that are tedious to type by hand: note
(admonition), table, codegroup, listtable, figure (image + caption),
deflist, fn (footnote + definition), xref, code, fm (frontmatter),
math, spoiler. Typing an admonition or extension name (warning, tabs,
toc, mermaid, ...) also offers a completion that expands the whole fence.
Running the syntax tests
See the development guide for running the syntax suite locally and maintaining the package.
License
MIT. See LICENSE.