aboutsummaryrefslogtreecommitdiffstats
path: root/modules/development/nixvim/plugins/lsp/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/development/nixvim/plugins/lsp/default.nix')
-rw-r--r--modules/development/nixvim/plugins/lsp/default.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/modules/development/nixvim/plugins/lsp/default.nix b/modules/development/nixvim/plugins/lsp/default.nix
new file mode 100644
index 0000000..1d56b66
--- /dev/null
+++ b/modules/development/nixvim/plugins/lsp/default.nix
@@ -0,0 +1,43 @@
+# Language Server Protocol configuration
+{ config, lib, ... }:
+{
+ config.programs.nixvim = lib.mkIf config.development.nixvim.enable {
+ plugins.lsp = {
+ enable = true;
+ inlayHints = true;
+ autoLoad = true;
+
+ keymaps = {
+ lspBuf = {
+ "<leader>lh" = "hover";
+ "<leader>lr" = "references";
+ "<leader>ld" = "definition";
+ "<leader>li" = "implementation";
+ "<leader>lt" = "type_definition";
+ "<leader>lD" = "declaration";
+ "<leader>lR" = "rename";
+ "<leader>la" = "code_action";
+ "<leader>lf" = "format";
+ "<leader>ls" = "signature_help";
+ "<leader>lwa" = "add_workspace_folder";
+ "<leader>lwr" = "remove_workspace_folder";
+ "<leader>lwl" = "list_workspace_folders";
+ };
+ diagnostic = {
+ "<leader>le" = "open_float";
+ "<leader>lq" = "setloclist";
+ "[d" = "goto_prev";
+ "]d" = "goto_next";
+ };
+ };
+ };
+
+ autoCmd = [
+ {
+ event = [ "CursorHold" ];
+ pattern = "*";
+ callback.__raw = builtins.readFile ./open-diagnostic-float.lua;
+ }
+ ];
+ };
+}