From 11909289f9352d760d86c1e42793d44030d66ecb Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Fri, 22 May 2026 01:52:28 +0300 Subject: [PATCH] changes --- .config/nvim/lsp/clangd.lua | 2 + .config/nvim/lua/extra.lua | 56 +++++++++++++++++++-------- .config/nvim/lua/keymaps.lua | 4 +- .config/nvim/queries/c/highlights.scm | 2 +- 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/.config/nvim/lsp/clangd.lua b/.config/nvim/lsp/clangd.lua index 9ff8035..06e600e 100644 --- a/.config/nvim/lsp/clangd.lua +++ b/.config/nvim/lsp/clangd.lua @@ -102,5 +102,7 @@ return { vim.keymap.set('n', 'H', 'ClangdSwitchSourceHeader', { desc = '[H]eader and Source Switcher' }) vim.keymap.set('n', 'e', JumpToNextError) vim.keymap.set('n', 'E', JumpToPrevError) + vim.keymap.set('n', 'w', JumpToNextWarning) + vim.keymap.set('n', 'W', JumpToPrevWarning) end, } diff --git a/.config/nvim/lua/extra.lua b/.config/nvim/lua/extra.lua index ad8b6bd..ddf65ce 100644 --- a/.config/nvim/lua/extra.lua +++ b/.config/nvim/lua/extra.lua @@ -495,7 +495,7 @@ vim.keymap.set({ 'i', 'n', 'v' }, '', 'CompileClosewqa') -- NOTE: Jump to next error based on compile() ---------------------------------------------------------------------------- -function JumpToError(direction) +function JumpToDiagnostic(direction, is_error, is_warning) vim.defer_fn(function() vim.cmd('w') end, 10) @@ -508,18 +508,20 @@ function JumpToError(direction) return end - local error_parsers = { + local warning_parsers = { function(line) - -- Clang: ABS:LINE:COL: error: ... - local file, lnum = line:match('^(.-):(%d+):%d+:%s+error:') + -- Clang: ABS:LINE:COL: warning: ... + local file, lnum = line:match('^(.-):(%d+):%d+:%s+warning:') if file and lnum then return { file = file, line = tonumber(lnum) } end end, + } + local error_parsers = { function(line) - -- Clang: ABS:LINE:COL: warning: ... - local file, lnum = line:match('^(.-):(%d+):%d+:%s+warning:') + -- Clang: ABS:LINE:COL: error: ... + local file, lnum = line:match('^(.-):(%d+):%d+:%s+error:') if file and lnum then return { file = file, line = tonumber(lnum) } end @@ -550,26 +552,38 @@ function JumpToError(direction) local lines = vim.api.nvim_buf_get_lines(BuildTerminalBuf, 0, -1, false) -- vim.notify('Build buffer line count: ' .. #lines, 'warn') - local errors = {} + local diagnostics = {} for _, line in ipairs(lines) do - for _, f in ipairs(error_parsers) do - local err = f(line) - if err then - table.insert(errors, err) - break + if is_warning then + for _, f in ipairs(warning_parsers) do + local warning = f(line) + if warning then + table.insert(diagnostics, warning) + break + end + end + end + + if is_error then + for _, f in ipairs(error_parsers) do + local error = f(line) + if error then + table.insert(diagnostics, error) + break + end end end end - vim.notify('Error count: ' .. #errors, 'warn') - if #errors == 0 then + -- vim.notify('Diagnostics count: ' .. #diagnostics, 'warn') + if #diagnostics == 0 then return end local win = 0 local current_file = vim.api.nvim_buf_get_name(win) local filtered = {} - for _, e in ipairs(errors) do + for _, e in ipairs(diagnostics) do if e.file == current_file then table.insert(filtered, e) end @@ -615,11 +629,19 @@ function JumpToError(direction) end function JumpToNextError() - return JumpToError(1) + return JumpToDiagnostic(1, true, false) end function JumpToPrevError() - return JumpToError(-1) + return JumpToDiagnostic(-1, true, false) +end + +function JumpToNextWarning() + return JumpToDiagnostic(1, true, true) +end + +function JumpToPrevWarning() + return JumpToDiagnostic(-1, true, true) end ---------------------------------------------------------------------------- diff --git a/.config/nvim/lua/keymaps.lua b/.config/nvim/lua/keymaps.lua index 2ceec0b..f05ffc3 100644 --- a/.config/nvim/lua/keymaps.lua +++ b/.config/nvim/lua/keymaps.lua @@ -116,8 +116,8 @@ local keymaps = { { { 'n', 'i' }, '', 'Lspsaga code_action', { desc = 'Code Actions' } }, -- { 'n', 'e', next_diagnostic(severity.ERROR), { desc = 'Goto [E]rror' } }, -- { 'n', 'E', prev_diagnostic(severity.ERROR), { desc = 'Goto [E]rror (prev)' } }, - { 'n', 'w', next_diagnostic(severity.WARN), { desc = 'Goto [W]arning' } }, - { 'n', 'W', prev_diagnostic(severity.WARN), { desc = 'Goto [W]arning (prev)' } }, + -- { 'n', 'w', next_diagnostic(severity.WARN), { desc = 'Goto [W]arning' } }, + -- { 'n', 'W', prev_diagnostic(severity.WARN), { desc = 'Goto [W]arning (prev)' } }, { 'n', 'D', cursor_diagnostics, { desc = '[D]iagnostics under cursor' } }, } diff --git a/.config/nvim/queries/c/highlights.scm b/.config/nvim/queries/c/highlights.scm index d51c4e6..66abfe4 100644 --- a/.config/nvim/queries/c/highlights.scm +++ b/.config/nvim/queries/c/highlights.scm @@ -3,7 +3,7 @@ (#any-of? @keyword "kr_proc" "inlined" "u8" "u16" "u32" "u64" - "i8" "i16" "i32" "i64" + "i8" "i16" "i32" "i64" "i128" "f32" "f64" "b8" "b32" "b64" "rune" "usize" "isize" "uptr" "iptr"