From 2d0d477a992a75ce5f17ea84f75348e17a6f90b3 Mon Sep 17 00:00:00 2001 From: Avery Date: Tue, 11 Mar 2025 13:53:51 +0000 Subject: [PATCH] Add diagnostics plugin and icons to Neovim configuration --- .../development/nixvim/default.nix | 1 + .../home-manager/development/nixvim/lsp.nix | 16 +- .../development/nixvim/neo-tree.nix | 290 +++++++++--------- .../development/nixvim/trouble.nix | 25 ++ 4 files changed, 193 insertions(+), 139 deletions(-) create mode 100644 hosts/totsugeki/home-manager/development/nixvim/trouble.nix diff --git a/hosts/totsugeki/home-manager/development/nixvim/default.nix b/hosts/totsugeki/home-manager/development/nixvim/default.nix index 1d420e8..7509317 100644 --- a/hosts/totsugeki/home-manager/development/nixvim/default.nix +++ b/hosts/totsugeki/home-manager/development/nixvim/default.nix @@ -7,6 +7,7 @@ ./none-ls.nix ./treesitter.nix ./telescope.nix + ./trouble.nix ]; programs.nixvim = { enable = true; diff --git a/hosts/totsugeki/home-manager/development/nixvim/lsp.nix b/hosts/totsugeki/home-manager/development/nixvim/lsp.nix index bd76825..cbd293b 100644 --- a/hosts/totsugeki/home-manager/development/nixvim/lsp.nix +++ b/hosts/totsugeki/home-manager/development/nixvim/lsp.nix @@ -1,7 +1,21 @@ -{ pkgs, ... }: { +{ ... }: { programs.nixvim.plugins = { lsp = { enable = true; + keymaps.lspBuf."ca" = "code_action"; + luaConfig.post = '' + local signs = { + Error = "", + Warn = "", + Hint = "", + Info = "" + } + + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, {text = icon, texthl = hl, numhl = hl}) + end + ''; servers = { cssls.enable = true; dartls.enable = true; diff --git a/hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix b/hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix index 367a419..dedce56 100644 --- a/hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix +++ b/hosts/totsugeki/home-manager/development/nixvim/neo-tree.nix @@ -1,161 +1,175 @@ { ... }: { programs.nixvim = { - keymaps = [ - { - action = "Neotree toggle"; - key = "fi"; - } - ]; + keymaps = [{ + action = "Neotree toggle"; + key = "fi"; + }]; plugins.neo-tree = { enable = true; closeIfLastWindow = true; enableGitStatus = true; enableDiagnostics = true; sourceSelector = { - winbar = true; - statusline = false; - tabsLayout = "equal"; - sources = [ - { source = "filesystem"; displayName = " 󰉓 Archivos "; } - ]; + winbar = true; + statusline = false; + tabsLayout = "equal"; + sources = [{ + source = "filesystem"; + displayName = " 󰉓 Archivos "; + }]; }; defaultComponentConfigs = { - container = { - enableCharacterFade = true; + container = { enableCharacterFade = true; }; + indent = { + indentSize = 2; + padding = 1; + withMarkers = true; + indentMarker = "│"; + lastIndentMarker = "└"; + highlight = "NeoTreeIndentMarker"; + withExpanders = true; + expanderCollapsed = ""; + expanderExpanded = ""; + expanderHighlight = "NeoTreeExpander"; + }; + icon = { + folderClosed = ""; + folderOpen = ""; + folderEmpty = ""; + default = " "; + highlight = "NeoTreeFileIcon"; + }; + modified = { + symbol = "[+]"; + highlight = "NeoTreeModified"; + }; + name = { + trailingSlash = false; + useGitStatusColors = true; + highlight = "NeoTreeFileName"; + }; + gitStatus = { + symbols = { + added = ""; + modified = ""; + deleted = ""; + renamed = ""; + untracked = ""; + ignored = ""; + unstaged = ""; + staged = ""; + conflict = ""; }; - indent = { - indentSize = 2; - padding = 1; - withMarkers = true; - indentMarker = "│"; - lastIndentMarker = "└"; - highlight = "NeoTreeIndentMarker"; - withExpanders = true; - expanderCollapsed = ""; - expanderExpanded = ""; - expanderHighlight = "NeoTreeExpander"; + }; + diagnostics = { + symbols = { + error = ""; + warn = ""; + hint = ""; + info = ""; }; - icon = { - folderClosed = ""; - folderOpen = ""; - folderEmpty = ""; - default = " "; - highlight = "NeoTreeFileIcon"; - }; - modified = { - symbol = "[+]"; - highlight = "NeoTreeModified"; - }; - name = { - trailingSlash = false; - useGitStatusColors = true; - highlight = "NeoTreeFileName"; - }; - gitStatus = { - symbols = { - added = ""; - modified = ""; - deleted = ""; - renamed = ""; - untracked = ""; - ignored = ""; - unstaged = "U"; - staged = ""; - conflict = ""; - }; - }; - diagnostics = { - symbols = { - error = ""; - warn = ""; - hint = ""; - info = ""; - }; - highlights = { - hint = "DiagnosticSignHint"; - info = "DiagnosticSignInfo"; - warn = "DiagnosticSignWarn"; - error = "DiagnosticSignError"; - }; + highlights = { + hint = "DiagnosticSignHint"; + info = "DiagnosticSignInfo"; + warn = "DiagnosticSignWarn"; + error = "DiagnosticSignError"; }; + }; }; window = { - position = "left"; - width = 40; - mappingOptions = { - noremap = true; - nowait = true; - }; + position = "left"; + width = 40; + mappingOptions = { + noremap = true; + nowait = true; + }; }; filesystem = { - bindToCwd = true; - filteredItems = { - visible = false; - hideDotfiles = false; - hideGitignored = false; - hideByName = [ - "nodeModules" - ]; - }; - groupEmptyDirs = false; - useLibuvFileWatcher = true; - }; - buffers = { - groupEmptyDirs = true; + bindToCwd = true; + filteredItems = { + visible = false; + hideDotfiles = false; + hideGitignored = false; + hideByName = [ "nodeModules" ]; + }; + groupEmptyDirs = false; + useLibuvFileWatcher = true; }; + buffers = { groupEmptyDirs = true; }; renderers = { - directory = [ - "indent" - "icon" - "current_filter" - { - name = "container"; - content = [ - { - name = "name"; - zindex = 10; - } - { - name = "symlink_target"; - zindex = 10; - highlight = "NeoTreeSymbolicLinkTarget"; - } - { - name = "clipboard"; - zindex = 10; - } - { - name = "diagnostics"; - errorsOnly = true; - zindex = 20; - align = "right"; - hideWhenExpanded = false; - } - { - name = "git_status"; - zindex = 10; - align = "right"; - hideWhenExpanded = true; - } - ]; - } - ]; - file = [ - "indent" - "icon" + directory = [ + "indent" + "icon" + "current_filter" + { + name = "container"; + content = [ { - name = "container"; - content = [ - { name = "name"; zindex = 10; } - { name = "clipboard"; zindex = 10;} - { name = "bufnr"; zindex = 10;} - { name = "modified"; zindex = 20; align = "right";} - { name = "diagnostics"; zindex = 20; align = "right";} - { name = "git_status"; zindex = 15; align = "right";} - ]; - } + name = "name"; + zindex = 10; + } + { + name = "symlink_target"; + zindex = 10; + highlight = "NeoTreeSymbolicLinkTarget"; + } + { + name = "clipboard"; + zindex = 10; + } + { + name = "diagnostics"; + errorsOnly = true; + zindex = 20; + align = "right"; + hideWhenExpanded = false; + } + { + name = "git_status"; + zindex = 10; + align = "right"; + hideWhenExpanded = true; + } + ]; + } + ]; + file = [ + "indent" + "icon" + { + name = "container"; + content = [ + { + name = "name"; + zindex = 10; + } + { + name = "clipboard"; + zindex = 10; + } + { + name = "bufnr"; + zindex = 10; + } + { + name = "modified"; + zindex = 20; + align = "right"; + } + { + name = "diagnostics"; + zindex = 20; + align = "right"; + } + { + name = "git_status"; + zindex = 15; + align = "right"; + } + ]; + } ]; }; - }; - }; + }; + }; } diff --git a/hosts/totsugeki/home-manager/development/nixvim/trouble.nix b/hosts/totsugeki/home-manager/development/nixvim/trouble.nix new file mode 100644 index 0000000..47f1ca5 --- /dev/null +++ b/hosts/totsugeki/home-manager/development/nixvim/trouble.nix @@ -0,0 +1,25 @@ +{ ... }: { + programs.nixvim = { + plugins.trouble = { + enable = true; + settings = { + auto_refresh = true; + focus = true; + follow = false; + keys = { + "" = "jump_close"; + "s" = "jump_vsplit"; + "S" = "jump_split"; + }; + win = { + type = "float"; + border = "rounded"; + }; + }; + }; + keymaps = [{ + action = "Trouble diagnostics toggle"; + key = "dg"; + }]; + }; +}