feat: enable vim syntax fallback by default (#152)

## Problem

Languages without a treesitter parser (COBOL, Fortran, etc.) got no
syntax highlighting because \`highlights.vim.enabled\` defaulted to
\`false\`.

## Solution

Flip the default to \`true\`. The vim syntax path is already deferred
via \`vim.schedule\` so it never blocks the first paint. \`max_lines =
200\` stays unchanged — appropriate given the ~30x slower per-hunk cost
vs treesitter.
This commit is contained in:
Barrett Ruth 2026-03-05 11:13:28 -05:00 committed by GitHub
parent e1d3b81607
commit 29e624d9f0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 12 additions and 10 deletions

View file

@ -15,11 +15,11 @@ with language-aware syntax highlighting.
[vscode-diff](https://github.com/esmuellert/codediff.nvim) FFI backend for [vscode-diff](https://github.com/esmuellert/codediff.nvim) FFI backend for
word-level accuracy) word-level accuracy)
- `:Gdiff` unified diff against any revision - `:Gdiff` unified diff against any revision
- Background-only diff colors for `&diff` buffers
- Inline merge conflict detection, highlighting, and resolution - Inline merge conflict detection, highlighting, and resolution
- Email-quoted diff highlighting (`> diff ...` prefixes, arbitrary nesting - Email quoting/patch syntax support (`> diff ...`)
depth) - Vim syntax fallback
- Vim syntax fallback, configurable blend/priorities - Configurable highlighiting blend & priorities
- Context-inclusive, high-accuracy highlights
## Requirements ## Requirements

View file

@ -89,7 +89,7 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads:
max_lines = 500, max_lines = 500,
}, },
vim = { vim = {
enabled = false, enabled = true,
max_lines = 200, max_lines = 200,
}, },
intra = { intra = {
@ -204,7 +204,7 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads:
See |diffs.TreesitterConfig| for fields. See |diffs.TreesitterConfig| for fields.
{vim} (table, default: see below) {vim} (table, default: see below)
Vim syntax highlighting options (experimental). Vim syntax fallback highlighting options.
See |diffs.VimConfig| for fields. See |diffs.VimConfig| for fields.
{intra} (table, default: see below) {intra} (table, default: see below)
@ -269,13 +269,15 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads:
*diffs.VimConfig* *diffs.VimConfig*
Vim config fields: ~ Vim config fields: ~
{enabled} (boolean, default: false) {enabled} (boolean, default: true)
Use vim syntax highlighting as fallback when no Use vim syntax highlighting as fallback when no
treesitter parser is available for a language. treesitter parser is available for a language.
Creates a scratch buffer, sets the filetype, and Creates a scratch buffer, sets the filetype, and
queries |synID()| per character to extract queries |synID()| per character to extract
highlight groups. Slower than treesitter but highlight groups. Deferred via |vim.schedule()|
covers languages without a TS parser installed. so it never blocks the first paint. Slower than
treesitter but covers languages without a TS
parser installed (e.g., COBOL, Fortran).
{max_lines} (integer, default: 200) {max_lines} (integer, default: 200)
Skip vim syntax highlighting for hunks larger than Skip vim syntax highlighting for hunks larger than

View file

@ -124,7 +124,7 @@ local default_config = {
max_lines = 500, max_lines = 500,
}, },
vim = { vim = {
enabled = false, enabled = true,
max_lines = 200, max_lines = 200,
}, },
intra = { intra = {