LspAttach autocmd instead of on_attach fn

main
Amanda Graven 2023-11-12 09:54:58 +01:00
parent 5a8f49e2ca
commit 542b72024f
Signed by: amanda
GPG Key ID: F747582C5608F4CB
1 changed files with 63 additions and 54 deletions

117
init.lua
View File

@ -351,6 +351,12 @@ require'packer'.startup(function(use)
use 'vim-airline/vim-airline' use 'vim-airline/vim-airline'
use 'vim-airline/vim-airline-themes' use 'vim-airline/vim-airline-themes'
use 'romgrk/barbar.nvim' use 'romgrk/barbar.nvim'
use {'luckasRanarison/clear-action.nvim', config = function()
require'clear-action'.setup {
signs = { enable = false },
popup = { enable = true },
}
end}
use {'MattesGroeger/vim-bookmarks', config = function() use {'MattesGroeger/vim-bookmarks', config = function()
vim.g.bookmark_no_default_key_mappings = 1 vim.g.bookmark_no_default_key_mappings = 1
vim.g.bookmark_save_per_working_dir = 1 vim.g.bookmark_save_per_working_dir = 1
@ -923,66 +929,73 @@ capabilities.textDocument.foldingRange = {
} }
---- lsp: language servers ---- ---- lsp: language servers ----
--- Performs keymaps and other setup specific to buffers with LSP enabled au('LspAttach', {
--- @param bufnr number callback = function (event)
--- @diagnostic disable-next-line: unused-local local bufnr = event.buf
local function on_attach(client, bufnr) local client = vim.lsp.get_client_by_id(event.data.client_id)
require'which-key'.register({ local function code_action()
['<Leader>l'] = { local ok, clear_action = pcall(require, 'clear-action')
D = {vim.lsp.buf.declaration, 'Declaration'}, if ok then
d = {'<Cmd>Telescope lsp_definitions<CR>', 'Definition'}, clear_action.code_action()
i = {'<Cmd>Telescope lsp_implementations<CR>', 'Implementation'}, else
a = {vim.lsp.buf.code_action, 'Code action'}, vim.lsp.buf.code_action()
r = {vim.lsp.buf.rename, 'Rename'}, end
h = {function() vim.lsp.inlay_hint(0, nil) end, 'Inlay hints'}, end
l = {vim.lsp.codelens.refresh, 'Show codelenses'}, require'which-key'.register({
L = {vim.lsp.codelens.run, 'Run codelens'}, ['<Leader>l'] = {
t = {'<Cmd>Telescope lsp_type_definitions<CR>', 'Type definition'}, D = {vim.lsp.buf.declaration, 'Declaration'},
u = {'<Cmd>Telescope lsp_references<CR>', 'Usages/references'} d = {'<Cmd>Telescope lsp_definitions<CR>', 'Definition'},
}, i = {'<Cmd>Telescope lsp_implementations<CR>', 'Implementation'},
g = { a = {code_action, 'Code action'},
d = {vim.lsp.buf.definition, 'Goto definition'}, r = {vim.lsp.buf.rename, 'Rename'},
D = {vim.lsp.buf.implementation, 'Goto implementation'}, h = {function() vim.lsp.inlay_hint(0, nil) end, 'Inlay hints'},
a = {vim.lsp.buf.code_action, 'Code action'}, l = {vim.lsp.codelens.refresh, 'Show codelenses'},
R = {vim.lsp.buf.rename, 'Rename'}, L = {vim.lsp.codelens.run, 'Run codelens'},
y = {vim.lsp.buf.type_definition, 'Type definition'}, t = {'<Cmd>Telescope lsp_type_definitions<CR>', 'Type definition'},
}, u = {'<Cmd>Telescope lsp_references<CR>', 'Usages/references'}
[']'] = { },
g = {vim.diagnostic.goto_next, 'Next diagnostic'}, g = {
e = {function() vim.diagnostic.goto_next { severity = vim.diagnostic.severity.ERROR } end, 'Next error'}, d = {vim.lsp.buf.definition, 'Goto definition'},
w = {function() vim.diagnostic.goto_next { severity = vim.diagnostic.severity.WARN } end, 'Next warning'}, D = {vim.lsp.buf.implementation, 'Goto implementation'},
q = {vim.diagnostic.setqflist, 'Quickfix diagnostics'}, a = {code_action, 'Code action'},
}, R = {vim.lsp.buf.rename, 'Rename'},
['['] = { y = {vim.lsp.buf.type_definition, 'Type definition'},
g = {vim.diagnostic.goto_prev, 'Previous diagnostic'}, },
e = {function() vim.diagnostic.goto_prev { severity = vim.diagnostic.severity.ERROR } end, 'Previous error'}, [']'] = {
w = {function() vim.diagnostic.goto_prev { severity = vim.diagnostic.severity.WARN } end, 'Previous warning'}, g = {vim.diagnostic.goto_next, 'Next diagnostic'},
}, e = {function() vim.diagnostic.goto_next { severity = vim.diagnostic.severity.ERROR } end, 'Next error'},
['<C-h>'] = {vim.lsp.buf.document_highlight, 'Highlight object under cursor'}, w = {function() vim.diagnostic.goto_next { severity = vim.diagnostic.severity.WARN } end, 'Next warning'},
}, {buffer = bufnr}) q = {vim.diagnostic.setqflist, 'Quickfix diagnostics'},
-- Hover },
require'which-key'.register({ ['['] = {
['K'] = {vim.lsp.buf.hover, 'Documentation'}, g = {vim.diagnostic.goto_prev, 'Previous diagnostic'},
['<C-k>'] = {vim.lsp.buf.signature_help, 'Function signature'}, e = {function() vim.diagnostic.goto_prev { severity = vim.diagnostic.severity.ERROR } end, 'Previous error'},
}, {buffer = bufnr}) w = {function() vim.diagnostic.goto_prev { severity = vim.diagnostic.severity.WARN } end, 'Previous warning'},
require'which-key'.register({ },
['<M-k>'] = {vim.lsp.buf.signature_help, 'Function signature'} ['<C-h>'] = {vim.lsp.buf.document_highlight, 'Highlight object under cursor'},
}, {buffer = bufnr, mode = 'i'}) }, {buffer = bufnr})
-- Hover
require'which-key'.register({
['K'] = {vim.lsp.buf.hover, 'Documentation'},
['<C-k>'] = {vim.lsp.buf.signature_help, 'Function signature'},
}, {buffer = bufnr})
require'which-key'.register({
['<M-k>'] = {vim.lsp.buf.signature_help, 'Function signature'}
}, {buffer = bufnr, mode = 'i'})
vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc' vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc'
require'nvim-navic'.attach(client, bufnr) require'nvim-navic'.attach(client, bufnr)
end end
})
-- Enable language servers -- Enable language servers
local default = { local default = {
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach,
} }
require'lspconfig'.lua_ls.setup { require'lspconfig'.lua_ls.setup {
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach,
settings = { settings = {
Lua = { Lua = {
runtime = { runtime = {
@ -1054,7 +1067,6 @@ au('FileType', {
capabilities = capabilities, capabilities = capabilities,
on_attach = function (client, bufnr) on_attach = function (client, bufnr)
on_attach(client, bufnr)
jdtls.setup_dap() jdtls.setup_dap()
end, end,
} }
@ -1071,7 +1083,6 @@ au('FileType', {
require'lspconfig'.sqls.setup { require'lspconfig'.sqls.setup {
capabilities = capabilities, capabilities = capabilities,
on_attach = function (client, bufnr) on_attach = function (client, bufnr)
on_attach(client, bufnr)
local ok, sqls = pcall(require, 'sqls') local ok, sqls = pcall(require, 'sqls')
if not ok then return end if not ok then return end
sqls.on_attach(client, bufnr) sqls.on_attach(client, bufnr)
@ -1123,7 +1134,6 @@ require'rust-tools'.setup {
-- Enable standalone file (i.e. no cargo) support -- Enable standalone file (i.e. no cargo) support
standalone = true, standalone = true,
capabilities = capabilities, capabilities = capabilities,
on_attach = on_attach,
settings = { settings = {
['rust-analyzer'] = { ['rust-analyzer'] = {
cargo = { cargo = {
@ -1267,7 +1277,6 @@ vim.keymap.set('n', '<Leader>t', '<Cmd>NvimTreeFindFile<CR>', {desc = 'Nvim Tree
---- treesitter ---- ---- treesitter ----
---@diagnostic disable-next-line: missing-fields
require'nvim-treesitter.configs'.setup { require'nvim-treesitter.configs'.setup {
-- Configure the nvim-ts-autotag plugin -- Configure the nvim-ts-autotag plugin
autotag = { autotag = {