diff options
Diffstat (limited to 'modules/programs/neovim/init.lua')
| -rw-r--r-- | modules/programs/neovim/init.lua | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/modules/programs/neovim/init.lua b/modules/programs/neovim/init.lua index bd7fb7b..eb78617 100644 --- a/modules/programs/neovim/init.lua +++ b/modules/programs/neovim/init.lua @@ -64,6 +64,38 @@ if status_ok then configs.setup({ highlight = { enable = true }, indent = { enable = true }, + textobjects = { + select = { + enable = true, + lookahead = true, + keymaps = { + ["af"] = { query = "@function.outer", desc = "Select outer part of a function" }, + ["if"] = { query = "@function.inner", desc = "Select inner part of a function" }, + ["ac"] = { query = "@class.outer", desc = "Select outer part of a class" }, + ["ic"] = { query = "@class.inner", desc = "Select inner part of a class" }, + }, + }, + move = { + enable = true, + set_jumps = true, + goto_next_start = { + ["äm"] = { query = "@function.outer", desc = "Next function start" }, + ["äc"] = { query = "@class.outer", desc = "Next class start" }, + }, + goto_next_end = { + ["äM"] = { query = "@function.outer", desc = "Next function end" }, + ["äC"] = { query = "@class.outer", desc = "Next class end" }, + }, + goto_previous_start = { + ["öm"] = { query = "@function.outer", desc = "Previous function start" }, + ["öc"] = { query = "@class.outer", desc = "Previous class start" }, + }, + goto_previous_end = { + ["öM"] = { query = "@function.outer", desc = "Previous function end" }, + ["öC"] = { query = "@class.outer", desc = "Previous class end" }, + }, + }, + }, }) end @@ -74,12 +106,22 @@ map('n', '<leader>fg', builtin.live_grep, { desc = 'Telescope live grep' }) map('n', '<leader>fb', builtin.buffers, { desc = 'Telescope buffers' }) map('n', '<leader>fh', builtin.help_tags, { desc = 'Telescope help tags' }) +-- LSP Navigation Keymaps +map('n', 'gd', vim.lsp.buf.definition, { desc = 'Go to definition' }) +map('n', 'gD', vim.lsp.buf.declaration, { desc = 'Go to declaration' }) +map('n', 'gr', vim.lsp.buf.references, { desc = 'Go to references' }) +map('n', 'gi', vim.lsp.buf.implementation, { desc = 'Go to implementation' }) +map('n', 'K', vim.lsp.buf.hover, { desc = 'Hover documentation' }) +map('n', '<leader>rn', vim.lsp.buf.rename, { desc = 'Rename symbol' }) + local cmp = require("cmp") +local ls = require("luasnip") + cmp.setup({ snippet = { expand = function(args) - require('luasnip').lsp_expand(args.body) + ls.lsp_expand(args.body) end, }, mapping = cmp.mapping.preset.insert({ @@ -88,16 +130,24 @@ cmp.setup({ ['<C-Space>'] = cmp.mapping.complete(), ['<C-e>'] = cmp.mapping.abort(), ['<CR>'] = cmp.mapping.confirm({ select = true }), + + -- Your new Super-Tab for jumping forward ['<Tab>'] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_next_item() + elseif ls.expand_or_jumpable() then + ls.expand_or_jump() else fallback() end end, { 'i', 's' }), + + -- Shift-Tab for jumping backward through parameters ['<S-Tab>'] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() + elseif ls.jumpable(-1) then + ls.jump(-1) else fallback() end |
