# Language Server Protocol configuration { config, lib, ... }: let cfg = config.development.nixvim; in { config.programs.nixvim = lib.mkIf cfg.enable { plugins.lsp = { enable = true; inlayHints = true; autoLoad = true; keymaps = { lspBuf = { "lh" = "hover"; "lr" = "references"; "ld" = "definition"; "li" = "implementation"; "lt" = "type_definition"; "lD" = "declaration"; "lR" = "rename"; "la" = "code_action"; "lf" = "format"; "ls" = "signature_help"; "lwa" = "add_workspace_folder"; "lwr" = "remove_workspace_folder"; "lwl" = "list_workspace_folders"; }; diagnostic = { "le" = "open_float"; "lq" = "setloclist"; "[d" = "goto_prev"; "]d" = "goto_next"; }; }; }; autoCmd = [ { event = [ "CursorHold" ]; pattern = "*"; callback.__raw = builtins.readFile ./open-diagnostic-float.lua; } ]; }; }