From 8cc2ad98c1950f3627905eee17c950913e621a27 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 27 Dec 2024 12:42:08 +0100 Subject: [PATCH] Setup lsp --- nvim/default.nix | 3 ++ nvim/lua/lsp.lua | 75 +++++++++++++++++++++++++++++++++++++++++++ nvim/lua/settings.lua | 2 ++ 3 files changed, 80 insertions(+) create mode 100644 nvim/lua/lsp.lua diff --git a/nvim/default.nix b/nvim/default.nix index dfd8c51..cd27b34 100644 --- a/nvim/default.nix +++ b/nvim/default.nix @@ -27,12 +27,15 @@ in # TODO: use catppuccin's compile feature. see: https://github.com/stasjok/dotfiles/blob/36037f523185ba1409dd953999fda0f0db0dbd4f/nvim/default.nix#L136C8-L148C12 catppuccin-nvim nvim-treesitter.withAllGrammars + nvim-lspconfig oil-nvim mini-nvim nvim-surround telescope-fzf-native-nvim vim-sleuth auto-save-nvim + + SchemaStore-nvim ]; opts = [ telescope-nvim diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua new file mode 100644 index 0000000..935846b --- /dev/null +++ b/nvim/lua/lsp.lua @@ -0,0 +1,75 @@ +if vim.g.have_nerd_font then + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = "󰅚", + [vim.diagnostic.severity.WARN] = "", + [vim.diagnostic.severity.HINT] = "󰌶", + [vim.diagnostic.severity.INFO] = "", + }, + }, + }) +end +vim.diagnostic.config({ + virtual_text = false, + update_in_insert = true, +}) + +-- see https://github.com/neovim/nvim-lspconfig/issues/3494 +require("lspconfig").lua_ls.setup({}) +require("lspconfig").hls.setup({}) +require("lspconfig").rust_analyzer.setup({}) +require("lspconfig").clangd.setup({}) +require("lspconfig").omnisharp.setup({}) +require("lspconfig").pyright.setup({}) +require("lspconfig").nil_ls.setup({}) +require("lspconfig").ts_ls.setup({}) +require("lspconfig").yamlls.setup({}) +require("lspconfig").marksman.setup({}) +require("lspconfig").ltex.setup({}) +require("lspconfig").texlab.setup({}) +require("lspconfig").html.setup({}) +require("lspconfig").helm_ls.setup({}) +require("lspconfig").zls.setup({}) + +require("lspconfig").jsonls.setup({ + on_new_config = function(new_config) + new_config.settings.json.schemas = new_config.settings.json.schemas or {} + vim.list_extend(new_config.settings.json.schemas, require("schemastore").json.schemas()) + end, + settings = { + json = { + format = { + enable = true, + }, + validate = { enable = true }, + }, + }, +}) + +require("lspconfig").gopls.setup({ + settings = { + -- https://go.googlesource.com/vscode-go/+/HEAD/docs/settings.md#settings-for + gopls = { + analyses = { + nilness = true, + unusedparams = true, + unusedwrite = true, + useany = true + }, + experimentalPostfixCompletions = true, + gofumpt = true, + staticcheck = true, + usePlaceholders = true, + hints = { + assignVariableTypes = true, + compositeLiteralFields = true, + compositeLiteralTypes = true, + constantValues = true, + functionTypeParameters = true, + parameterNames = true, + rangeVariableTypes = true + } + } + } +}) diff --git a/nvim/lua/settings.lua b/nvim/lua/settings.lua index 7d6dd58..9853eb0 100644 --- a/nvim/lua/settings.lua +++ b/nvim/lua/settings.lua @@ -91,3 +91,5 @@ vim.api.nvim_create_autocmd("TextYankPost", { vim.highlight.on_yank() end, }) + +require("./lsp")