Short Answer
You don't pick a parser revision to match Neovim — you rebuild the parser against the ABI of the Neovim you're running. Compatibility is determined by the Tree-sitter ABI bundled into your Neovim release, not by any particular norg grammar commit. Since Neorg doesn't pin a grammar revision, the deterministic path is: let nvim-treesitter compile the norg parser on your current Neovim, and verify with the health check that it loads.
Identifying the Compatible Parser
Run :checkhealth nvim-treesitter. It reports the Tree-sitter ABI your Neovim provides and the load status of each installed parser, including norg. Then ensure the parser was built by that Neovim:
:TSInstall norg
" or, if already installed but possibly stale:
:TSUpdate norg
The installer compiles the grammar source present at build time against the running ABI, so "the compatible revision" is effectively "whatever nvim-treesitter built most recently on this Neovim." The important corollary: upgrading Neovim can change the bundled ABI and silently invalidate previously built parsers. After any Neovim upgrade, re-run :TSUpdate (or rebuild all parsers) before debugging anything else.
One caveat for reproducibility: because the grammar isn't pinned, two machines that ran :TSInstall at different times may have different grammar sources. If you need bit-for-bit reproducibility, snapshot the installed parser directory or lock nvim-treesitter itself to a commit — Neorg won't do it for you.
ABI Mismatch vs. Neorg Configuration Problem
Both can look identical on screen — highlights, folding, or concealing simply vanish with no error — so visual symptoms alone can't distinguish them. The reliable discriminator is whether the parser loads and attaches:
- ABI mismatch: the parser fails to load.
:checkhealth nvim-treesitter flags norg as not loadable, and :messages after opening a .norg file typically shows a parser load error. - Configuration issue: the parser loads fine, but Neorg's modules don't apply highlighting/folding/concealing as expected.
Verify attachment directly in a .norg buffer:
:InspectTree " or :TSInspect / :TSHighlightCapturesUnderCursor on older setups
:echo nvim_treesitter#statusline() " if available in your config
If a syntax tree is produced, the ABI is fine and the problem lives in Neorg's module configuration (e.g., core.highlights, core.concealer not loaded or misconfigured). If no parser attaches, fix the parser first with :TSUpdate norg, re-open the buffer, and re-check health.
One Detail That Changes the Answer
Everything above assumes you install parsers through nvim-treesitter's installer. If you build the norg grammar manually (your own tree-sitter generate/cc pipeline or a system package), the health check still applies, but :TSUpdate won't rebuild it — you must recompile against the headers/library matching your Neovim's ABI yourself. In that case, say so, because the fix is a rebuild step rather than an installer command.
Version Assumptions
This reflects well-established nvim-treesitter behavior on Neovim 0.8+; exact command names (:InspectTree vs. :TSInspect) vary by version, so confirm against your installed release. Health-check output format may also differ across nvim-treesitter revisions.