Mercurial > dotfiles
comparison .chezmoitemplates/init.lua @ 520:f845e2eba7e3
Use new keymap lua function to set keymaps
author | zegervdv <zegervdv@me.com> |
---|---|
date | Sun, 09 Jan 2022 14:27:10 +0100 |
parents | d919c1590230 |
children | 8908d3cde535 |
comparison
equal
deleted
inserted
replaced
519:d919c1590230 | 520:f845e2eba7e3 |
---|---|
212 { complete = 'file', nargs = '*' } | 212 { complete = 'file', nargs = '*' } |
213 ) | 213 ) |
214 end, | 214 end, |
215 } | 215 } |
216 | 216 |
217 -- Keymaps TODO: to be removed when #13823 is merged | |
218 use { | |
219 'tjdevries/astronauta.nvim', | |
220 config = function() | |
221 require 'astronauta.keymap' | |
222 end, | |
223 } | |
224 | |
225 -- Opening files | 217 -- Opening files |
226 use { 'wsdjeg/vim-fetch' } | 218 use { 'wsdjeg/vim-fetch' } |
227 | 219 |
228 -- session management | 220 -- session management |
229 use { | 221 use { |
264 use { | 256 use { |
265 'numtostr/navigator.nvim', | 257 'numtostr/navigator.nvim', |
266 config = function() | 258 config = function() |
267 require('Navigator').setup { auto_save = 'current', disable_on_zoom = true } | 259 require('Navigator').setup { auto_save = 'current', disable_on_zoom = true } |
268 | 260 |
269 local nnoremap = vim.keymap.nnoremap | 261 local nmap = function(lhs, rhs, opts) |
270 nnoremap { '<c-h>', require('Navigator').left, silent = true } | 262 return vim.keymap.set('n', lhs, rhs, opts) |
271 nnoremap { '<c-j>', require('Navigator').down, silent = true } | 263 end |
272 nnoremap { '<c-k>', require('Navigator').up, silent = true } | 264 nmap('<c-h>', require('Navigator').left, { silent = true }) |
273 nnoremap { '<c-l>', require('Navigator').right, silent = true } | 265 nmap('<c-j>', require('Navigator').down, { silent = true }) |
274 end, | 266 nmap('<c-k>', require('Navigator').up, { silent = true }) |
275 requires = 'tjdevries/astronauta.nvim', | 267 nmap('<c-l>', require('Navigator').right, { silent = true }) |
276 after = 'astronauta.nvim', | 268 end, |
277 } | 269 } |
278 | 270 |
279 -- Completion/snippets/LSP | 271 -- Completion/snippets/LSP |
280 use { 'neovim/nvim-lspconfig' } | 272 use { 'neovim/nvim-lspconfig' } |
281 use { | 273 use { |
707 opt.foldminlines = 1 | 699 opt.foldminlines = 1 |
708 opt.foldtext = | 700 opt.foldtext = |
709 [[substitute(getline(v:foldstart),'\\t',repeat('\ ',&tabstop),'g').'...'.trim(getline(v:foldend)) . ' (' . (v:foldend - v:foldstart + 1) . ' lines)']] | 701 [[substitute(getline(v:foldstart),'\\t',repeat('\ ',&tabstop),'g').'...'.trim(getline(v:foldend)) . ' (' . (v:foldend - v:foldstart + 1) . ' lines)']] |
710 opt.foldenable = false | 702 opt.foldenable = false |
711 | 703 |
704 -- Clean up terminal codes from strings | |
705 local t = function(str) | |
706 return vim.api.nvim_replace_termcodes(str, true, true, true) | |
707 end | |
708 | |
709 -- General keymaps | |
710 local map = vim.keymap.set | |
711 | |
712 -- Set leader to space | |
713 map({ 'n', 'v', 'i', 'x' }, '<space>', '<leader>', { remap = true }) | |
714 | |
715 -- Move while in insert mode | |
716 map('i', '<C-f>', '<right>') | |
717 | |
718 -- Keep search matches centered | |
719 map('n', 'n', 'nzzzv') | |
720 map('n', 'N', 'Nzzzv') | |
721 | |
722 -- Very magic search patterns | |
723 map({ 'n', 'v' }, '/', '/\\v') | |
724 | |
725 -- Move through long lines as breaks | |
726 map('n', 'j', '(v:count ? "j" : "gj")', { expr = true }) | |
727 map('n', 'k', '(v:count ? "k" : "gk")', { expr = true }) | |
728 | |
729 -- Command line search for commands | |
730 map('c', '<c-n>', '<down>') | |
731 map('c', '<c-p>', '<up>') | |
732 | |
733 -- Clear highlighs | |
734 map('n', '<leader>l', '<cmd>noh<CR>', { silent = true }) | |
735 | |
736 -- Reselect last selection | |
737 map('n', 'gV', '`[v`]') | |
738 | |
739 -- Use backspace as normal in visual mode | |
740 map('v', '<BS>', 'x', { remap = true }) | |
741 | |
742 -- Keep selection when indenting | |
743 local keep_visual_selection = function(cmd) | |
744 return function() | |
745 vim.opt.smartindent = false | |
746 if vim.fn.mode() == 'V' then | |
747 return cmd .. t ':set smartindent<CR>gv' | |
748 else | |
749 return cmd .. t ':set smartindent<CR>' | |
750 end | |
751 end | |
752 end | |
753 map('v', '>', keep_visual_selection '>', { expr = true, silent = true, desc = 'Indent right while keeping selection' }) | |
754 map('v', '<', keep_visual_selection '<', { expr = true, silent = true, desc = 'Indent left while keeping selection' }) | |
755 | |
756 -- Swap backticks and quotes | |
757 map('n', '`', "'") | |
758 map('n', "'", '`') | |
759 | |
712 local au = require 'au' | 760 local au = require 'au' |
713 | 761 |
714 -- Highlight yanked text | 762 -- Highlight yanked text |
715 au.TextYankPost = function() | 763 au.TextYankPost = function() |
716 vim.highlight.on_yank { timeout = 120 } | 764 vim.highlight.on_yank { timeout = 120 } |
754 -- LSP config | 802 -- LSP config |
755 local lsp = require 'lspconfig' | 803 local lsp = require 'lspconfig' |
756 local null_ls = require 'null-ls' | 804 local null_ls = require 'null-ls' |
757 | 805 |
758 local on_attach = function(client) | 806 local on_attach = function(client) |
759 local nnoremap = vim.keymap.nnoremap | 807 local map = vim.keymap.set |
760 local inoremap = vim.keymap.inoremap | 808 local nmap = function(lhs, rhs, opts) |
809 return vim.keymap.set('n', lhs, rhs, opts) | |
810 end | |
761 | 811 |
762 if client.resolved_capabilities.goto_definition == true then | 812 if client.resolved_capabilities.goto_definition == true then |
763 vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc' | 813 vim.bo.tagfunc = 'v:lua.vim.lsp.tagfunc' |
764 nnoremap { 'gp', require('goto-preview').goto_preview_definition, silent = true, buffer = 0 } | 814 nmap('gp', require('goto-preview').goto_preview_definition, { silent = true, buffer = 0 }) |
765 nnoremap { 'gP', require('goto-preview').close_all_win, silent = true, buffer = 0 } | 815 nmap('gP', require('goto-preview').close_all_win, { silent = true, buffer = 0 }) |
766 end | 816 end |
767 | 817 |
768 nnoremap { 'gd', vim.lsp.buf.declaration, silent = true, buffer = 0 } | 818 nmap('gd', vim.lsp.buf.declaration, { silent = true, buffer = 0 }) |
769 nnoremap { 'K', vim.lsp.buf.hover, silent = true, buffer = 0 } | 819 nmap('K', vim.lsp.buf.hover, { silent = true, buffer = 0 }) |
770 nnoremap { 'gD', vim.lsp.buf.implementation, silent = true, buffer = 0 } | 820 nmap('gD', vim.lsp.buf.implementation, { silent = true, buffer = 0 }) |
771 nnoremap { '1gD', vim.lsp.buf.type_definition, silent = true, buffer = 0 } | 821 nmap('1gD', vim.lsp.buf.type_definition, { silent = true, buffer = 0 }) |
772 nnoremap { 'gr', vim.lsp.buf.references, silent = true, buffer = 0 } | 822 nmap('gr', vim.lsp.buf.references, { silent = true, buffer = 0 }) |
773 nnoremap { 'g0', vim.lsp.buf.document_symbol, silent = true, buffer = 0 } | 823 nmap('g0', vim.lsp.buf.document_symbol, { silent = true, buffer = 0 }) |
774 | 824 |
775 if client.resolved_capabilities.document_formatting == true then | 825 if client.resolved_capabilities.document_formatting == true then |
776 nnoremap { | 826 nmap('<c-p>', function() |
777 '<c-p>', | 827 vim.lsp.buf.formatting_sync({}, 5000) |
778 function() | 828 end, { |
779 vim.lsp.buf.formatting_sync({}, 5000) | |
780 end, | |
781 silent = true, | 829 silent = true, |
782 buffer = 0, | 830 buffer = 0, |
783 } | 831 }) |
784 end | 832 end |
785 | 833 |
786 if client.resolved_capabilities.document_range_formatting == true then | 834 if client.resolved_capabilities.document_range_formatting == true then |
787 vim.bo.formatexpr = 'v:lua.vim.lsp.formatexpr()' | 835 vim.bo.formatexpr = 'v:lua.vim.lsp.formatexpr()' |
788 end | 836 end |
789 | 837 |
790 inoremap { '<c-l>', vim.lsp.buf.signature_help, silent = true, buffer = 0 } | 838 map('i', '<c-l>', vim.lsp.buf.signature_help, { silent = true, buffer = 0 }) |
791 | 839 |
792 vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) | 840 vim.lsp.handlers['textDocument/hover'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) |
793 vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) | 841 vim.lsp.handlers['textDocument/signatureHelp'] = vim.lsp.with(vim.lsp.handlers.hover, { border = 'single' }) |
794 end | 842 end |
795 | 843 |