1 |
|
2 local function map(mode, lhs, rhs, opts) |
1 local function map(mode, lhs, rhs, opts) |
3 opts = opts or {} |
2 opts = opts or {} |
4 opts.silent = opts.silent ~= false |
3 opts.silent = opts.silent ~= false |
5 vim.keymap.set(mode, lhs, rhs, opts) |
4 vim.keymap.set(mode, lhs, rhs, opts) |
6 end |
5 end |
7 |
6 |
8 map("n", "<F2>", ":20Lexplore<CR>") |
7 map("n", "<F2>", ":20Lexplore<CR>") |
9 map("n", "<F3>", "n") |
8 map("n", "<F3>", "n") |
10 map("n", "<S-F3>", "N") |
9 map("n", "<S-F3>", "N") |
11 map("", "<F4>", ":let v:hlsearch = !v:hlsearch<CR>") |
10 map("", "<F4>", ":let v:hlsearch = !v:hlsearch<CR>") |
12 map("n", "<F5>", ":UndotreeToggle<CR>") |
11 map("n", "<F5>", ":UndotreeToggle<CR>") |
13 map("n", "<F8>", ":TagbarToggle<CR>") |
12 map("n", "<F8>", ":TagbarToggle<CR>") |
14 |
13 |
15 -- Allow :noh even in insert mode |
14 -- Allow :noh even in insert mode |
16 map("i", "<F4>", "<C-O><F4>") |
15 map("i", "<F4>", "<C-O><F4>") |
34 map("n", "<C-Left>", "<cmd>vertical resize -2<cr>") |
33 map("n", "<C-Left>", "<cmd>vertical resize -2<cr>") |
35 map("n", "<C-Right>", "<cmd>vertical resize +2<cr>") |
34 map("n", "<C-Right>", "<cmd>vertical resize +2<cr>") |
36 |
35 |
37 -- buffer switching |
36 -- buffer switching |
38 map("n", "gb", "<C-^>") |
37 map("n", "gb", "<C-^>") |
39 map("n", "gB", ":ls<CR>:b ", {silent = false}) |
38 map("n", "gB", ":ls<CR>:b ", { silent = false }) |
40 |
39 |
41 -- Select last paste, in the same mode it was pasted in |
40 -- Select last paste, in the same mode it was pasted in |
42 map("n", "gV", "'`[' . strpart(getregtype(), 0, 1) . '`]'", {expr=true}) |
41 map("n", "gV", "'`[' . strpart(getregtype(), 0, 1) . '`]'", { expr = true }) |
43 |
42 |
44 -- Add undo break-points |
43 -- Add undo break-points |
45 map("i", ",", ",<c-g>u") |
44 map("i", ",", ",<c-g>u") |
46 map("i", ".", ".<c-g>u") |
45 map("i", ".", ".<c-g>u") |
47 map("i", ";", ";<c-g>u") |
46 map("i", ";", ";<c-g>u") |
48 |
47 |
49 -- better indenting |
48 -- better indenting |
50 map("v", "<", "<gv") |
49 map("v", "<", "<gv") |
51 map("v", ">", ">gv") |
50 map("v", ">", ">gv") |
52 |
51 |
53 map("n", "j", "v:count == 0 ? 'gj' : 'j'", {expr = true}) |
52 map("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true }) |
54 map("n", "k", "v:count == 0 ? 'gk' : 'k'", {expr = true}) |
53 map("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true }) |
55 |
54 |
56 -- Use ltag over tselect |
55 -- Use ltag over tselect |
57 map("n", "g<C-]>", ":exe 'ltag ' . expand('<cword>') | lopen<CR>") |
56 map("n", "g<C-]>", ":exe 'ltag ' . expand('<cword>') | lopen<CR>") |
58 |
57 |
59 -- clear all interestingwords with \\k since \K is ri.vim |
58 -- clear all interestingwords with \\k since \K is ri.vim |
72 map("n", "<leader>tm", ":Tabularize methods<CR>") |
71 map("n", "<leader>tm", ":Tabularize methods<CR>") |
73 |
72 |
74 map("n", "<leader>a", ":call vimrc#AutoFmtToggle()<CR>") |
73 map("n", "<leader>a", ":call vimrc#AutoFmtToggle()<CR>") |
75 |
74 |
76 -- LSP features |
75 -- LSP features |
77 map('n', '<leader>d', vim.diagnostic.open_float) |
76 map("n", "<leader>d", vim.diagnostic.open_float) |
78 map('n', '[d', vim.diagnostic.goto_prev) |
77 map("n", "[d", vim.diagnostic.goto_prev) |
79 map('n', ']d', vim.diagnostic.goto_next) |
78 map("n", "]d", vim.diagnostic.goto_next) |
80 map('n', '<leader>ld', vim.diagnostic.setloclist) |
79 map("n", "<leader>ld", vim.diagnostic.setloclist) |
81 |
80 |
82 vim.api.nvim_create_augroup("lsp_attach", {}) |
81 vim.api.nvim_create_augroup("lsp_attach", {}) |
83 |
82 |
84 vim.api.nvim_create_autocmd("LspAttach", { |
83 vim.api.nvim_create_autocmd("LspAttach", { |
85 group = "lsp_attach", |
84 group = "lsp_attach", |
86 callback = function(args) |
85 callback = function(args) |
87 local bufnr = args.buf |
86 local bufnr = args.buf |
88 local bufopts = { buffer=bufnr } |
87 local bufopts = { buffer = bufnr } |
89 |
88 |
90 map('n', 'gD', vim.lsp.buf.declaration, bufopts) |
89 map("n", "gD", vim.lsp.buf.declaration, bufopts) |
91 map('n', 'gd', vim.lsp.buf.definition, bufopts) |
90 map("n", "gd", vim.lsp.buf.definition, bufopts) |
92 map('n', 'K', vim.lsp.buf.hover, bufopts) |
91 map("n", "K", vim.lsp.buf.hover, bufopts) |
93 map('n', 'gi', vim.lsp.buf.implementation, bufopts) |
92 map("n", "gi", vim.lsp.buf.implementation, bufopts) |
94 map('n', '<C-k>', vim.lsp.buf.signature_help, bufopts) |
93 map("n", "<C-k>", vim.lsp.buf.signature_help, bufopts) |
95 map('n', '<leader>wa', vim.lsp.buf.add_workspace_folder, bufopts) |
94 map("n", "<leader>wa", vim.lsp.buf.add_workspace_folder, bufopts) |
96 map('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder, bufopts) |
95 map("n", "<leader>wr", vim.lsp.buf.remove_workspace_folder, bufopts) |
97 map('n', '<leader>wl', function() |
96 map("n", "<leader>wl", function() |
98 print(vim.inspect(vim.lsp.buf.list_workspace_folders())) |
97 print(vim.inspect(vim.lsp.buf.list_workspace_folders())) |
99 end, bufopts) |
98 end, bufopts) |
100 map('n', '<leader>D', vim.lsp.buf.type_definition, bufopts) |
99 map("n", "<leader>D", vim.lsp.buf.type_definition, bufopts) |
101 map('n', '<leader>rn', vim.lsp.buf.rename, bufopts) |
100 map("n", "<leader>rn", vim.lsp.buf.rename, bufopts) |
102 map('n', '<leader>ca', vim.lsp.buf.code_action, bufopts) |
101 map("n", "<leader>ca", vim.lsp.buf.code_action, bufopts) |
103 map('n', 'gr', vim.lsp.buf.references, bufopts) |
102 map("n", "gr", vim.lsp.buf.references, bufopts) |
104 map('n', '<leader>f', function() vim.lsp.buf.format { async = true } end, bufopts) |
103 map("n", "<leader>f", function() |
|
104 vim.lsp.buf.format({ async = true }) |
|
105 end, bufopts) |
105 end, |
106 end, |
106 }) |
107 }) |
107 |
|