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

Carve

by markup-carve ST3

Sublime Text package for the Carve markup language (.crv)

Details

Installs

  • Total 4
  • Win 1
  • Mac 2
  • Linux 1
Sep 1 Aug 31 Aug 30 Aug 29 Aug 28 Aug 27 Aug 26 Aug 25 Aug 24 Aug 23 Aug 22 Aug 21 Aug 20 Aug 19 Aug 18 Aug 17 Aug 16 Aug 15 Aug 14 Aug 13 Aug 12 Aug 11 Aug 10 Aug 9 Aug 8 Aug 7 Aug 6 Aug 5 Aug 4 Aug 3 Aug 2 Aug 1 Jul 31 Jul 30 Jul 29 Jul 28 Jul 27 Jul 26 Jul 25 Jul 24 Jul 23 Jul 22 Jul 21 Jul 20 Jul 19
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 1 0 0 0 0 0 0 0 0 0 0
Mac 0 0 1 0 0 0 0 0 0 0 0 0 1 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 1 0

Readme

Source
raw.​githubusercontent.​com

Carve for Sublime Text

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>), reference and cross-reference links, inline spans
  • Images in all three forms: ![alt](src), ![alt][ref] and ![alt][]
  • 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 "title" / [label]; the eight Tier-1 admonition types get a scope of their own, distinct from a custom container, and so do the bare ::: figure composite-figure opener, the ::: | line block and the ::: \ local hard-break block
  • Block and inline attributes ({#id .class key="val"})
  • Tables with |, |= header rows, ^ rowspan, < colspan, and GFM |---| delimiter rows
  • Footnotes: references ([^id]), inline notes (^[text]) and definitions ([^id]: body), whose body is inline content rather than a destination
  • Hard line breaks (a trailing \)
  • Math: inline $.. , display$$.. , andmath“ fences
  • 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 (%%), trailing comments, block comments (%%%) and delimited inline comments ({% ... %})
  • Every verbatim payload stays verbatim: nothing inside a code block, raw block, code span, inline literal, math span or comment is coloured as markup

Install

Package Control

  1. Open the command palette (Ctrl/Cmd+Shift+P).
  2. Run Package Control: Install Package.
  3. Search for Carve and install it.

Manual

  1. Find your packages directory via Preferences > Browse Packages….
  2. Create a folder named Carve inside it.
  3. 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.