diff options
| author | Kyren223 <kyren223@proton.me> | 2025-08-04 13:24:57 +0300 |
|---|---|---|
| committer | Kyren223 <kyren223@proton.me> | 2025-08-04 13:24:57 +0300 |
| commit | 19d71dd596cadad21c91cdb6cc6f171dbe42db74 (patch) | |
| tree | d2067c79742a7215eeb33ef9b48e58a45b14b4f4 /.config | |
| parent | c57e2e0d9b76da9502024f2e8d45c5d7707b3dfa (diff) | |
Fixed incorrect highlighting of TODOs
Diffstat (limited to '.config')
| -rw-r--r-- | .config/nvim/lua/autocmds.lua | 44 | ||||
| -rw-r--r-- | .config/nvim/queries/comment/highlights.scm | 60 |
2 files changed, 29 insertions, 75 deletions
diff --git a/.config/nvim/lua/autocmds.lua b/.config/nvim/lua/autocmds.lua index f7440ef..34bcbea 100644 --- a/.config/nvim/lua/autocmds.lua +++ b/.config/nvim/lua/autocmds.lua @@ -220,24 +220,38 @@ function RenderTodoHighlights(bufnr) -- 1) highlight keyword vim.api.nvim_buf_add_highlight(bufnr, ns, cfg.hl, i - 1, s - 1, e - 1) - -- 2) highlight (...) parts only if a keyword was found - local start = 1 - local s, e = line:find('%b()', start) - if not s then - break + local next_char = line:sub(e, e) + + -- 2) highlight (...) if it directly follows keyword + if next_char == '(' then + local ps = e + local pe = nil + for j = e + 1, math.min(#line, e + 100) do + if line:sub(j, j) == ')' then + pe = j + break + end + end + + if pe then + vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.bracket, i - 1, ps - 1, ps) + vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.bracket, i - 1, pe - 1, pe) + if pe - ps > 1 then + vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.constant, i - 1, ps, pe - 1) + end + + e = pe + end end - -- "(" and ")" - vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.bracket, i - 1, s - 1, s) - vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.bracket, i - 1, e - 1, e) - -- inner constant - if e - s > 1 then - vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.constant, i - 1, s, e - 1) + + -- -- 3) highlight ":" if directly after keyword or after parens + local colon_pos = nil + if line:sub(e, e) == ':' then + colon_pos = e end - start = e + 1 - -- 3) highlight any ":" as delimiter only if a group keyword was found - for s, _ in line:gmatch('():') do - vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.delimiter, i - 1, s - 1, s) + if colon_pos then + vim.api.nvim_buf_add_highlight(bufnr, ns, scopes.delimiter, i - 1, colon_pos - 1, colon_pos) end end end diff --git a/.config/nvim/queries/comment/highlights.scm b/.config/nvim/queries/comment/highlights.scm index 133b405..e69de29 100644 --- a/.config/nvim/queries/comment/highlights.scm +++ b/.config/nvim/queries/comment/highlights.scm @@ -1,60 +0,0 @@ -((tag - (name) @comment.todo @nospell - ("(" @punctuation.bracket - (user) @constant - ")" @punctuation.bracket)? - ":" @punctuation.delimiter) - (#any-of? @comment.todo "TODO" "WIP")) - -("text" @comment.todo @nospell - (#any-of? @comment.todo "TODO" "WIP")) - -((tag - (name) @comment.note @nospell - ("(" @punctuation.bracket - (user) @constant - ")" @punctuation.bracket)? - ":" @punctuation.delimiter) - (#any-of? @comment.note "NOTE" "INFO" "DOCS" "TEST")) - -("text" @comment.note @nospell - (#any-of? @comment.note "NOTE" "INFO" "DOCS" "TEST")) - -((tag - (name) @comment.perf @nospell - ("(" @punctuation.bracket - (user) @constant - ")" @punctuation.bracket)? - ":" @punctuation.delimiter) - (#any-of? @comment.perf "PERF" "OPTIMIZE")) - -("text" @comment.perf @nospell - (#any-of? @comment.perf "PERF" "OPTIMIZE")) - -((tag - (name) @comment.warning @nospell - ("(" @punctuation.bracket - (user) @constant - ")" @punctuation.bracket)? - ":" @punctuation.delimiter) - (#any-of? @comment.warning "HACK" "WARNING" "WARN" "SECURITY" "SECURE")) - -("text" @comment.warning @nospell - (#any-of? @comment.warning "HACK" "WARNING" "WARN" "SECURITY" "SECURE")) - -((tag - (name) @comment.error @nospell - ("(" @punctuation.bracket - (user) @constant - ")" @punctuation.bracket)? - ":" @punctuation.delimiter) - (#any-of? @comment.error "FIXME" "FIX" "BUG" "ERROR" "UNSAFE" "SAFETY")) - -("text" @comment.error @nospell - (#any-of? @comment.error "FIXME" "FIX" "BUG" "ERROR" "UNSAFE" "SAFETY")) - -; Issue number (#123) -("text" @number - (#lua-match? @number "^#[0-9]+$")) - -(uri) @string.special.url @nospell |
