all repos — dotfiles @ f77489d0eca3146d6fee1a41e7c5ae896dcdc83a

my *nix dotfiles

config/nvim/lua/maps.lua (view raw)

  1local cmd = vim.cmd
  2local map = vim.api.nvim_set_keymap
  3local u = require 'utils'
  4local M = {}
  5
  6-- map the leader key
  7map('n', '<Space>', '', {})
  8vim.g.mapleader = ' '
  9
 10
 11local options = { noremap = true, silent = true }
 12map('n', '<leader><esc>', ':nohlsearch<cr>', options)
 13map('n', '<leader>n', ':bnext<cr>', options)
 14map('n', '<leader>p', ':bprev<cr>', options)
 15
 16-- search matches in the middle of the window
 17map('n', 'n', 'nzzzv', options)
 18map('n', 'N', 'Nzzzv', options)
 19
 20-- remain in visual after indenting
 21map('v', '<', '<gv', options)
 22map('v', '>', '>gv', options)
 23
 24-- Not an editor command: Wqa
 25cmd(':command! WQ wq')
 26cmd(':command! WQ wq')
 27cmd(':command! Wq wq')
 28cmd(':command! Wqa wqa')
 29cmd(':command! W w')
 30cmd(':command! Q q')
 31
 32local function fzy_ignore(patterns)
 33  pattern_cmd = {}
 34  for _, p in ipairs(patterns) do
 35    table.insert(pattern_cmd, string.format("! -path '%s'", p))
 36  end
 37
 38  return table.concat(pattern_cmd, ' ')
 39end
 40
 41--  fzy mappings
 42if vim.fn.executable('fzy') then
 43  _G.fzy_edit = require('fzy.edit').fzy_edit
 44  map(
 45    '',
 46    '<leader>e',
 47    string.format(
 48      ':call v:lua.fzy_edit("find -L . -type f %s | cut -c3-")<cr>',
 49      fzy_ignore{'*.git/*', '*node_modules*', '*.pyc', '*migrations*', '*result*'}
 50    ),
 51    { noremap=true, silent=true }
 52  )
 53
 54  _G.fzy_buffers = require('fzy.buffers').fzy_buffers
 55  map('',
 56  '<leader>b',
 57  ':call v:lua.fzy_buffers()<cr>',
 58  { noremap=true, silent=true }
 59  )
 60
 61  _G.fzy_jmp = require('fzy.jump').fzy_jmp
 62  map('',
 63  '<leader>f',
 64  ':call v:lua.fzy_jmp()<cr>',
 65  { noremap=true, silent=true}
 66  )
 67else
 68  print('fzy not in PATH!')
 69end
 70
 71-- lspconfig
 72function M.on_attach(client, bufnr)
 73  local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
 74  local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
 75
 76  buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', options)
 77  buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', options)
 78  buf_set_keymap('n', 'ga', '<Cmd>lua vim.lsp.buf.code_action()<CR>', options)
 79  buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', options)
 80  buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', options)
 81  buf_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', options)
 82  buf_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', options)
 83  buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', options)
 84
 85  if client.resolved_capabilities.document_formatting then
 86    buf_set_keymap('n', 'ff', '<cmd>lua vim.lsp.buf.formatting()<CR>', options)
 87  elseif client.resolved_capabilities.document_range_formatting then
 88    buf_set_keymap('n', 'ff', '<cmd>lua vim.lsp.buf.range_formatting()<CR>', options)
 89  end
 90end
 91
 92vim.api.nvim_exec([[
 93" Use <Tab> and <S-Tab> to navigate through popup menu
 94inoremap <expr> <Tab>   pumvisible() ? "\<C-n>" : "\<Tab>"
 95inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
 96
 97" Set completeopt to have a better completion experience
 98set completeopt=menuone,noinsert,noselect
 99
100" Avoid showing message extra message when using completion
101set shortmess+=c
102
103]], false)
104
105-- abbreviations
106local star = ''
107local stars = {}
108for n = 1, 5
109do
110  table.insert(stars, star)
111  u.iabbrev(n .. '*', table.concat(stars))
112end
113
114return M