aboutsummaryrefslogtreecommitdiffstats
path: root/modules/tools/nixvim/plugins/lsp.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/tools/nixvim/plugins/lsp.nix')
-rw-r--r--modules/tools/nixvim/plugins/lsp.nix127
1 files changed, 80 insertions, 47 deletions
diff --git a/modules/tools/nixvim/plugins/lsp.nix b/modules/tools/nixvim/plugins/lsp.nix
index 07f4073..1621d43 100644
--- a/modules/tools/nixvim/plugins/lsp.nix
+++ b/modules/tools/nixvim/plugins/lsp.nix
@@ -2,56 +2,89 @@
# LSP - Language Server Protocol configuration (nvim-lspconfig)
{
- config.programs.nixvim.plugins.lsp = lib.mkIf config.tools.nixvim.enable {
- enable = true;
- inlayHints = true;
- keymaps.lspBuf = {
- K = "hover";
- gD = "references";
- gd = "definition";
- gi = "implementation";
- gt = "type_definition";
- };
- servers = {
- nil_ls = {
- enable = true;
- };
- lua_ls = {
- enable = true;
- package = null;
- };
- nixd = {
- enable = true;
- package = null;
- };
- pyright = {
- enable = true;
- package = null;
- };
- ts_ls = {
- enable = true;
- package = null;
- };
- clangd = {
- enable = true;
- package = null;
+ config.programs.nixvim = lib.mkIf config.tools.nixvim.enable {
+ plugins.lsp = {
+ enable = true;
+ inlayHints = true;
+ keymaps.lspBuf = {
+ K = "hover";
+ gD = "references";
+ gd = "definition";
+ gi = "implementation";
+ gt = "type_definition";
};
- jsonls = {
- enable = true;
- package = null;
+ servers = {
+ nil_ls = {
+ enable = true;
+ };
+ lua_ls = {
+ enable = true;
+ package = null;
+ };
+ nixd = {
+ enable = true;
+ package = null;
+ };
+ pyright = {
+ enable = true;
+ package = null;
+ };
+ ts_ls = {
+ enable = true;
+ package = null;
+ };
+ clangd = {
+ enable = true;
+ package = null;
+ };
+ jsonls = {
+ enable = true;
+ package = null;
+ };
+ yamlls = {
+ enable = true;
+ package = null;
+ };
+ bash-language-server = {
+ enable = true;
+ package = null;
+ };
+ gopls = {
+ enable = true;
+ package = null;
+ };
};
- yamlls = {
- enable = true;
- package = null;
- };
- bash-language-server = {
- enable = true;
- package = null;
- };
- gopls = {
- enable = true;
- package = null;
+ };
+
+ diagnostic = {
+ settings = {
+ virtual_text = false;
+ signs = true;
+ underline = true;
+ update_in_insert = false;
+ float = {
+ border = "rounded";
+ source = true; # Show which LSP the diagnostic is from
+ header = "";
+ prefix = "";
+ };
};
};
+
+ # Show diagnostics float on cursor hold
+ autoCmd = [
+ {
+ event = [ "CursorHold" ];
+ pattern = "*";
+ callback.__raw = ''
+ function()
+ vim.diagnostic.open_float(nil, { focus = false })
+ end
+ '';
+ }
+ ];
+
+ # How long before CursorHold fires (in ms)
+ opts.updatetime = 500;
};
}