From 29e624d9f053524f75c15c792261d99990093f93 Mon Sep 17 00:00:00 2001 From: Barrett Ruth <62671086+barrettruth@users.noreply.github.com> Date: Thu, 5 Mar 2026 11:13:28 -0500 Subject: [PATCH] feat: enable vim syntax fallback by default (#152) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 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. --- README.md | 8 ++++---- doc/diffs.nvim.txt | 12 +++++++----- lua/diffs/init.lua | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index eee728d..2a7bd73 100644 --- a/README.md +++ b/README.md @@ -15,11 +15,11 @@ with language-aware syntax highlighting. [vscode-diff](https://github.com/esmuellert/codediff.nvim) FFI backend for word-level accuracy) - `:Gdiff` unified diff against any revision -- Background-only diff colors for `&diff` buffers - Inline merge conflict detection, highlighting, and resolution -- Email-quoted diff highlighting (`> diff ...` prefixes, arbitrary nesting - depth) -- Vim syntax fallback, configurable blend/priorities +- Email quoting/patch syntax support (`> diff ...`) +- Vim syntax fallback +- Configurable highlighiting blend & priorities +- Context-inclusive, high-accuracy highlights ## Requirements diff --git a/doc/diffs.nvim.txt b/doc/diffs.nvim.txt index 3bb5a09..6798173 100644 --- a/doc/diffs.nvim.txt +++ b/doc/diffs.nvim.txt @@ -89,7 +89,7 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads: max_lines = 500, }, vim = { - enabled = false, + enabled = true, max_lines = 200, }, intra = { @@ -204,7 +204,7 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads: See |diffs.TreesitterConfig| for fields. {vim} (table, default: see below) - Vim syntax highlighting options (experimental). + Vim syntax fallback highlighting options. See |diffs.VimConfig| for fields. {intra} (table, default: see below) @@ -269,13 +269,15 @@ Configuration is done via `vim.g.diffs`. Set this before the plugin loads: *diffs.VimConfig* Vim config fields: ~ - {enabled} (boolean, default: false) + {enabled} (boolean, default: true) Use vim syntax highlighting as fallback when no treesitter parser is available for a language. Creates a scratch buffer, sets the filetype, and queries |synID()| per character to extract - highlight groups. Slower than treesitter but - covers languages without a TS parser installed. + highlight groups. Deferred via |vim.schedule()| + 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) Skip vim syntax highlighting for hunks larger than diff --git a/lua/diffs/init.lua b/lua/diffs/init.lua index d1cc7d2..0bfc373 100644 --- a/lua/diffs/init.lua +++ b/lua/diffs/init.lua @@ -124,7 +124,7 @@ local default_config = { max_lines = 500, }, vim = { - enabled = false, + enabled = true, max_lines = 200, }, intra = {