nvim/lua/maps.lua (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
local cmd = vim.cmd
local map = vim.keymap.set
local dap = require 'dap'
local treeapi = require 'nvim-tree.api'
local u = require 'utils'
local M = {}
-- map the leader key
map('n', '<Space>', '', {})
vim.g.mapleader = ' '
local options = { silent = true }
map('n', '<leader><esc>', ':nohlsearch<cr>', options)
map('n', '<leader>n', ':bnext<cr>', options)
map('n', '<leader>p', ':bprev<cr>', options)
-- search matches in the middle of the window
map('n', 'n', 'nzzzv', options)
map('n', 'N', 'Nzzzv', options)
-- remain in visual after indenting
map('v', '<', '<gv', options)
map('v', '>', '>gv', options)
-- Not an editor command: Wqa
cmd(':command! WQ wq')
cmd(':command! WQ wq')
cmd(':command! Wq wq')
cmd(':command! Wqa wqa')
cmd(':command! W w')
cmd(':command! Q q')
local function fzy_ignore(patterns)
local pattern_cmd = {}
for _, p in ipairs(patterns) do
table.insert(pattern_cmd, string.format("-E '%s'", p))
end
return table.concat(pattern_cmd, ' ')
end
-- fzy mappings
if vim.fn.executable('fzy') then
_G.fzy_edit = require('fzy.edit').fzy_edit
map(
'',
'<leader>e',
string.format(
':call v:lua.fzy_edit("fd -t f -t l")<cr>',
fzy_ignore{
'*.git/*',
'*node_modules*',
'*.pyc',
'*migrations*',
'*result*',
'*.direnv/*',
}
),
{ noremap=true, silent=true }
)
_G.fzy_buffers = require('fzy.buffers').fzy_buffers
map('',
'<leader>b',
':call v:lua.fzy_buffers("NvimTree_1")<cr>',
{ noremap=true, silent=true }
)
_G.fzy_jmp = require('fzy.jump').fzy_jmp
map('',
'<leader>f',
':call v:lua.fzy_jmp()<cr>',
{ noremap=true, silent=true}
)
else
print('fzy not in PATH!')
end
-- lspconfig
function M.on_attach(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', options)
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', options)
buf_set_keymap('n', 'ga', '<Cmd>lua vim.lsp.buf.code_action()<CR>', options)
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', options)
buf_set_keymap('n', 'L', '<Cmd>lua vim.lsp.buf.signature_help()<CR>', options)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', options)
buf_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', options)
buf_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', options)
buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', options)
map('n', 'ff', function()
vim.lsp.buf.format { async = true }
end)
end
-- vim.api.nvim_exec([[
-- " Use <Tab> and <S-Tab> to navigate through popup menu
-- inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
-- inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
--
-- ]], false)
-- abbreviations
local star = '★'
local stars = {}
for n = 1, 5
do
table.insert(stars, star)
u.iabbrev(n .. '*', table.concat(stars))
end
-- dap
-- Start debugging session
map("n", "<leader>ds", function()
dap.continue()
require 'dapui'.open()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-w>=", false, true, true), "n", false) -- Spaces buffers evenly
end)
-- Set breakpoints, get variable values, step into/out of functions, etc.
map("n", "<leader>dl", require("dap.ui.widgets").hover)
map("n", "<leader>dc", dap.continue)
map("n", "<leader>db", dap.toggle_breakpoint)
map("n", "<leader>dn", dap.step_over)
map("n", "<leader>di", dap.step_into)
map("n", "<leader>do", dap.step_out)
map("n", "<leader>dC", dap.clear_breakpoints)
-- Close debugger and clear breakpoints
map("n", "<leader>de", function()
dap.clear_breakpoints()
require 'dapui'.close()
dap.terminate()
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-w>=", false, true, true), "n", false)
end)
local function toggle_tree()
treeapi.tree.toggle({ find_file = true })
end
-- nvim-tree
map('n', '<leader>tt', toggle_tree)
map('n', '<leader>tf', treeapi.tree.focus)
return M
|