dotfiles/nvim/language_server.vim

78 lines
3.4 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" nvim-lspconfig
sign define LspDiagnosticsSignError text=texthl=LspDiagnosticsSignError linehl= numhl=
sign define LspDiagnosticsSignWarning text=texthl=LspDiagnosticsSignWarning linehl= numhl=
sign define LspDiagnosticsSignInformation text= texthl=LspDiagnosticsSignInformation linehl= numhl=
sign define LspDiagnosticsSignHint text=texthl=LspDiagnosticsSignHint linehl= numhl=
set completeopt=menuone,noinsert,noselect
lua << EOF
lsp_mappings = function()
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
-- Mappings.
local opts = { noremap=true, silent=true }
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<c-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', 'g0', '<cmd>lua vim.lsp.buf.document_symbol()<CR>', opts)
buf_set_keymap('n', 'gW', '<cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
end
EOF
lua << EOF
local nvim_lsp = require('lspconfig')
-- lspkind-nvim
cmp_format = require('lspkind').cmp_format({with_text=false, preset='codicons',
menu=({nvim_lsp = "[LSP]", buffer = "[Buffer]", path = "[Path]"})})
local on_attach = function(client, bufnr)
vim.api.nvim_command('autocmd CursorHoldI <buffer> lua vim.lsp.diagnostic.show_line_diagnostics({show_header = false})')
vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, {
update_in_insert = true,
virtual_text = false
}
)
require('cmp').setup({
formatting = {format = cmp_format},
sources = {{name = 'nvim_lsp'}, {name = 'buffer'}, {name = 'path'}},
})
lsp_mappings()
end
local settings = require('lsp_settings')
local servers = {'pylsp', 'clangd'}
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
for _, lsp in ipairs(servers) do
nvim_lsp[lsp].setup{on_attach=on_attach, settings={[lsp]=settings[lsp]},
capabilities=capabilities}
end
EOF
" cmp
" Setup buffer configuration (nvim-lua source only enables in Lua filetype).
autocmd FileType gitcommit lua require'cmp'.setup.buffer {
\ sources = {
\ { name = 'spell' },
\ { name = 'buffer' },
\ { name = 'path' },
\ },
\ }