From 0f738beb9b4dbec953afeed20c7fcb2d7bd54c87 Mon Sep 17 00:00:00 2001 From: Marko Korhonen Date: Tue, 23 Aug 2022 19:14:09 +0300 Subject: [PATCH] Fix scope issues in lspconfig --- home/.config/nvim/ftplugin/java.lua | 2 +- home/.config/nvim/init.lua | 2 +- home/.config/nvim/lua/plugins/lspconfig.lua | 179 ++++++++++---------- 3 files changed, 89 insertions(+), 94 deletions(-) diff --git a/home/.config/nvim/ftplugin/java.lua b/home/.config/nvim/ftplugin/java.lua index 956c2cb..3da13fa 100644 --- a/home/.config/nvim/ftplugin/java.lua +++ b/home/.config/nvim/ftplugin/java.lua @@ -17,4 +17,4 @@ require('jdtls').start_or_attach({ } }) -require('plugins.lspconfig').lsp_map_keys('jdtls', nil) +require('plugins.lspconfig').map_keys('jdtls', nil) diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index fee008a..4d31e83 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,5 +1,5 @@ -require 'plugins/init' require 'autocmd' require 'keybinds' require 'settings' require 'common' +require 'plugins/init' diff --git a/home/.config/nvim/lua/plugins/lspconfig.lua b/home/.config/nvim/lua/plugins/lspconfig.lua index 5d64019..684bfd8 100644 --- a/home/.config/nvim/lua/plugins/lspconfig.lua +++ b/home/.config/nvim/lua/plugins/lspconfig.lua @@ -1,103 +1,98 @@ -local M = {} +M = {} -function lsp_map_keys(server, bufnr) - print('lsp_map_keys') - local function map_key(...) - -- Map to buffer if buffer number is supplied, - -- globally otherwise - if bufnr == nil then - vim.api.nvim_set_keymap(...) - else - vim.api.nvim_buf_set_keymap(bufnr, ...) - end - end +function M.map_keys(server, bufnr) + local function map_key(...) + -- Map to buffer if buffer number is supplied, + -- globally otherwise + if bufnr == nil then + vim.api.nvim_set_keymap(...) + else + vim.api.nvim_buf_set_keymap(bufnr, ...) + end + end - local keymapOpts = { noremap = true, silent = true } - map_key('n', 'gD', 'lua vim.lsp.buf.declaration()', keymapOpts) - map_key('n', 'gd', 'lua vim.lsp.buf.definition()', keymapOpts) - map_key('n', 'K', 'lua vim.lsp.buf.hover()', keymapOpts) - map_key('n', 'gi', 'lua vim.lsp.buf.implementation()', keymapOpts) - map_key('n', '', 'lua vim.lsp.buf.signature_help()', - keymapOpts) - map_key('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', - keymapOpts) - map_key('n', 'wr', - 'lua vim.lsp.buf.remove_workspace_folder()', keymapOpts) - map_key('n', 'wl', - 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', - keymapOpts) - map_key('n', 'D', 'lua vim.lsp.buf.type_definition()', - keymapOpts) - map_key('n', 'rn', 'lua vim.lsp.buf.rename()', keymapOpts) - map_key('n', 'ca', 'lua vim.lsp.buf.code_action()', - keymapOpts) - map_key('n', 'gr', 'lua vim.lsp.buf.references()', keymapOpts) - map_key('n', 'e', - 'lua vim.lsp.diagnostic.show_line_diagnostics()', - keymapOpts) - map_key('n', '[d', 'lua vim.diagnostic.goto_prev()', keymapOpts) - map_key('n', ']d', 'lua vim.diagnostic.goto_next()', keymapOpts) - map_key('n', 'q', 'lua vim.diagnostic.set_loclist()', - keymapOpts) - map_key('n', 'f', 'lua vim.lsp.buf.format()', keymapOpts) + local keymapOpts = {noremap = true, silent = true} + map_key('n', 'gD', 'lua vim.lsp.buf.declaration()', keymapOpts) + map_key('n', 'gd', 'lua vim.lsp.buf.definition()', keymapOpts) + map_key('n', 'K', 'lua vim.lsp.buf.hover()', keymapOpts) + map_key('n', 'gi', 'lua vim.lsp.buf.implementation()', keymapOpts) + map_key('n', '', 'lua vim.lsp.buf.signature_help()', + keymapOpts) + map_key('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', + keymapOpts) + map_key('n', 'wr', + 'lua vim.lsp.buf.remove_workspace_folder()', keymapOpts) + map_key('n', 'wl', + 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', + keymapOpts) + map_key('n', 'D', 'lua vim.lsp.buf.type_definition()', + keymapOpts) + map_key('n', 'rn', 'lua vim.lsp.buf.rename()', keymapOpts) + map_key('n', 'ca', 'lua vim.lsp.buf.code_action()', + keymapOpts) + map_key('n', 'gr', 'lua vim.lsp.buf.references()', keymapOpts) + map_key('n', 'e', + 'lua vim.lsp.diagnostic.show_line_diagnostics()', + keymapOpts) + map_key('n', '[d', 'lua vim.diagnostic.goto_prev()', keymapOpts) + map_key('n', ']d', 'lua vim.diagnostic.goto_next()', keymapOpts) + map_key('n', 'q', 'lua vim.diagnostic.set_loclist()', + keymapOpts) + map_key('n', 'f', 'lua vim.lsp.buf.format()', keymapOpts) end -M.on_attach = function(server, bufnr) - print('on_attach') - -- Setup lsp signature plugin - require('lsp_signature').setup {} - - -- Setup keybinds - lsp_map_keys(server, bufnr) -end - - function M.setup() - local lspconfig = require('lspconfig') + -- Pairs of server name and settings. + -- This is iterated through and every + -- server is setup with lspconfig + local servers = { + html = {}, + jsonls = {}, + marksman = {}, + yamlls = {}, + tsserver = {}, + sumneko_lua = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';') + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'} + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file('', true) + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = {enable = false} + } + } + } - local capabilities = vim.lsp.protocol.make_client_capabilities() + local function on_attach(server, bufnr) + -- Setup lsp signature plugin + require('lsp_signature').setup {} - -- Common settings for all servers - local lsp_defaults = { - on_attach = M.on_attach, -- Common on_attach - capabilities = capabilities -- Add additional capabilities supported by nvim-cmp - } + -- Setup keybinds + M.map_keys(server, bufnr) + end - -- Set default config for all servers - --lspconfig.util.default_config = vim.tbl_deep_extend('force', lspconfig.util.default_config, lsp_defaults) - - -- Register capabilities to cmp.nvim - --require('cmp_nvim_lsp').update_capabilities(capabilities) - - -- LSP servers setup - --lspconfig.tsserver.setup {} - --lspconfig.yamlls.setup {} - --lspconfig.jsonls.setup {} - --lspconfig.html.setup {} - --lspconfig.marksman.setup {} - - --lspconfig.sumneko_lua.setup { - -- settings = { - -- Lua = { - -- runtime = { - -- -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - -- version = 'LuaJIT', - -- -- Setup your lua path - -- path = vim.split(package.path, ';') - -- }, - -- diagnostics = { - -- -- Get the language server to recognize the `vim` global - -- globals = { 'vim' } - -- }, - -- workspace = { - -- -- Make the server aware of Neovim runtime files - -- library = vim.api.nvim_get_runtime_file('', true) - -- }, - -- -- Do not send telemetry data containing a randomized but unique identifier - -- telemetry = { enable = false } - -- } - -- } - --} + -- Setup every defined server + for server, settings in pairs(servers) do + require('lspconfig')[server].setup { + on_attach = on_attach, + settings = settings, + -- Updates capabilities to cmp.nvim and + -- informs the server about the client capabilities + capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp + .protocol + .make_client_capabilities()) + } + end end return M