My simple neovim config
at main 2.9 kB view raw
1vim.o.completeopt = "menuone,noinsert,noselect" 2-- local lspkind = require("lspkind") 3-- A table of servers used for setting up LSP 4local servers = { 5 -- "bashls", 6 "superhtml", 7 -- "pyright", 8 "nixd", 9 "zls", 10 "ruff", 11 "tflint", 12 "just", 13 "ty", 14 -- { 15 -- "harper_ls", 16 -- exec = "harper-ls", 17 -- }, 18 { 19 "terraformls", 20 exec = "terraform-ls", 21 }, 22 { 23 "eslint", 24 exec = "vscode-eslint-language-server", 25 }, 26 { 27 "nil_ls", 28 exec = "nil", 29 }, 30 -- { 31 -- "ltex", 32 -- exec = "ltex-ls", 33 -- }, 34 { 35 "ts_ls", 36 exec = "typescript-language-server", 37 }, 38 { 39 "astro", 40 exec = "astro-ls", 41 }, 42 { 43 "lua_ls", 44 exec = "lua-language-server", 45 }, 46 "gopls", 47 { 48 "gh_actions_ls", 49 exec = "gh-actions-language-server", 50 }, 51 { 52 "yamlls", 53 exec = "yaml-language-server", 54 }, 55} 56 57-- Only install servers that exist + use custom options 58-- We may be able to potentially remove this 59for _, server in ipairs(servers) do 60 local exec = "" 61 local lsp = "" 62 if type(server) == "table" then 63 lsp = server[1] 64 if server.enable ~= nil and server.continue then 65 goto continue 66 end 67 if server.exec ~= nil then 68 exec = server.exec 69 else 70 exec = lsp 71 end 72 else 73 lsp = server 74 exec = server 75 end 76 77 local command = [[echo executable("]] .. exec .. [[")]] 78 local out = vim.api.nvim_exec2(command, { output = true }) 79 local result = tonumber(out.output) 80 if result ~= 0 then 81 vim.lsp.enable(lsp) 82 -- nvim_lsp[lsp].setup(setup) 83 end 84 ::continue:: 85end 86 87vim.lsp.enable("biome-custom") 88 89vim.g.rustaceanvim = { 90 server = { 91 on_attach = function(client, _) 92 client.server_capabilities.workspace.didChangeWatchedFiles = { 93 dynamicRegistration = false, 94 } 95 end, 96 default_settings = { 97 ["rust-analyzer"] = { 98 files = { 99 watcherExclude = { 100 "**/.direnv/**", 101 }, 102 excludeDirs = { 103 ".direnv", 104 ".github", 105 }, 106 }, 107 cargo = { 108 features = "all", 109 }, 110 }, 111 }, 112 }, 113} 114 115vim.api.nvim_create_augroup("LspAttach_inlayhints", {}) 116vim.api.nvim_create_autocmd("LspAttach", { 117 group = "LspAttach_inlayhints", 118 callback = function(event) 119 local client = vim.lsp.get_client_by_id(event.data.client_id) 120 -- Enable for all clients except for lua_ls 121 if client and client.name ~= "lua_ls" then 122 vim.lsp.inlay_hint.enable(true) 123 end 124 end, 125})