{ lib, pkgs, config, ... }: let cfg = config.presets.base.diagnostics; in { options.presets.base.diagnostics = { enable = lib.mkEnableOption "diagnostics"; }; config = lib.mkIf cfg.enable { extraConfigLuaPre = # lua '' vim.lsp.set_log_level("off") vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "solid" }) ''; diagnostics = { virtual_text.prefix = "●"; signs = false; float = { focusable = false; header = ""; border = "solid"; scope = "cursor"; prefix = ""; }; underline = true; update_in_insert = true; severity_sort = true; }; keymaps = [ { key = "sn"; mode = "n"; options.silent = true; action.__raw = # lua "function() vim.diagnostic.open_float(nil) end"; } { key = "sx"; mode = "n"; options.silent = true; action.__raw = # lua "vim.lsp.buf.format"; } { key = "sR"; mode = "n"; options.silent = true; action = ":LspRestart"; } { key = "sc"; mode = "n"; action = ":IncRename "; } { key = "sh"; mode = "n"; options.silent = true; action.__raw = # lua "function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({0}), {0}) end"; } ]; plugins = { lsp = { enable = true; inlayHints = false; }; telescope = { enable = true; keymaps = { "sr" = "lsp_references"; "sd" = "lsp_definitions"; "si" = "lsp_implementations"; "sw" = "lsp_workspace_symbols"; "st" = "lsp_type_definitions"; "sa" = "quickfix"; }; }; inc-rename.enable = true; which-key.settings.spec = [ { __unkeyed-1 = "s"; group = "LSP"; icon = "󱐋"; } { __unkeyed-1 = "sr"; desc = "References"; icon = "󱁉"; } { __unkeyed-1 = "sc"; desc = "Incremental Rename"; icon = "󰑕"; } { __unkeyed-1 = "sR"; desc = "Restart LSP"; icon = "󰜉"; } { __unkeyed-1 = "sd"; desc = "Definitions"; icon = "󰜬"; } { __unkeyed-1 = "si"; desc = "Implementations"; icon = "󰴽"; } { __unkeyed-1 = "sw"; desc = "Workspace Symbols"; icon = "󰷐"; } { __unkeyed-1 = "st"; desc = "Type Definitions"; icon = "󱍕"; } { __unkeyed-1 = "sh"; icon = "󰞂"; desc = "Inlay Hints"; } { __unkeyed-1 = "sa"; desc = "Code Actions"; icon = ""; } { __unkeyed-1 = "sn"; desc = "Diagnostics"; icon = ""; } { __unkeyed-1 = "sx"; desc = "LSP Format"; icon = "󰉢"; } ]; }; }; }