all repos — dotfiles @ dafb1a3666a5a8ddc0032f1124ad3d205c097fe4

my *nix dotfiles

nvim/lua/maps.lua (view raw)

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