diff --git a/configs/nixvim/fiesta/default.nix b/configs/nixvim/fiesta/default.nix index 2fbc83eb..4b61b096 100644 --- a/configs/nixvim/fiesta/default.nix +++ b/configs/nixvim/fiesta/default.nix @@ -9,6 +9,7 @@ ui.enable = true; completion.enable = true; treesitter.enable = true; + lsp.enable = true; fuzzy-finder.enable = true; debugging.enable = true; desktop-utils.enable = true; diff --git a/configs/nixvim/fiesta/modules/default.nix b/configs/nixvim/fiesta/modules/default.nix index d1544e9c..ec9461f2 100644 --- a/configs/nixvim/fiesta/modules/default.nix +++ b/configs/nixvim/fiesta/modules/default.nix @@ -4,6 +4,7 @@ ./setups/debugging.nix ./setups/desktop-utils.nix ./setups/fuzzy-finder.nix + ./setups/lsp.nix ./setups/note-taking.nix ./setups/snippets ./setups/treesitter.nix diff --git a/configs/nixvim/fiesta/modules/setups/lsp.nix b/configs/nixvim/fiesta/modules/setups/lsp.nix new file mode 100644 index 00000000..e80dd4ec --- /dev/null +++ b/configs/nixvim/fiesta/modules/setups/lsp.nix @@ -0,0 +1,41 @@ +{ config, lib, ... }: + +let + nixvimConfig = config.nixvimConfigs.fiesta; + cfg = nixvimConfig.setups.lsp; +in +{ + options.nixvimConfigs.fiesta.setups.lsp.enable = + lib.mkEnableOption null // { + description = '' + Whether to enable LSP setup. Take note you'll have to enable and + configure individual language servers yourself since the resulting + NixVim config can be pretty heavy. + ''; + }; + + config = lib.mkIf cfg.enable { + plugins.lsp.enable = true; + + # Keymaps for moving around in the buffer. + plugins.keymaps.lspBuf = { + K = "hover"; + gD = "references"; + gd = "definition"; + gi = "implementation"; + gt = "type_definition"; + }; + + # Keymaps for moving around with the doctor. + plugins.keymaps.diagnostic = { + "j" = "goto_next"; + "k" = "goto_prev"; + }; + + # Enable lsp-format + plugins.lsp-format.enable = true; + + # Make those diagnostics fit the screen, GODDAMNIT! + plugins.lsp-lines.enable = true; + }; +}