1+ local actions = require (" actions" )
2+ local bufdelete = require (" bufdelete" )
3+ local gitsigns = require (" gitsigns" )
4+ local refactoring = require (" refactoring" )
5+ local telescope = require (" telescope.builtin" )
6+ local treesj = require (" treesj" )
7+ local which_key = require (" which-key" )
8+
19local map = vim .keymap .set
210
11+ -- The first parameter to map is the modes in which the mappings apply.
12+ --
13+ -- An empty string sets the mapping for:
14+ --
15+ -- * Normal (n)
16+ -- * Visual (x)
17+ -- * Select (s)
18+ -- * Operator (o)
19+ --
20+ -- Note that "v" means both visual (x) and select (s) modes.
21+ --
22+ -- See Neovim's help for map-modes
23+
24+ -- Most of my keys are mapped in normal, visual, and operator modes, but not
25+ -- select mode. I don't want to map printable characters in select mode.
26+ local nxo = { " n" , " x" , " o" }
27+
328-- Set up mappings available in all buffers.
429local function map_global_keys ()
5- local actions = require (" actions" )
6- local bufdelete = require (" bufdelete" )
7- local gitsigns = require (" gitsigns" )
8- local refactoring = require (" refactoring" )
9- local repeatable_move = require (" nvim-treesitter.textobjects.repeatable_move" )
10- local telescope = require (" telescope.builtin" )
11- local treesj = require (" treesj" )
12- local which_key = require (" which-key" )
13-
1430 -- Things I do often enough get a top-level mapping.
15- map (" " , " <leader><leader>" , telescope .find_files , { desc = " find files" })
16- map (" " , " <leader>*" , telescope .grep_string , { desc = " find word under cursor" })
17- map (" " , " <leader>/" , vim .cmd .nohlsearch , { desc = " clear search" })
18- map (" " , " <leader>d" , vim .diagnostic .open_float , { desc = " show diagnostics under cursor" })
19- map (" " , " <leader>e" , actions .toggle_neo_tree , { desc = " toggle neo-tree explorer" })
20- map (" " , " <leader>f" , actions .show_current_file_in_neo_tree , { desc = " show current file in neo-tree" })
21- map (" " , " <leader>Q" , actions .write_all_and_quit , { desc = " save all files and quit" })
22- map (" " , " <leader>R" , actions .restore_session , { desc = " restore previoius session" })
23- map (" " , " <leader>s" , actions .write_all , { desc = " save all files" })
24- map (" " , " <leader>S" , actions .save_session_and_quit , { desc = " Save session" })
25- map (" " , " <leader>W" , vim .cmd .close , { desc = " close window" })
26- map (" " , " <leader>X" , bufdelete .bufdelete , { desc = " close buffer" })
31+ map (nxo , " <leader><leader>" , telescope .find_files , { desc = " find files" })
32+ map (nxo , " <leader>*" , telescope .grep_string , { desc = " find word under cursor" })
33+ map (nxo , " <leader>/" , vim .cmd .nohlsearch , { desc = " clear search" })
34+ map (nxo , " <leader>d" , vim .diagnostic .open_float , { desc = " show diagnostics under cursor" })
35+ map (nxo , " <leader>e" , actions .toggle_neo_tree , { desc = " toggle neo-tree explorer" })
36+ map (nxo , " <leader>f" , actions .show_current_file_in_neo_tree , { desc = " show current file in neo-tree" })
37+ map (nxo , " <leader>Q" , actions .write_all_and_quit , { desc = " save all files and quit" })
38+ map (nxo , " <leader>R" , actions .restore_session , { desc = " restore previoius session" })
39+ map (nxo , " <leader>s" , actions .write_all , { desc = " save all files" })
40+ map (nxo , " <leader>S" , actions .save_session_and_quit , { desc = " Save session" })
41+ map (nxo , " <leader>W" , vim .cmd .close , { desc = " close window" })
42+ map (nxo , " <leader>X" , bufdelete .bufdelete , { desc = " close buffer" })
2743
2844 -- Make command keys do sensible things. There some stuff in kitty.conf to
2945 -- tell Kitty to pass these through to Neovim.
@@ -36,39 +52,29 @@ local function map_global_keys()
3652 map (" v" , " <D-x>" , ' "*d' , { desc = " cut to system clipboard" })
3753
3854 which_key .register ({ [" <leader>c" ] = { name = " code changes" } })
39- map (" " , " <leader>cj" , treesj .join , { desc = " join lines" })
40- map (" " , " <leader>cf" , refactoring .select_refactor , { desc = " refactor" })
41- map (" " , " <leader>cs" , treesj .split , { desc = " split lines" })
55+ map (nxo , " <leader>cj" , treesj .join , { desc = " join lines" })
56+ map (nxo , " <leader>cf" , refactoring .select_refactor , { desc = " refactor" })
57+ map (nxo , " <leader>cs" , treesj .split , { desc = " split lines" })
4258
4359 which_key .register ({ [" <leader>g" ] = { name = " git" } })
44- map (" " , " <leader>gb" , gitsigns .blame_line , { desc = " git blame" })
45- map (" " , " <leader>gc" , actions .choose_git_base , { desc = " change git base" })
46- map (" " , " <leader>gh" , actions .browse_on_github , { desc = " browse on github" })
47- map (" " , " <leader>gp" , gitsigns .preview_hunk_inline , { desc = " preview hunk" })
60+ map (nxo , " <leader>gb" , gitsigns .blame_line , { desc = " git blame" })
61+ map (nxo , " <leader>gc" , actions .choose_git_base , { desc = " change git base" })
62+ map (nxo , " <leader>gh" , actions .browse_on_github , { desc = " browse on github" })
63+ map (nxo , " <leader>gp" , gitsigns .preview_hunk_inline , { desc = " preview hunk" })
4864
4965 which_key .register ({ [" <leader>t" ] = { name = " telescope" } })
50- map (" " , " <leader>t." , telescope .resume , { desc = " repeat last find" })
51- map (" " , " <leader>t/" , telescope .live_grep , { desc = " live grep" })
52- map (" " , " <leader>tb" , telescope .buffers , { desc = " find buffers" })
53- map (" " , " <leader>td" , telescope .diagnostics , { desc = " find diagnostics" })
54- map (" " , " <leader>tg" , telescope .git_status , { desc = " find git status" })
55- map (" " , " <leader>th" , telescope .help_tags , { desc = " find help" })
56- map (" " , " <leader>tj" , telescope .jumplist , { desc = " find in jumplist" })
57- map (" " , " <leader>tt" , telescope .builtin , { desc = " find telescope builtins" })
66+ map (nxo , " <leader>t." , telescope .resume , { desc = " repeat last find" })
67+ map (nxo , " <leader>t/" , telescope .live_grep , { desc = " live grep" })
68+ map (nxo , " <leader>tb" , telescope .buffers , { desc = " find buffers" })
69+ map (nxo , " <leader>td" , telescope .diagnostics , { desc = " find diagnostics" })
70+ map (nxo , " <leader>tg" , telescope .git_status , { desc = " find git status" })
71+ map (nxo , " <leader>th" , telescope .help_tags , { desc = " find help" })
72+ map (nxo , " <leader>tj" , telescope .jumplist , { desc = " find in jumplist" })
73+ map (nxo , " <leader>tt" , telescope .builtin , { desc = " find telescope builtins" })
5874
5975 -- Move around in the buffer
60- map ({ " n" , " x" , " o" }, " [g" , gitsigns .prev_hunk , { desc = " previous git hunk in buffer" })
61- map ({ " n" , " x" , " o" }, " ]g" , gitsigns .next_hunk , { desc = " next git hunk in buffer" })
62-
63- -- Make , and ; repeat the last move.
64- map ({ " n" , " x" , " o" }, " ;" , repeatable_move .repeat_last_move_next )
65- map ({ " n" , " x" , " o" }, " ," , repeatable_move .repeat_last_move_previous )
66-
67- -- Make repeating the builtins work properly too.
68- map ({ " n" , " x" , " o" }, " f" , repeatable_move .builtin_f )
69- map ({ " n" , " x" , " o" }, " F" , repeatable_move .builtin_F )
70- map ({ " n" , " x" , " o" }, " t" , repeatable_move .builtin_t )
71- map ({ " n" , " x" , " o" }, " T" , repeatable_move .builtin_T )
76+ map (nxo , " [g" , gitsigns .prev_hunk , { desc = " previous git hunk in buffer" })
77+ map (nxo , " ]g" , gitsigns .next_hunk , { desc = " next git hunk in buffer" })
7278
7379 -- Navigate between windows
7480 map (" " , " <c-h>" , " <c-w>h" )
@@ -77,23 +83,21 @@ local function map_global_keys()
7783 map (" " , " <c-l>" , " <c-w>l" )
7884
7985 -- Reselect the visual area when changing indenting in visual mode
80- map (" v " , " <" , " <gv" )
81- map (" v " , " >" , " >gv" )
86+ map (" x " , " <" , " <gv" )
87+ map (" x " , " >" , " >gv" )
8288end
8389
8490-- Set up mappings for buffers with a language server attached.
8591local function map_lsp_keys (args )
8692 local buffer = args .buf
8793
88- local telescope = require (" telescope.builtin" )
89-
90- map ({ " n" , " x" , " o" }, " gd" , telescope .lsp_definitions , { buffer = buffer , desc = " Go to defintion" })
91- map ({ " n" , " x" , " o" }, " gr" , telescope .lsp_references , { buffer = buffer , desc = " Go to references" })
94+ map (nxo , " gd" , telescope .lsp_definitions , { buffer = buffer , desc = " Go to defintion" })
95+ map (nxo , " gr" , telescope .lsp_references , { buffer = buffer , desc = " Go to references" })
9296
93- map (" " , " <leader>ca" , vim .lsp .buf .code_action , { buffer = buffer , desc = " code actions" })
94- map (" " , " <leader>cr" , vim .lsp .buf .rename , { buffer = buffer , desc = " rename symbol under cursor" })
97+ map (nxo , " <leader>ca" , vim .lsp .buf .code_action , { buffer = buffer , desc = " code actions" })
98+ map (nxo , " <leader>cr" , vim .lsp .buf .rename , { buffer = buffer , desc = " rename symbol under cursor" })
9599
96- map (" " , " <leader>ts" , telescope .lsp_document_symbols , { buffer = buffer , desc = " find document symbols" })
100+ map (nxo , " <leader>ts" , telescope .lsp_document_symbols , { buffer = buffer , desc = " find document symbols" })
97101end
98102
99103-- This sets things up so we tell Kitty when Neovim is open, so it can pass
0 commit comments