local cmd = vim.cmd local map = vim.api.nvim_set_keymap local u = require 'utils' local M = {} -- map the leader key map('n', '', '', {}) vim.g.mapleader = ' ' local options = { noremap = true, silent = true } map('n', '', ':nohlsearch', options) map('n', 'n', ':bnext', options) map('n', 'p', ':bprev', 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) -- 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) pattern_cmd = {} for _, p in ipairs(patterns) do table.insert(pattern_cmd, string.format("! -path '%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( '', 'e', string.format( ':call v:lua.fzy_edit("find -L . -type f %s | cut -c3-")', fzy_ignore{'*.git/*', '*node_modules*', '*.pyc', '*migrations*', '*result*'} ), { noremap=true, silent=true } ) _G.fzy_buffers = require('fzy.buffers').fzy_buffers map('', 'b', ':call v:lua.fzy_buffers()', { noremap=true, silent=true } ) _G.fzy_jmp = require('fzy.jump').fzy_jmp map('', 'f', ':call v:lua.fzy_jmp()', { 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 local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', options) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', options) buf_set_keymap('n', 'ga', 'lua vim.lsp.buf.code_action()', options) buf_set_keymap('n', 'K', 'lua vim.lsp.buf.hover()', options) buf_set_keymap('n', 'gi', 'lua vim.lsp.buf.implementation()', options) buf_set_keymap('n', '[d', 'lua vim.diagnostic.goto_prev()', options) buf_set_keymap('n', ']d', 'lua vim.diagnostic.goto_next()', options) buf_set_keymap('n', 'rn', 'lua vim.lsp.buf.rename()', options) if client.resolved_capabilities.document_formatting then buf_set_keymap('n', 'ff', 'lua vim.lsp.buf.formatting()', options) elseif client.resolved_capabilities.document_range_formatting then buf_set_keymap('n', 'ff', 'lua vim.lsp.buf.range_formatting()', options) end end vim.api.nvim_exec([[ " Use and to navigate through popup menu inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Set completeopt to have a better completion experience set completeopt=menuone,noinsert,noselect " Avoid showing message extra message when using completion set shortmess+=c ]], false) -- abbreviations local star = '★' local stars = {} for n = 1, 5 do table.insert(stars, star) u.iabbrev(n .. '*', table.concat(stars)) end return M