diff options
Diffstat (limited to '.config/nvim/lua/lsp')
| -rw-r--r-- | .config/nvim/lua/lsp/bashls.lua | 12 | ||||
| -rw-r--r-- | .config/nvim/lua/lsp/ccls.lua | 30 | ||||
| -rw-r--r-- | .config/nvim/lua/lsp/gopls.lua | 25 | ||||
| -rw-r--r-- | .config/nvim/lua/lsp/luals.lua | 14 |
4 files changed, 81 insertions, 0 deletions
diff --git a/.config/nvim/lua/lsp/bashls.lua b/.config/nvim/lua/lsp/bashls.lua new file mode 100644 index 0000000..54d562f --- /dev/null +++ b/.config/nvim/lua/lsp/bashls.lua @@ -0,0 +1,12 @@ +vim.lsp.config('bashls', { + cmd = { 'bash-language-server', 'start' }, + settings = { + bashIde = { + globPattern = vim.env.GLOB_PATTERN or '*@(.sh|.inc|.bash|.command)', + }, + }, + filetypes = { 'bash', 'sh', 'zsh' }, + root_markers = { '.git' }, +}) + +vim.lsp.enable('bashls') diff --git a/.config/nvim/lua/lsp/ccls.lua b/.config/nvim/lua/lsp/ccls.lua new file mode 100644 index 0000000..431d547 --- /dev/null +++ b/.config/nvim/lua/lsp/ccls.lua @@ -0,0 +1,30 @@ +local function switch_source_header(client, bufnr) + local method_name = 'textDocument/switchSourceHeader' + local params = vim.lsp.util.make_text_document_params(bufnr) + client:request(method_name, params, function(err, result) + if err then + error(tostring(err)) + end + if not result then + vim.notify('corresponding file cannot be determined') + return + end + vim.cmd.edit(vim.uri_to_fname(result)) + end, bufnr) +end + +vim.lsp.config('ccls', { + cmd = { 'ccls' }, + filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda' }, + root_markers = { 'compile_commands.json', '.ccls', '.git' }, + offset_encoding = 'utf-32', + -- ccls does not support sending a null root directory + workspace_required = true, + on_attach = function(client, bufnr) + vim.api.nvim_buf_create_user_command(bufnr, 'LspCclsSwitchSourceHeader', function() + switch_source_header(client, bufnr) + end, { desc = 'Switch between source/header' }) + end, +}) + +vim.lsp.enable('ccls') diff --git a/.config/nvim/lua/lsp/gopls.lua b/.config/nvim/lua/lsp/gopls.lua new file mode 100644 index 0000000..c37da39 --- /dev/null +++ b/.config/nvim/lua/lsp/gopls.lua @@ -0,0 +1,25 @@ +vim.lsp.config('gopls', { + cmd = {'gopls'}, + filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' }, + root_markers = {'go.mod', 'go.sum', '.git'}, + settings = { + gopls = { + analyses = { + unreachable = true, + unusedparams = true, + }, + codelenses = { + generate = true, + gc_details = true, + }, + annotations = { + bounds = true, + escape = true, + inline = true, + }, + gofumpt = true, + } + } +}) + +vim.lsp.enable('gopls') diff --git a/.config/nvim/lua/lsp/luals.lua b/.config/nvim/lua/lsp/luals.lua new file mode 100644 index 0000000..40d4c3d --- /dev/null +++ b/.config/nvim/lua/lsp/luals.lua @@ -0,0 +1,14 @@ +vim.lsp.config('luals', { + cmd = {'lua-language-server'}, + filetypes = {'lua'}, + root_markers = {'.luarc.json', '.luarc.jsonc'}, + settings = { + Lua = { + diagnostics = { + globals = { "vim" } + } + } + } +}) + +vim.lsp.enable('luals') |
