local function on_attach (client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') local opts = {noremap=true, silent=true} buf_set_keymap('n', '[d', 'lua vim.lsp.diagnostic.goto_prev()', opts) buf_set_keymap('n', ']d', 'lua vim.lsp.diagnostic.goto_next()', opts) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', opts) buf_set_keymap('n', 'ca', 'lua vim.lsp.buf.code_action()', opts) buf_set_keymap('n', 'f', 'lua vim.lsp.buf.formatting()', opts) buf_set_keymap('n', 't', 'lua vim.lsp.buf.type_definition()', opts) buf_set_keymap('n', 'd', 'lua vim.lsp.diagnostic.show_line_diagnostics {show_header=false}', opts) end local default_config = { on_attach = on_attach } local servers = { hls = {}, yamlls = {} } local nvim_lsp = require('lspconfig') for server, config in pairs(servers) do nvim_lsp[server].setup(vim.tbl_deep_extend('force', default_config, config)) end