diff --git a/lua/config/autocommands.lua b/lua/config/autocommands.lua index 66c31fc..a7b6e98 100644 --- a/lua/config/autocommands.lua +++ b/lua/config/autocommands.lua @@ -113,3 +113,32 @@ create_cmd({"InsertLeave", "CmdlineLeave", "TermLeave", "BufEnter", "WinEnter" } trailing_hl_match_ids[window] = vim.fn.matchadd("TrailingWhitespace", [[\s\+$]]) end }) + +-- Open Trouble Quickfix list automatically +create_cmd("QuickFixCmdPost", { + desc = "Automatically open Quickfix List in Trouble", + group = create_group("cmd-quickfix-open-trouble", { clear = true }), + callback = function() + vim.cmd([[Trouble qflist open]]) + end +}) + +-- Automatically open diagnostic float when hovering with cursor +vim.api.nvim_create_autocmd("CursorHold", { + callback = function() + if not vim.api.nvim_get_current_win() then return end + vim.diagnostic.open_float(nil, { focus = false, scope = "cursor" }) + end, +}) + +vim.api.nvim_create_autocmd("CursorMoved", { + callback = function() + for _, win in ipairs(vim.api.nvim_list_wins()) do + local config = vim.api.nvim_win_get_config(win) + if config.relative ~= "" then + vim.api.nvim_win_close(win, false) + end + end + end, +}) + diff --git a/lua/config/diagnostic.lua b/lua/config/diagnostic.lua index a40a9c8..db1a7df 100644 --- a/lua/config/diagnostic.lua +++ b/lua/config/diagnostic.lua @@ -31,15 +31,15 @@ ]] vim.diagnostic.config({ - update_in_insert = true, + update_in_insert = false, severity_sort = true, float = { border = vim.g.ui.popupborder, source = true, }, - underline = true, + -- underline = true, -- underline only from a specified severity level - -- underline = { severity = { min = vim.diagnostic.severity.WARN } }, + underline = { severity = { min = vim.diagnostic.severity.WARN } }, virtual_text = { prefix = vim.g.ui.symbols.diagnostic.virtual_text_prefix, severity = nil, -- show all severities diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index e7a5f92..5204d6e 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -97,3 +97,22 @@ map("n", "bd", smart_buffer_delete, { desc = "Close Current Buffer" }) map("n", "bw", smart_buffer_wipeout, { desc = "Wipeout Current Buffer" }) map("n", "bD", delete_other_buffers, { desc = "Close All Other Buffers" }) map("n", "bW", wipeout_other_buffers, { desc = "Wipeout All Other Buffers" }) + +-- Trouble Keybinds +-- open diagnostics window +map("n", "xd", [[Trouble diagnostics toggle focus=false filter.buf=0]], { desc = "Toggle diagnostic message for current buffer" }) +map("n", "xD", [[Trouble diagnostics toggle focus=false]], { desc = "Toggle diagnostic message for project" }) +map("n", "grt", [[Trouble symbols toggle focus=false]], { desc = "Open TreeSitter Symbols" }) +map("n", "grs", [[Trouble lsp_document_symbols toggle focus=false]], { desc = "Open LSP Document Symbols", silent = true, noremap = true }) +map("n", "grS", [[Trouble lsp_workspace_symbols toggle focus=false]], { desc = "Open LSP Workspace Symbols", silent = true, noremap = true }) +map("n", "grD", [[Trouble lsp_declarations toggle]], { desc = "Show LSP Declarations", silent = true, noremap = true }) +map("n", "grd", [[Trouble lsp_definitions toggle]], { desc = "Show LSP Definitions", silent = true, noremap = true }) +map("n", "gri", [[Trouble lsp_implementations toggle]], { desc = "Show LSP Implementations", silent = true, noremap = true }) +map("n", "grc", [[Trouble lsp_incoming_calls toggle]], { desc = "Show LSP incoming calls", silent = true, noremap = true }) +map("n", "grC", [[Trouble lsp_outgoing_calls toggle]], { desc = "Show LSP outgoing calls", silent = true, noremap = true }) +map("n", "grr", [[Trouble lsp_references toggle]], { desc = "Show LSP references", silent = true, noremap = true }) +map("n", "xq", [[Trouble qflist toggle focus=false]], { desc = "Show Quickfix List" }) +map("n", "xl", [[Trouble loclist toggle focus=false]], { desc = "Show Location List" }) +map("n", "grn", vim.lsp.buf.rename, { desc = "Rename", silent = true, noremap = true }) +map("n", "gra", vim.lsp.buf.code_action, { desc = "Action", silent = true, noremap = true }) +map("n", "gl", vim.diagnostic.open_float, { desc = "Open Diagnostic Float" }) diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua index e0db1f0..d0e078e 100644 --- a/lua/lsp/init.lua +++ b/lua/lsp/init.lua @@ -167,7 +167,7 @@ local function show_lsp_details() table.insert(lines, "") table.insert(lines, "Health Check (vim.treesitter):") table.insert(lines, "=======================") - local health_lines = run_healthcheck("vim.treesitter") + health_lines = run_healthcheck("vim.treesitter") for _, l in ipairs(health_lines) do table.insert(lines, " " .. l) end diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 9397936..2b2f292 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -32,5 +32,6 @@ require("plugins/catppuccin") require("plugins/lualine") +require("plugins/trouble") require("plugins/whichkey") diff --git a/lua/plugins/trouble.lua b/lua/plugins/trouble.lua new file mode 100644 index 0000000..11bf0f3 --- /dev/null +++ b/lua/plugins/trouble.lua @@ -0,0 +1,53 @@ +--[[ + + +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣷⣦⣄⡀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠚⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠗⢀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣤⣀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣶⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⢿⣿⣿⣿⣿⣿⣿⡿⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣶⣤ +⠀⠀⠀⠀⠀⠀⠀⠀⠐⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠓⠦⣌⡙⠻⠟⢋⣡⠴⠚⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⠂ +⠀⠀⠀⠀⢀⣠⣴⣆⡈⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠃⠘⢉⣠⣴⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢁⣰⣦⣄⡀ +⠀⠀⠐⠾⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠷⠂ +⠀⢸⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⡇ +⠀⢸⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⣦⣄⡉⠛⠿⠿⠛⢉⣠⣴⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⡇ +⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠻⢿⣿⣷⡆⢰⣾⣿⡿⠟⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣌⡙⠃⠘⢋⣡⣴⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⣿⣷⣾⣿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⠛⠿⣿⣿⣿⣿⠿⠛⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⣿⣷⣦⣄⡉⢉⣠⣴⣾⣿⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⠿⠛⠉ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠿⡇⢸⠿⠛⠉ + + __ _ _ + / _|___ ___| |_ __ _ ___| | __ + | ||_ /____/ __| __/ _` |/ __| |/ / + | _/ /_____\__ \ || (_| | (__| < + |_|/___| |___/\__\__,_|\___|_|\_\ + + Neovim v0.12 configuration + (C) Frank Zechert 2026 +]] + +vim.pack.add({ + { src = "https://github.com/nvim-tree/nvim-web-devicons" }, + { src = "https://github.com/folke/trouble.nvim" }, +}) + +local trouble = require("trouble") +trouble.setup({ + auto_preview = true, + auto_refresh = true, + auto_jump = false, + modes = { + diagnostics = { + preview = { + type = "split", + relative = "win", + position = "right", + size = 0.4 + }, + }, + }, +}) diff --git a/lua/plugins/whichkey.lua b/lua/plugins/whichkey.lua index 98b3ef1..bc8f925 100644 --- a/lua/plugins/whichkey.lua +++ b/lua/plugins/whichkey.lua @@ -41,4 +41,7 @@ wk.setup({ }) wk.add({ { "b", group = "Buffers" }, + { "x", group = "Trouble" }, + { "c", group = "Code" }, + { "gr", group = "LSP" }, }) diff --git a/nvim-pack-lock.json b/nvim-pack-lock.json index 8e52f9b..4798af2 100644 --- a/nvim-pack-lock.json +++ b/nvim-pack-lock.json @@ -16,6 +16,10 @@ "rev": "dfbfaa967a6f7ec50789bead7ef87e336c1fa63c", "src": "https://github.com/nvim-tree/nvim-web-devicons" }, + "trouble.nvim": { + "rev": "bd67efe408d4816e25e8491cc5ad4088e708a69a", + "src": "https://github.com/folke/trouble.nvim" + }, "which-key.nvim": { "rev": "3aab2147e74890957785941f0c1ad87d0a44c15a", "src": "https://github.com/folke/which-key.nvim" diff --git a/packages.txt b/packages.txt index cac46b8..a60ac4c 100644 --- a/packages.txt +++ b/packages.txt @@ -1,4 +1,6 @@ git +make +unzip tree-sitter-cli fzf ripgrep