{ 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") require("actions-preview").setup({}) local signs = { { name = "DiagnosticSignError", text = "" }, { name = "DiagnosticSignWarn", text = "" }, { name = "DiagnosticSignHint", text = "󰌵" }, { name = "DiagnosticSignInfo", text = "" }, } for _, sign in ipairs(signs) do vim.fn.sign_define(sign.name, { texthl = sign.name, text = sign.text, numhl = "" }) end vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "solid" }) ''; diagnostics = { signs.text = { "__rawKey__vim.diagnostic.severity.ERROR" = ""; "__rawKey__vim.diagnostic.severity.WARN" = ""; "__rawKey__vim.diagnostic.severity.INFO" = ""; "__rawKey__vim.diagnostic.severity.HINT" = "󰌵"; }; underline = true; update_in_insert = true; severity_sort = true; }; keymaps = [ { key = "sa"; mode = "n"; options.silent = true; action.__raw = # lua "require('actions-preview').code_actions"; } { 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 = "sn"; mode = "n"; options.silent = true; action.__raw = # lua "vim.lsp.buf.hover"; } { 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"; }; }; inc-rename.enable = true; which-key.settings.spec = [ { __unkeyed-1 = "s"; group = "LSP"; icon = "󱐋"; } { __unkeyed-1 = "sn"; desc = "Hover"; 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 = "sx"; desc = "LSP Format"; icon = "󰉢"; } ]; }; extraPlugins = [ pkgs.vimPlugins.actions-preview-nvim ]; }; }