rc/config/nvim/lua/keys.lua
nemirwen b275d74db5 Transition setup to modern neovim
Abandon common config for both vim and neovim, as the neovim ecosystem
is just diverging more and more. For now the goals is to have an
IDE-like neovim config, with a fallback minimal vimrc.

As of this config, only the first part has been started
2024-04-29 10:41:02 +02:00

59 lines
2.5 KiB
Lua

-- Global mappings.
-- Telescope --
local tsbuiltin = require('telescope.builtin')
-- Which key --
local wk = require('which-key')
wk.register({
["space"] = {
e = {vim.diagnostic.open_float, "Open diagnostic float"},
q = {vim.diagnostic.setloclist, "Add diagnostics to location list"},
},
["<leader>"] = {
e = {
name = "Telescope", -- optional group name
f = {tsbuiltin.find_files, "Find file"},
F = {tsbuiltin.git_files, "Find file in git repo"},
g = {tsbuiltin.live_grep, "Live grep"},
o = {tsbuiltin.oldfiles, "Find previously open files"},
q = {tsbuiltin.quickfix, "List items in quickfix"},
r = {tsbuiltin.lsp_references, "List LSP references under the cursor"},
},
},
})
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
-- Use LspAttach autocommand to only map the following keys
-- after the language server attaches to the current buffer
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
-- Enable completion triggered by <c-x><c-o>
vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'gk', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<leader>k', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<space>f', function()
vim.lsp.buf.format { async = true }
end, opts)
end,
})