diff --git a/home/.config/nvim/init.lua b/home/.config/nvim/init.lua index 4d31e83..d72504f 100644 --- a/home/.config/nvim/init.lua +++ b/home/.config/nvim/init.lua @@ -1,5 +1,4 @@ require 'autocmd' require 'keybinds' require 'settings' -require 'common' require 'plugins/init' diff --git a/home/.config/nvim/lua/common.lua b/home/.config/nvim/lua/common.lua deleted file mode 100644 index 6a974d5..0000000 --- a/home/.config/nvim/lua/common.lua +++ /dev/null @@ -1,5 +0,0 @@ -function MapKey(mode, keybind, command, opts) - local options = {noremap = true} - if opts then options = vim.tbl_extend('force', options, opts) end - vim.api.nvim_set_keymap(mode, keybind, command, options) -end diff --git a/home/.config/nvim/lua/keybinds.lua b/home/.config/nvim/lua/keybinds.lua index c410212..4433233 100644 --- a/home/.config/nvim/lua/keybinds.lua +++ b/home/.config/nvim/lua/keybinds.lua @@ -1,26 +1,26 @@ -require 'common' +local map = vim.keymap.set -- Open/close tree browser -MapKey('n', '', 'NvimTreeToggle') +map('n', '', 'NvimTreeToggle') -- Telescope -MapKey('n', '', 'Telescope find_files find_command=fd,-Ht,f') -MapKey('n', '', 'Telescope live_grep') +map('n', '', 'Telescope find_files find_command=fd,-Ht,f') +map('n', '', 'Telescope live_grep') -- Completion -- Navigate completions with tab and shift tab -MapKey('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) -MapKey('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) +map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) +map('i', '', 'pumvisible() ? "\\" : "\\"', {expr = true}) -- Navigate between buffers -MapKey('n', '', ':bn', {silent = true}) -MapKey('n', '', ':bp', {silent = true}) +map('n', '', ':bn', {silent = true}) +map('n', '', ':bp', {silent = true}) -- Navigate between splits -MapKey('n', '', '') -MapKey('n', '', '') -MapKey('n', '', '') -MapKey('n', '', '') +map('n', '', '') +map('n', '', '') +map('n', '', '') +map('n', '', '') -- Run Neoformat -MapKey('n', '', 'Neoformat') +map('n', '', 'Neoformat') diff --git a/home/.config/nvim/lua/pager.lua b/home/.config/nvim/lua/pager.lua index 1a8c91f..5641745 100644 --- a/home/.config/nvim/lua/pager.lua +++ b/home/.config/nvim/lua/pager.lua @@ -1,5 +1,2 @@ -- Settings for pager mode -require 'common' - -MapKey('n', 'q', 'q') --- vim.cmd('set nomodifiable') +vim.keymap.set('n', 'q', vim.cmd.q) diff --git a/home/.config/nvim/lua/plugins/lspconfig.lua b/home/.config/nvim/lua/plugins/lspconfig.lua index 22732f2..afda414 100644 --- a/home/.config/nvim/lua/plugins/lspconfig.lua +++ b/home/.config/nvim/lua/plugins/lspconfig.lua @@ -12,9 +12,7 @@ Servers = { 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, ';') + version = 'LuaJIT' }, diagnostics = { -- Get the language server to recognize the `vim` global @@ -32,67 +30,65 @@ Servers = { M = {} -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 +function M.map_keys() + -- Register keybindings via which-key + -- to get documentation in which-key + local wk = require('which-key') + wk.register({ + g = { + name = "Go to", + d = {vim.lsp.buf.definition, "Definition"}, + D = {vim.lsp.buf.declaration, "Declaration"}, + i = {vim.lsp.buf.implementation, "Implementation"}, + r = {vim.lsp.buf.references, "References"} + }, + [''] = { + name = "Leader", + w = { + name = "Workspace", + a = {vim.lsp.buf.add_workspace_folder, "Add folder"}, + r = {vim.lsp.buf.remove_workspace_folder, "Remove folder"}, + l = { + function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, "List folders" + } + }, + D = {vim.lsp.buf.type_definition, "Type definition"}, + rn = {vim.lsp.buf.rename, "Rename symbol"}, + ca = {vim.lsp.buf.code_action, "Code action"}, + e = {vim.diagnostic.open_float, "Open diagnostics"}, + f = {vim.lsp.buf.format, "Format"} + }, + K = {vim.lsp.buf.hover, "Hover"}, + ['['] = {d = {vim.diagnostic.goto_prev, "Previous diagnostic"}}, + [']'] = {d = {vim.diagnostic.goto_next, "Next diagnostic"}} - 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 function M.setup() - local function on_attach(server, bufnr) + local function on_attach() -- Setup lsp signature plugin require('lsp_signature').setup {} -- Setup keybinds - M.map_keys(server, bufnr) + M.map_keys() end + -- Update capabilities + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities) + -- 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()) + -- Inform lsp server about client + -- capabilities + capabilities = capabilities } end end