A Visual Studio Code Plugin to provide support for USFM
Language support for USFM
Basic syntax highlighting
Install dependencies with npm ci, then:
npm run compile— bundle the extension and language server intodist/with webpack.npm run watch— rebuild on change while developing.- Press F5 (the Run Extension launch config) to open a new VS Code window with the extension loaded.
The core logic (marker validation, chapter/verse marker scanning, the document
outline, and reference navigation) is factored into small modules under src/
so it can be tested without a running editor.
npm test— fast unit tests (plain Node + Mocha, no VS Code host required). Runs in CI on every pull request.npm run test:integration— integration tests that launch a real VS Code instance via@vscode/test-electronand verify the extension activates and registers its command and language. On a headless Linux machine, run this under a virtual display (e.g.xvfb-run -a npm run test:integration).
Unit tests live in src/test/unit/; integration tests live in
src/test/suite/.
Initial release
Support for basic syntax checking. Looks for strange markers
Added support for more markers in the syntax checking
Added support for more markers in the syntax checking
Added support for \it and \it* markers as well as cut the extension size back by quite a bit
Added support for \fq* and \im
Added document outline and go-to-reference support, plus the \mt4 marker
Dependency updates
Added support for nested character markers (e.g. \+add, \+bd*) in syntax highlighting and checking
Added an automated test suite covering marker validation, the document outline, and reference navigation. Extracted the core logic into standalone modules and migrated linting from tslint to eslint.
Dependency updates
Fixed the document outline and go-to-reference skipping \c and \v markers that share a line with another marker, such as \c 1 \v 1 In the beginning or a whole chapter on a single line
Dependency updates
Currently there is no support for USFM milestones and those milestone markers will be marked incorrectly by the syntax checker