{ 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.lsp.keymaps.lspBuf = { K = "hover"; gD = "references"; gd = "definition"; gi = "implementation"; gt = "type_definition"; }; # Keymaps for moving around with the doctor. plugins.lsp.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; }; }