summaryrefslogtreecommitdiff
path: root/config/plugins/lsp.nix
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-18 01:28:42 -0500
committerseth <[email protected]>2023-12-18 02:18:35 -0500
commit8faa242f21648e52a6bbdfa803fd4ea1b0e347e0 (patch)
treeeff6694cefb2f821bf19b0d8cb3d97bf48cb15b9 /config/plugins/lsp.nix
parent9fe8afd0c5f2b439176728d8863570bf22614dbd (diff)
port to nixvim
Diffstat (limited to 'config/plugins/lsp.nix')
-rw-r--r--config/plugins/lsp.nix54
1 files changed, 54 insertions, 0 deletions
diff --git a/config/plugins/lsp.nix b/config/plugins/lsp.nix
new file mode 100644
index 0000000..c2648db
--- /dev/null
+++ b/config/plugins/lsp.nix
@@ -0,0 +1,54 @@
+{lib, ...}: {
+ plugins.lsp = {
+ enable = true;
+
+ capabilities = ''
+ capabilities = vim.tbl_deep_extend(
+ "force",
+ require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
+ { workspace = { didChangeWatchedFiles = { dynamicRegistration = true } } }
+ )
+ '';
+
+ keymaps = {
+ diagnostic = {
+ "<leader>e" = "open_float";
+ "[d" = "goto_prev";
+ "]d" = "goto_next";
+ "<leader>u" = "setloclist";
+ };
+ };
+
+ servers = let
+ withDefaultOpts = lib.genAttrs [
+ "bashls"
+ "lua-ls"
+ "nil_ls"
+ ] (_: {enable = true;});
+
+ optionalOpts = {
+ enable = true;
+ installLanguageServer = false;
+ autostart = false;
+ };
+
+ optional = lib.genAttrs [
+ "clangd"
+ "eslint"
+ "pyright"
+ "rust-analyzer"
+ "tsserver"
+ ] (_: optionalOpts);
+ in
+ withDefaultOpts
+ // optional
+ // {
+ rust-analyzer =
+ optionalOpts
+ // {
+ installRustc = false;
+ installCargo = false;
+ };
+ };
+ };
+}