neovim

Personal neovim configuration files
git clone git://gtms.dev/neovim.git
Log | Files | Refs

commit 50f5838365a2456bb039ee09bae64d0d7e178364
parent 58ea0d7bd69dbad1527d0bb17e813bb2c7c0e3d1
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Wed, 20 Oct 2021 00:05:49 +0200

update

Diffstat:
Mftplugin/dart.lua | 9+++++----
Minit.lua | 54++++++++++++++----------------------------------------
Dlua/tms/c/keybind.lua | 123-------------------------------------------------------------------------------
Mlua/tms/ft/dart/lsp.lua | 25+++++++++++++++++++------
Mlua/tms/lsp/init.lua | 59+++++++++++++++++++++++++++++------------------------------
Alua/tms/p/notify/my_stage.lua | 30++++++++++++++++++++++++++++++
Mlua/tms/plugins.lua | 262+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mlua/tms/u/git.lua | 3+--
Mlua/tms/ws/file_pairs.lua | 7+++----
Mlua/tms/ws/init.lua | 5++---
Mplugin/marks.lua | 8+++-----
Mplugin/quickfix.lua | 9++++-----
Mplugin/terminal.lua | 2+-
Mplugin/unimpaired.lua | 90+++++++++++++++++++++++++++++++++++++++----------------------------------------
14 files changed, 299 insertions(+), 387 deletions(-)

diff --git a/ftplugin/dart.lua b/ftplugin/dart.lua @@ -1,5 +1,3 @@ -local kb = require('tms.c.keybind') - vim.g.dart_style_guide = 2 vim.g.dart_html_in_string = true @@ -7,9 +5,12 @@ vim.cmd [[command! -buffer DartAnalyzer lua require('tms.ft.dart.analyze').qf213 vim.cmd [[command! -buffer DartDebug lua require('tms.ft.dart.debug').func()]] vim.cmd [[command! -buffer DartPrint lua require('tms.ft.dart.debug').print()]] vim.cmd [[command! -buffer DartOrganizeImports lua require('tms.ft.dart.lsp').organize_imports()]] +vim.cmd [[command! -buffer DartFixAll lua require('tms.ft.dart.lsp').fix_all()]] +vim.cmd [[command! -buffer DartExtract lua require('tms.ft.dart.lsp').extract()]] -kb.bnnoremap(0, '<leader>pp', [[<cmd>DartPrint<cr>]]) -kb.bnnoremap(0, '<leader>po', [[<cmd>DartOrganizeImports<cr>]]) +vim.keymap.nnoremap {'<leader>pp', [[<cmd>DartPrint<cr>]], ['buffer'] = true} +vim.keymap.nnoremap {'<leader>po', [[<cmd>DartOrganizeImports<cr>]], ['buffer'] = true} +vim.keymap.nnoremap {'<leader>pf', [[<cmd>DartFixAll<cr>]], ['buffer'] = true} if vim.fn.getline(1):match('^#!.*dcli') then vim.cmd [[comp dcli]] diff --git a/init.lua b/init.lua @@ -4,6 +4,8 @@ if vim.fn.empty(vim.fn.glob(install_path)) > 0 then vim.api.nvim_command('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path) end +vim.cmd [[runtime plugin/astronauta.vim]] + local colors = require('tms.colors') vim.g.mapleader = ',' vim.cmd('syntax enable') @@ -52,41 +54,25 @@ vim.opt.foldlevel = 999 vim.opt.foldmethod = 'indent' vim.opt.foldtext = 'MyFoldText()' vim.opt.list = false -vim.opt.laststatus = 0 +vim.opt.laststatus = 1 vim.opt.statusline = ' ' -vim.opt.listchars = { - space = '·', - tab = '» ', - extends = '›', - precedes = '‹', - nbsp = '_', - trail = '_', - eol = '$', -} -vim.opt.fillchars = { - eob = '•', - fold = ' ', -} +vim.opt.listchars = {space = '·', tab = '» ', extends = '›', precedes = '‹', nbsp = '_', trail = '_', eol = '$'} +vim.opt.fillchars = {eob = '•', fold = ' '} vim.opt.number = false vim.opt.scrolloff = 5 vim.opt.sidescrolloff = 5 vim.opt.signcolumn = 'yes:1' -- MAPPINGS -local kb = require('astronauta.keymap') -local nmap = kb.nmap -local nnoremap = kb.nnoremap -local tnoremap = kb.tnoremap -local vnoremap = kb.vnoremap -local inoremap = kb.inoremap +local nmap = vim.keymap.nmap +local nnoremap = vim.keymap.nnoremap +local tnoremap = vim.keymap.tnoremap +local vnoremap = vim.keymap.vnoremap +local inoremap = vim.keymap.inoremap -- forget visual nmap {'Q', '<nop>'} -- kb.nnoremap('<tab>', 'za') -nmap { - '<esc>', - '<cmd>nohl<cr>', - silent = true, -} +nmap {'<esc>', '<cmd>nohl<cr>', silent = true} nnoremap {'gA', 'ga'} nnoremap {'Y', 'y$'} nnoremap {'n', 'nzzzv'} @@ -122,21 +108,9 @@ nnoremap {'<a-J>', '<c-w>J'} nnoremap {'<a-K>', '<c-w>K'} nnoremap {'<a-L>', '<c-w>L'} -- window split -nnoremap { - '<c-w><c-s>', - require('tms.p.vifm').split, - silent = true, -} -nnoremap { - '<c-w><c-v>', - require('tms.p.vifm').vsplit, - silent = true, -} -nnoremap { - '<c-w><c-w>', - require('tms.p.vifm').current, - silent = true, -} +nnoremap {'<c-w><c-s>', require('tms.p.vifm').split, silent = true} +nnoremap {'<c-w><c-v>', require('tms.p.vifm').vsplit, silent = true} +nnoremap {'<c-w><c-w>', require('tms.p.vifm').current, silent = true} nnoremap {'<c-w>V', '<cmd>vnew<cr>'} nnoremap {'<c-w>S', '<cmd>new<cr>'} -- line movement diff --git a/lua/tms/c/keybind.lua b/lua/tms/c/keybind.lua @@ -1,123 +0,0 @@ -local api = vim.api -local kb = api.nvim_set_keymap -local kbb = api.nvim_buf_set_keymap - -local globalListenerName = 'TMS_KEYBIND' -- change this to be unique across multiple plugin name -local kbhandlers = {} -_G[globalListenerName] = function(i) kbhandlers[i]() end - -local id = 0 -local function createCmd(fn) - id = id + 1 - kbhandlers[id] = fn - return '<cmd>lua ' .. globalListenerName .. '(' .. id .. ')<cr>' -end - -local function expand_rhs(rhs) - if type(rhs) == 'function' then return createCmd(rhs) end - return rhs -end - -local function add(mode, lhs, rhs, opt) - if type(lhs) == 'table' then - for _, v in ipairs(lhs) do kb(mode, v, expand_rhs(rhs), opt) end - else - kb(mode, lhs, expand_rhs(rhs), opt) - end -end - -local function badd(bufnr, mode, lhs, rhs, opt) - if type(lhs) == 'table' then - for _, v in ipairs(lhs) do kbb(bufnr, mode, v, expand_rhs(rhs), opt) end - else - kbb(bufnr, mode, lhs, expand_rhs(rhs), opt) - end -end - -local function nmap(lhs, rhs, options) add('n', lhs, rhs, options or {}) end -local function imap(lhs, rhs, options) add('i', lhs, rhs, options or {}) end -local function tmap(lhs, rhs, options) add('t', lhs, rhs, options or {}) end -local function vmap(lhs, rhs, options) add('v', lhs, rhs, options or {}) end -local function xmap(lhs, rhs, options) add('x', lhs, rhs, options or {}) end -local function omap(lhs, rhs, options) add('o', lhs, rhs, options or {}) end -local function smap(lhs, rhs, options) add('s', lhs, rhs, options or {}) end - -local function nnoremap(lhs, rhs, options) - options = options or {} - options['noremap'] = true - add('n', lhs, rhs, options) -end - -local function tnoremap(lhs, rhs, options) - options = options or {} - options['noremap'] = true - add('t', lhs, rhs, options) -end - -local function inoremap(lhs, rhs, options) - options = options or {} - options['noremap'] = true - add('i', lhs, rhs, options) -end - -local function vnoremap(lhs, rhs, options) - options = options or {} - options['noremap'] = true - add('v', lhs, rhs, options) -end - -local function snoremap(lhs, rhs, options) - options = options or {} - options['noremap'] = true - add('s', lhs, rhs, options) -end - -local function bnnoremap(bufn, lhs, rhs, options) - options = options or {} - options['noremap'] = true - badd(bufn or 0, 'n', lhs, rhs, options) -end - -local function btnoremap(bufn, lhs, rhs, options) - options = options or {} - options['noremap'] = true - badd(bufn or 0, 't', lhs, rhs, options) -end - -local function binoremap(bufn, lhs, rhs, options) - options = options or {} - options['noremap'] = true - badd(bufn or 0, 'i', lhs, rhs, options) -end - -local function bvnoremap(bufn, lhs, rhs, options) - options = options or {} - options['noremap'] = true - badd(bufn or 0, 'v', lhs, rhs, options) -end - -local function bsnoremap(bufn, lhs, rhs, options) - options = options or {} - options['noremap'] = true - badd(bufn or 0, 's', lhs, rhs, options) -end - -return { - nmap = nmap, - imap = imap, - tmap = tmap, - vmap = vmap, - omap = omap, - xmap = xmap, - smap = smap, - nnoremap = nnoremap, - tnoremap = tnoremap, - inoremap = inoremap, - vnoremap = vnoremap, - snoremap = snoremap, - bnnoremap = bnnoremap, - btnoremap = btnoremap, - binoremap = binoremap, - bvnoremap = bvnoremap, - bsnoremap = bsnoremap, -} diff --git a/lua/tms/ft/dart/lsp.lua b/lua/tms/ft/dart/lsp.lua @@ -3,15 +3,28 @@ local api = vim.api local M = {} -M.organize_imports = function() +local execute_command = function(command) local cur_buf = api.nvim_get_current_buf() local cur_buf_name = api.nvim_buf_get_name(cur_buf) - local params = { - command = 'edit.organizeImports', - arguments = {cur_buf_name}, - title = '', - } + local params = {command = command, arguments = {cur_buf_name}, title = ''} lsp.buf_request_sync(cur_buf, 'workspace/executeCommand', params, 1500) end +M.organize_imports = function() execute_command('edit.organizeImports') end +M.fix_all = function() execute_command('edit.fixAll') end +-- TODO(tms) 20.10.2021: +M.extract = function() + local cur_buf = api.nvim_get_current_buf() + local cur_buf_name = api.nvim_buf_get_name(cur_buf) + local range = vim.lsp.util.make_range_params() + local params = {command = 'refactor.perform', arguments = {'EXTRACT_METHOD', cur_buf_name, range}, title = ''} + dump(lsp.get_active_clients()[1].request('codeAction/resolve', 'EXTRACT_METHOD', function(err, resolved_action) + if err then + vim.notify(err.code .. ': ' .. err.message, vim.log.levels.ERROR) + return + end + -- apply_action(resolved_action, client) + end, cur_buf)) +end + return M diff --git a/lua/tms/lsp/init.lua b/lua/tms/lsp/init.lua @@ -1,4 +1,3 @@ -local kb = require('tms.c.keybind') local efm = require('tms.lsp.efm') local handlers = require('tms.lsp.handlers') local servers = require('tms.lsp.servers') @@ -6,43 +5,43 @@ local servers = require('tms.lsp.servers') local M = {} local keybind = function(bufnr) - local o = {silent = true} - local oe = {silent = true, expr = true} local t = '<cmd>lua require("tms.p.telescope")' local l = '<cmd>lua vim.lsp' local h = '<cmd>lua require("tms.lsp.handlers")' - kb.bnnoremap(bufnr, 'gd', t .. '.b.lsp_definitions()<cr>', o) - kb.bnnoremap(bufnr, 'gD', '<cmd>vsplit | lua vim.lsp.buf.definition()<cr>', o) - kb.bnnoremap(bufnr, 'gi', l .. '.buf.implementation()<cr>', o) + vim.keymap.nnoremap {'gd', l .. '.buf.definition()<cr>', buffer = bufnr, silent = true} + vim.keymap.nnoremap {'gD', '<cmd>vsplit | lua vim.lsp.buf.definition()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gi', l .. '.buf.implementation()<cr>', silent = true, buffer = true} -- telescope fallback (subject to remove) - kb.bnnoremap(bufnr, 'gI', t .. 'b.lsp_implementations()<cr>', o) - kb.bnnoremap(bufnr, 'K', l .. '.buf.hover()<cr>', o) - kb.bnnoremap(bufnr, '<c-p>', l .. '.buf.signature_help()<cr>', o) - kb.binoremap(bufnr, '<c-p>', l .. '.buf.signature_help()<cr>', o) - kb.bnnoremap(bufnr, 'gr', l .. '.buf.references()<cr>', o) + vim.keymap.nnoremap {'gI', t .. 'b.lsp_implementations()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'K', l .. '.buf.hover()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'<c-p>', l .. '.buf.signature_help()<cr>', silent = true, buffer = true} + vim.keymap.inoremap {'<c-p>', l .. '.buf.signature_help()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gr', l .. '.buf.references()<cr>', silent = true, buffer = true} -- telescope fallback (subject to remove) - kb.bnnoremap(bufnr, 'gR', t .. '.b.lsp_references()<cr>', o) - kb.bnnoremap(bufnr, 'ga', t .. '.lsp_code_actions()<cr>', o) - kb.bnnoremap(bufnr, 'gn', l .. '.buf.rename()<cr>', o) - kb.bnnoremap(bufnr, 'gN', h .. '.rename()<cr>', o) - kb.bnnoremap(bufnr, 'gm', t .. '.lsp_document_symbols()<cr>', o) - kb.binoremap(bufnr, '<down>', 'pumvisible() ? "<c-n>" : "<up>"', oe) - kb.binoremap(bufnr, '<up>', 'pumvisible() ? "<c-p>" : "<down>"', oe) + vim.keymap.nnoremap {'gR', t .. '.b.lsp_references()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'ga', t .. '.lsp_code_actions()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gn', l .. '.buf.rename()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gN', h .. '.rename()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gm', t .. '.lsp_document_symbols()<cr>', silent = true, buffer = true} + vim.keymap.inoremap {'<down>', 'pumvisible() ? "<c-n>" : "<up>"', silent = true, buffer = true, expr = true} + vim.keymap.inoremap {'<up>', 'pumvisible() ? "<c-p>" : "<down>"', silent = true, buffer = true, expr = true} -- formatting - kb.bnnoremap(bufnr, 'Q', l .. '.buf.formatting()<cr>', o) - kb.bvnoremap(bufnr, 'Q', l .. '.buf.formatting()<cr>', o) + vim.keymap.nnoremap {'Q', l .. '.buf.formatting()<cr>', silent = true, buffer = true} + vim.keymap.vnoremap {'Q', l .. '.buf.formatting()<cr>', silent = true, buffer = true} -- workspace - kb.bnnoremap(bufnr, 'gww', t .. '.b.lsp_workspace_symbols()<cr>', o) - kb.bnnoremap(bufnr, 'gwa', l .. '.buf.add_workspace_folder()<cr>', o) - kb.bnnoremap(bufnr, 'gwr', l .. '.buf.remove_workspace_folder()<cr>', o) - kb.bnnoremap(bufnr, 'gwl', '<cmd>lua dump(vim.lsp.buf.list_workspace_folders())<cr>', o) + vim.keymap.nnoremap {'gww', t .. '.b.lsp_workspace_symbols()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gwa', l .. '.buf.add_workspace_folder()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gwr', l .. '.buf.remove_workspace_folder()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gwl', '<cmd>lua dump(vim.lsp.buf.list_workspace_folders())<cr>', silent = true, buffer = true} -- diagnostic - kb.bnnoremap(bufnr, 'gs', l .. '.diagnostic.show_line_diagnostics()<cr>', o) - kb.bnnoremap(bufnr, 'gll', '<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>', o) - kb.bnnoremap(bufnr, 'gld', t .. '.b.lsp_document_diagnostics()<cr>', o) - kb.bnnoremap(bufnr, 'glw', t .. '.b.lsp_workspace_diagnostics()<cr>', o) - kb.bnnoremap(bufnr, {'>d', '>('}, l .. '.diagnostic.goto_next()<cr>', o) - kb.bnnoremap(bufnr, {'<d', '<('}, l .. '.diagnostic.goto_prev()<cr>', o) + vim.keymap.nnoremap {'gs', l .. '.diagnostic.show_line_diagnostics()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gll', '<cmd>lua vim.lsp.diagnostic.set_loclist()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'gld', t .. '.b.lsp_document_diagnostics()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'glw', t .. '.b.lsp_workspace_diagnostics()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'>d', l .. '.diagnostic.goto_next()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'>(', l .. '.diagnostic.goto_next()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'<d', l .. '.diagnostic.goto_prev()<cr>', silent = true, buffer = true} + vim.keymap.nnoremap {'<(', l .. '.diagnostic.goto_prev()<cr>', silent = true, buffer = true} end local custom_attach = function(client, bufnr) diff --git a/lua/tms/p/notify/my_stage.lua b/lua/tms/p/notify/my_stage.lua @@ -0,0 +1,30 @@ +local stages_util = require('notify.stages.util') + +return { + function(state) + local next_height = state.message.height + 2 + local next_row = stages_util.available_row(state.open_windows, next_height) + if not next_row then return nil end + return { + relative = 'editor', + anchor = 'NE', + width = state.message.width, + height = state.message.height, + col = vim.opt.columns:get(), + row = next_row, + border = 'rounded', + style = 'minimal', + opacity = 0, + focusable = false, + } + end, + function() return {opacity = {100}, col = {vim.opt.columns:get()}} end, + function() return {col = {vim.opt.columns:get()}, time = true} end, + function() + return { + width = {1, frequency = 2.5, damping = 0.9, complete = function(cur_width) return cur_width < 3 end}, + opacity = {0, frequency = 2, complete = function(cur_opacity) return cur_opacity <= 4 end}, + col = {vim.opt.columns:get()}, + } + end, +} diff --git a/lua/tms/plugins.lua b/lua/tms/plugins.lua @@ -2,7 +2,7 @@ local packer = nil local function init() if packer == nil then packer = require('packer') - packer.init() + packer.init() end local use = packer.use @@ -33,24 +33,21 @@ local function init() config = function() vim.g.undotree_WindowLayout = 2 vim.g.undotree_SplitWidth = 50 - local kb = require('tms.c.keybind') - kb.nnoremap('<F5>', '<cmd>UndotreeToggle<cr>') + vim.keymap.nnoremap {'<F5>', '<cmd>UndotreeToggle<cr>'} end, } use { -- animate height/width of window 'camspiers/animate.vim', config = function() vim.cmd('let g:animate#duration = 100.0') - local silent = {silent = true} - local kb = require('tms.c.keybind') - kb.nmap('<c-up>', ':call animate#window_delta_height(10)<cr>', silent) - kb.nmap('<c-down>', ':call animate#window_delta_height(-10)<cr>', silent) - kb.nmap('<c-left>', ':call animate#window_delta_width(-10)<cr>', silent) - kb.nmap('<c-right>', ':call animate#window_delta_width(10)<cr>', silent) - kb.nmap('<s-up>', ':call animate#window_delta_height(1)<cr>', silent) - kb.nmap('<s-down>', ':call animate#window_delta_height(-1)<cr>', silent) - kb.nmap('<s-left>', ':call animate#window_delta_width(-1)<cr>', silent) - kb.nmap('<s-right>', ':call animate#window_delta_width(1)<cr>', silent) + vim.keymap.nmap {'<c-up>', ':call animate#window_delta_height(10)<cr>', ['silent'] = true} + vim.keymap.nmap {'<c-down>', ':call animate#window_delta_height(-10)<cr>', ['silent'] = true} + vim.keymap.nmap {'<c-left>', ':call animate#window_delta_width(-10)<cr>', ['silent'] = true} + vim.keymap.nmap {'<c-right>', ':call animate#window_delta_width(10)<cr>', ['silent'] = true} + vim.keymap.nmap {'<s-up>', ':call animate#window_delta_height(1)<cr>', ['silent'] = true} + vim.keymap.nmap {'<s-down>', ':call animate#window_delta_height(-1)<cr>', ['silent'] = true} + vim.keymap.nmap {'<s-left>', ':call animate#window_delta_width(-1)<cr>', ['silent'] = true} + vim.keymap.nmap {'<s-right>', ':call animate#window_delta_width(1)<cr>', ['silent'] = true} end, } use { -- colorize rgb format @@ -68,16 +65,15 @@ local function init() }) end, } - use { + use { -- beacon last cursor pos 'danilamihailov/beacon.nvim', config = function() vim.g.beacon_ignore_filetypes = {'vifm'} - local kb = require('tms.c.keybind') - kb.nmap('*', '*:Beacon<cr>') - kb.nmap('#', '#:Beacon<cr>') + vim.keymap.nmap {'*', '*:Beacon<cr>'} + vim.keymap.nmap {'#', '#:Beacon<cr>'} end, - } -- beacon last cursor pos - use { + } + use { -- highlight parens 'Yggdroot/hiPairs', config = function() vim.g.loaded_matchparen = 1 @@ -97,7 +93,7 @@ local function init() -- ['gui'] = 'bold', -- } end, - } -- highlight parens + } use 'chaoren/vim-wordmotion' -- word counts with _,.,-,... use { disable = true, @@ -105,8 +101,22 @@ local function init() requires = {'kyazdani42/nvim-web-devicons', opt = true}, config = function() require('tms.p.status').setup() end, } - use {disable = true, 'joeytwiddle/sexy_scroller.vim'} -- smooth scrolling use { + 'jandamm/cryoline.nvim', + config = function() + require('cryoline').config { + ft = {fugitive = '%{FugitiveStatusline()}'}, + line = function() + local git_head = vim.fn.FugitiveHead() + local branch = '' + if #git_head ~= 0 then branch = '[' .. git_head .. ']' end + local line = '%f %h%m%r' .. branch .. '%=%-14.(%l,%c%V%)' + return line + end, + } + end, + } + use { -- smooth scrolling '~/.local/lib/neoscroll.nvim', config = function() require('neoscroll').setup({mappings = {'<C-u>', '<C-d>', '<C-b>', '<C-f>', 'zt', 'zz', 'zb'}}) @@ -121,50 +131,44 @@ local function init() t['zb'] = {'zb', {'100'}} require('neoscroll.config').set_mappings(t) end, - } -- smooth scrolling - -- use { - -- disable = true, - -- 'karb94/neoscroll.nvim', - -- config = function() require('neoscroll').setup({}) end, - -- } + } use 'romgrk/equal.operator' -- equal text object `lefthand = righthand` - use { + use { -- parameter switch 'AndrewRadev/sideways.vim', config = function() - local kb = require('tms.c.keybind') - kb.nnoremap('<c-h>', ':SidewaysLeft<cr>') - kb.nnoremap('<c-l>', ':SidewaysRight<cr>') - kb.omap({'aa', 'a.'}, '<Plug>SidewaysArgumentTextobjA') - kb.xmap({'aa', 'a.'}, '<Plug>SidewaysArgumentTextobjA') - kb.omap('ia', '<Plug>SidewaysArgumentTextobjI') - kb.xmap('ia', '<Plug>SidewaysArgumentTextobjI') - kb.nmap('<leader>ah', '<Plug>SidewaysArgumentInsertBefore') - kb.nmap('<leader>al', '<Plug>SidewaysArgumentAppendAfter') - kb.nmap('<leader>aH', '<Plug>SidewaysArgumentInsertFirt') - kb.nmap('<leader>aL', '<Plug>SidewaysArgumentAppendLast') + vim.keymap.nnoremap {'<c-h>', ':SidewaysLeft<cr>'} + vim.keymap.nnoremap {'<c-l>', ':SidewaysRight<cr>'} + vim.keymap.omap {'aa', '<Plug>SidewaysArgumentTextobjA'} + vim.keymap.omap {'a.', '<Plug>SidewaysArgumentTextobjA'} + vim.keymap.xmap {'aa', '<Plug>SidewaysArgumentTextobjA'} + vim.keymap.xmap {'a.', '<Plug>SidewaysArgumentTextobjA'} + vim.keymap.omap {'ia', '<Plug>SidewaysArgumentTextobjI'} + vim.keymap.xmap {'ia', '<Plug>SidewaysArgumentTextobjI'} + vim.keymap.nmap {'<leader>ah', '<Plug>SidewaysArgumentInsertBefore'} + vim.keymap.nmap {'<leader>al', '<Plug>SidewaysArgumentAppendAfter'} + vim.keymap.nmap {'<leader>aH', '<Plug>SidewaysArgumentInsertFirt'} + vim.keymap.nmap {'<leader>aL', '<Plug>SidewaysArgumentAppendLast'} end, - } -- parameter switch - use { + } + use { -- aligning 'godlygeek/tabular', config = function() - local kb = require('tms.c.keybind') - kb.nmap('<leader>a=', '<cmd>Tabularize /=<cr>') - kb.vmap('<leader>a=', '<cmd>Tabularize /=<cr>') - kb.nmap('<leader>a:', '<cmd>Tabularize /:\\zs<cr>') - kb.vmap('<leader>a:', '<cmd>Tabularize /:\\zs<cr>') - kb.nmap('<leader>a,', '<cmd>Tabularize /,<cr>') - kb.vmap('<leader>a,', '<cmd>Tabularize /,<cr>') + vim.keymap.nmap {'<leader>a=', '<cmd>Tabularize /=<cr>'} + vim.keymap.vmap {'<leader>a=', '<cmd>Tabularize /=<cr>'} + vim.keymap.nmap {'<leader>a:', '<cmd>Tabularize /:\\zs<cr>'} + vim.keymap.vmap {'<leader>a:', '<cmd>Tabularize /:\\zs<cr>'} + vim.keymap.nmap {'<leader>a,', '<cmd>Tabularize /,<cr>'} + vim.keymap.vmap {'<leader>a,', '<cmd>Tabularize /,<cr>'} end, - } -- aligning - use { + } + use { -- replace 'windwp/nvim-spectre', config = function() require('tms.p.spectre').setup() - local kb = require('tms.c.keybind') - kb.nnoremap('<leader>S', '<cmd>lua require("spectre").open()<cr>') - kb.vnoremap('<leader>s', '<cmd>lua require("spectre").open_visual()<cr>') + vim.keymap.nnoremap {'<leader>S', '<cmd>lua require("spectre").open()<cr>'} + vim.keymap.vnoremap {'<leader>s', '<cmd>lua require("spectre").open_visual()<cr>'} end, - } -- replace + } use {'tjdevries/astronauta.nvim'} use {'luukvbaal/stabilize.nvim'} @@ -177,8 +181,7 @@ local function init() 'folke/zen-mode.nvim', config = function() require('zen-mode').setup {} - local kb = require('tms.c.keybind') - kb.nnoremap('<leader>z', '<cmd>ZenMode<cr>') + vim.keymap.nnoremap {'<leader>z', '<cmd>ZenMode<cr>'} end, } @@ -191,47 +194,43 @@ local function init() requires = {'nvim-lua/plenary.nvim'}, config = function() require('tms.p.gitsigns').setup() - local kb = require('tms.c.keybind') - kb.nmap({'>c', '>['}, '<cmd>lua require("gitsigns").next_hunk()<cr>') - kb.nmap({'<c', '<['}, '<cmd>lua require("gitsigns").prev_hunk()<cr>') - kb.nmap('<leader>hs', '<cmd>lua require("gitsigns").stage_hunk()<cr>') - kb.nmap('<leader>hu', '<cmd>lua require("gitsigns").undo_stage_hunk()<cr>') - kb.nmap('<leader>hr', '<cmd>lua require("gitsigns").reset_hunk()<cr>') - kb.nmap('<leader>hR', '<cmd>lua require("gitsigns").reset_buffer()<cr>') - kb.nmap('<leader>hp', '<cmd>lua require("gitsigns").preview_hunk()<cr>') - kb.nmap('<leader>hb', '<cmd>lua require("gitsigns").toggle_current_line_blame()<cr>') - kb.nmap('<leader>hl', '<cmd>lua require("gitsigns").toggle_linehl()<cr>') - kb.nmap('<leader>hn', '<cmd>lua require("gitsigns").toggle_numhl()<cr>') - kb.omap('ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') - kb.xmap('ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') + vim.keymap.nmap {'>c', '<cmd>lua require("gitsigns").next_hunk()<cr>'} + vim.keymap.nmap {'>[', '<cmd>lua require("gitsigns").next_hunk()<cr>'} + vim.keymap.nmap {'<c', '<cmd>lua require("gitsigns").prev_hunk()<cr>'} + vim.keymap.nmap {'<[', '<cmd>lua require("gitsigns").prev_hunk()<cr>'} + vim.keymap.nmap {'<leader>hs', '<cmd>lua require("gitsigns").stage_hunk()<cr>'} + vim.keymap.nmap {'<leader>hu', '<cmd>lua require("gitsigns").undo_stage_hunk()<cr>'} + vim.keymap.nmap {'<leader>hr', '<cmd>lua require("gitsigns").reset_hunk()<cr>'} + vim.keymap.nmap {'<leader>hR', '<cmd>lua require("gitsigns").reset_buffer()<cr>'} + vim.keymap.nmap {'<leader>hp', '<cmd>lua require("gitsigns").preview_hunk()<cr>'} + vim.keymap.nmap {'<leader>hb', '<cmd>lua require("gitsigns").toggle_current_line_blame()<cr>'} + vim.keymap.nmap {'<leader>hl', '<cmd>lua require("gitsigns").toggle_linehl()<cr>'} + vim.keymap.nmap {'<leader>hn', '<cmd>lua require("gitsigns").toggle_numhl()<cr>'} + vim.keymap.omap {'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>'} + vim.keymap.xmap {'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>'} end, } use 'sindrets/diffview.nvim' -- view diffs for multiple files use { -- git integration 'tpope/vim-fugitive', config = function() - local kb = require('tms.c.keybind') - kb.nnoremap('<leader>gg', '<cmd>G<cr>') - kb.nnoremap('<leader>gc', '<cmd>G commit<cr>') - kb.nnoremap('<leader>gb', '<cmd>Git blame<cr>') + vim.keymap.nnoremap {'<leader>gg', '<cmd>G<cr>'} + vim.keymap.nnoremap {'<leader>gc', '<cmd>G commit<cr>'} + vim.keymap.nnoremap {'<leader>gb', '<cmd>Git blame<cr>'} end, } use { -- git info for current line 'rhysd/git-messenger.vim', - config = function() - local kb = require('tms.c.keybind') - kb.nnoremap('<leader>gm', '<plug>(git-messenger)') - end, + config = function() vim.keymap.nnoremap {'<leader>gm', '<plug>(git-messenger)'} end, } use { 'ThePrimeagen/git-worktree.nvim', after = {'telescope.nvim'}, config = function() require('git-worktree').setup() - local kb = require('tms.c.keybind') require('telescope').load_extension('git_worktree') - kb.nnoremap('<space>wo', require('telescope').extensions.git_worktree.git_worktrees) - kb.nnoremap('<space>wi', require('telescope').extensions.git_worktree.create_git_worktree) + vim.keymap.nnoremap {'<space>wo', require('telescope').extensions.git_worktree.git_worktrees} + vim.keymap.nnoremap {'<space>wi', require('telescope').extensions.git_worktree.create_git_worktree} end, } @@ -291,6 +290,7 @@ local function init() -- snippets use {'norcalli/snippets.nvim', config = function() require('tms.p.snippets').setup() end} + use {'L3MON4D3/LuaSnip'} -- completion use { @@ -304,13 +304,21 @@ local function init() 'hrsh7th/cmp-calc', 'ray-x/cmp-treesitter', 'uga-rosa/cmp-dictionary', + 'L3MON4D3/LuaSnip', }, config = function() - -- require('tms.p.compe').setup() + local luasnip = require('luasnip') local cmp = require('cmp') + + local has_words_before = function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match('%s') == nil + end + cmp.setup({ completion = {autocomplete = false}, documentation = {border = 'single'}, + snippet = function(args) require('luasnip').lsp_expand(args.body) end, mapping = { ['<C-d>'] = cmp.mapping.scroll_docs(-4), ['<C-f>'] = cmp.mapping.scroll_docs(4), @@ -318,11 +326,33 @@ local function init() ['<Up>'] = cmp.mapping.select_prev_item({behavior = cmp.SelectBehavior.Insert}), ['<C-Space>'] = cmp.mapping.complete(), ['<C-e>'] = cmp.mapping.close(), - ['<CR>'] = cmp.mapping.confirm({select = true, behavior = cmp.ConfirmBehavior.Replace}), + ['<CR>'] = cmp.mapping.confirm({select = true}), + ['<Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, {'i', 's'}), + + ['<S-Tab>'] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, {'i', 's'}), }, sources = { {name = 'nvim_lsp'}, {name = 'nvim_lua'}, + {name = 'luasnip'}, {name = 'path'}, {name = 'buffer'}, {name = 'spell'}, @@ -331,18 +361,18 @@ local function init() {name = 'dictionary'}, }, }) - -- local kb = require('tms.c.keybind') - -- kb.inoremap('<c-space>', 'compe#complete()', {silent = true, expr = true}) - -- kb.imap('<Tab>', 'v:lua.tab_complete()', {expr = true}) - -- kb.smap('<Tab>', 'v:lua.tab_complete()', {expr = true}) - -- kb.imap('<S-Tab>', 'v:lua.s_tab_complete()', {expr = true}) - -- kb.smap('<S-Tab>', 'v:lua.s_tab_complete()', {expr = true}) end, } -- ui use 'MunifTanjim/nui.nvim' - use 'rcarriga/nvim-notify' + use { + 'rcarriga/nvim-notify', + config = function() + vim.notify = require('notify') + require('notify').setup({stages = require('tms.p.notify.my_stage')}) + end, + } -- refactor use { @@ -413,8 +443,7 @@ local function init() require('tms.p.treesitter').setup() -- hack vim.cmd [[command! TSHRefresh execute 'write|edit|TSBufEnable highlight']] - local kb = require('tms.c.keybind') - kb.nnoremap('<leader>su', '<cmd>TSHRefresh<cr>') + vim.keymap.nnoremap {'<leader>su', '<cmd>TSHRefresh<cr>'} end, } use 'nvim-treesitter/nvim-treesitter-textobjects' @@ -428,30 +457,29 @@ local function init() config = function() local telescope = require('tms.p.telescope') telescope.setup() - local kb = require('tms.c.keybind') - kb.nnoremap('<space>h', telescope.b.help_tags) - kb.nnoremap('<space>d', telescope.find_files) - kb.nnoremap('<space>D', telescope.b.find_files) - kb.nnoremap('<space>g', telescope.b.git_files) - kb.nnoremap('<space>b', telescope.buffers) - kb.nnoremap('<space>l', telescope.lines) - kb.nnoremap('<space>r', telescope.b.live_grep) - kb.nnoremap('<space>e', telescope.b.grep_string) - kb.nnoremap('<space>c', telescope.b.git_status) - kb.nnoremap('<space>q', telescope.b.quickfix) - kb.nnoremap('<space>k', telescope.keymaps) - kb.nnoremap('<space>m', telescope.b.man_pages) - kb.nnoremap('<space>p', telescope.reloader) - kb.nnoremap('<space>S', telescope.spell_suggest) + vim.keymap.nnoremap {'<space>h', telescope.b.help_tags} + vim.keymap.nnoremap {'<space>d', telescope.find_files} + vim.keymap.nnoremap {'<space>D', telescope.b.find_files} + vim.keymap.nnoremap {'<space>g', telescope.b.git_files} + vim.keymap.nnoremap {'<space>b', telescope.buffers} + vim.keymap.nnoremap {'<space>l', telescope.lines} + vim.keymap.nnoremap {'<space>r', telescope.b.live_grep} + vim.keymap.nnoremap {'<space>e', telescope.b.grep_string} + vim.keymap.nnoremap {'<space>c', telescope.b.git_status} + vim.keymap.nnoremap {'<space>q', telescope.b.quickfix} + vim.keymap.nnoremap {'<space>k', telescope.keymaps} + vim.keymap.nnoremap {'<space>m', telescope.b.man_pages} + vim.keymap.nnoremap {'<space>p', telescope.reloader} + vim.keymap.nnoremap {'<space>S', telescope.spell_suggest} -- extensions - kb.nnoremap('<space>s', telescope.snippets) - kb.nnoremap('<space>M', telescope.media_files) + vim.keymap.nnoremap {'<space>s', telescope.snippets} + vim.keymap.nnoremap {'<space>M', telescope.media_files} -- custom - kb.nnoremap('<space>n', telescope.edit_neovim) + vim.keymap.nnoremap {'<space>n', telescope.edit_neovim} -- maybe - almost unsuedtelescope - kb.nnoremap('<space>o', telescope.b.oldfiles) - kb.nnoremap('<space>t', telescope.b.treesitter) - kb.nnoremap('<space>P', telescope.plugins) + vim.keymap.nnoremap {'<space>o', telescope.b.oldfiles} + vim.keymap.nnoremap {'<space>t', telescope.b.treesitter} + vim.keymap.nnoremap {'<space>P', telescope.plugins} end, } use {'nvim-telescope/telescope-packer.nvim', after = {'telescope.nvim'}} @@ -470,9 +498,8 @@ local function init() after = {'telescope.nvim'}, config = function() require('telescope').load_extension('snippets') - local kb = require('tms.c.keybind') - kb.inoremap('<c-j>', '<cmd>lua require"snippets".expand_or_advance()<cr>') - kb.inoremap('<c-k>', '<cmd>lua require"snippets".advance_snippet(-1)<cr>') + vim.keymap.inoremap {'<c-j>', '<cmd>lua require"snippets".expand_or_advance()<cr>'} + vim.keymap.inoremap {'<c-k>', '<cmd>lua require"snippets".advance_snippet(-1)<cr>'} end, } use { @@ -490,9 +517,8 @@ local function init() use { 'GenesisTMS/trans.nvim', config = function() - local kb = require('tms.c.keybind') - kb.xmap('mtt', '<cmd>lua require("trans").translate()<cr>') - kb.xmap('mtc', '<cmd>lua require("trans").translate("cs")<cr>') + vim.keymap.xmap {'mtt', '<cmd>lua require("trans").translate()<cr>'} + vim.keymap.xmap {'mtc', '<cmd>lua require("trans").translate("cs")<cr>'} end, } end diff --git a/lua/tms/u/git.lua b/lua/tms/u/git.lua @@ -1,8 +1,7 @@ local M = {} M.is_git = function(path) - local id = vim.fn.jobstart('git -C "' .. path .. '" rev-parse', - {on_exit = function(_, code, type) end}) + local id = vim.fn.jobstart('git -C "' .. path .. '" rev-parse', {on_exit = function(_, code, type) end}) local status = vim.fn.jobwait({id})[1] if status == 0 then return true diff --git a/lua/tms/ws/file_pairs.lua b/lua/tms/ws/file_pairs.lua @@ -5,10 +5,9 @@ local ft_letter = {html = 't', scss = 's', dart = 'd', css = 'c'} local set_mark = function(letter, path, buffer) path = path or vim.fn.expand('%') if buffer == nil then buffer = true end - local nnoremap = require('astronauta.keymap').nnoremap - nnoremap {'<leader>m' .. letter, '<cmd>edit ' .. path .. '<cr>', ['buffer'] = buffer} - nnoremap {'<leader>mv' .. letter, '<cmd>vsplit ' .. path .. '<cr>', ['buffer'] = buffer} - nnoremap {'<leader>mx' .. letter, '<cmd>split ' .. path .. '<cr>', ['buffer'] = buffer} + vim.keymap.nnoremap {'<leader>m' .. letter, '<cmd>edit ' .. path .. '<cr>', ['buffer'] = buffer} + vim.keymap.nnoremap {'<leader>mv' .. letter, '<cmd>vsplit ' .. path .. '<cr>', ['buffer'] = buffer} + vim.keymap.nnoremap {'<leader>mx' .. letter, '<cmd>split ' .. path .. '<cr>', ['buffer'] = buffer} end M.config = function() diff --git a/lua/tms/ws/init.lua b/lua/tms/ws/init.lua @@ -1,4 +1,3 @@ -local kb = require('tms.c.keybind') local au = require('tms.c.autocmd') local M = {} @@ -6,14 +5,14 @@ local M = {} local ws = {} ws.mail = { filetypes = {'mail'}, - config = function() kb.nnoremap('<leader>pa', [[<cmd>lua require("tms.p.telescope").mail_address()<cr>]]) end, + config = function() vim.keymap.nnoremap{'<leader>pa', [[<cmd>lua require("tms.p.telescope").mail_address()<cr>]]} end, } ws.file_pairs = {buffer = '*', config = function() require('tms.ws.file_pairs').config() end} ws.medoro = { path = '*/medoro/**', - config = function() kb.nnoremap('<leader>pl', '<cmd>lua require("tms.ws.medoro").lang()<cr>') end, + config = function() vim.keymap.nnoremap{'<leader>pl', '<cmd>lua require("tms.ws.medoro").lang()<cr>'} end, } M.setup = function() diff --git a/plugin/marks.lua b/plugin/marks.lua @@ -1,5 +1,3 @@ -local nnoremap = require('astronauta.keymap').nnoremap - -- global markers for _, l in ipairs({ 'a', @@ -29,7 +27,7 @@ for _, l in ipairs({ 'y', 'z', }) do - nnoremap {'m' .. l, 'm' .. l:upper()} - nnoremap {'\'' .. l, '`' .. l:upper()} - nnoremap {'`' .. l, '\'' .. l:upper()} + vim.keymap.nnoremap {'m' .. l, 'm' .. l:upper()} + vim.keymap.nnoremap {'\'' .. l, '`' .. l:upper()} + vim.keymap.nnoremap {'`' .. l, '\'' .. l:upper()} end diff --git a/plugin/quickfix.lua b/plugin/quickfix.lua @@ -1,5 +1,4 @@ -local nnoremap = require('astronauta.keymap').nnoremap -nnoremap {'<leader>c', '<cmd>copen<cr>'} -nnoremap {'<leader>C', '<cmd>cexpr []|cclose<cr>'} -nnoremap {'<leader>l', '<cmd>lopen<cr>'} -nnoremap {'<leader>L', '<cmd>lexpr []|lclose<cr>'} +vim.keymap.nnoremap {'<leader>c', '<cmd>copen<cr>'} +vim.keymap.nnoremap {'<leader>C', '<cmd>cexpr []|cclose<cr>'} +vim.keymap.nnoremap {'<leader>l', '<cmd>lopen<cr>'} +vim.keymap.nnoremap {'<leader>L', '<cmd>lexpr []|lclose<cr>'} diff --git a/plugin/terminal.lua b/plugin/terminal.lua @@ -4,7 +4,7 @@ if not ok then end local ui = require('tms.u.ui') -local keymap = require('astronauta.keymap') +local keymap = vim.keymap local nnoremap = keymap.nnoremap local tnoremap = keymap.tnoremap nnoremap {'<leader>tl', function() terminal.interactive() end} diff --git a/plugin/unimpaired.lua b/plugin/unimpaired.lua @@ -1,47 +1,45 @@ -local nmap = require('astronauta.keymap').nmap - -- remap ] and [ -nmap {'>q', ']q'} -nmap {'>!', ']q'} -nmap {'<!', '[q'} -nmap {'<q', '[q'} -nmap {'>Q', ']Q'} -nmap {'<Q', '[Q'} -nmap {'>a', ']a'} -nmap {'<a', '[a'} -nmap {'>A', ']A'} -nmap {'<A', '[A'} -nmap {'>b', ']b'} -nmap {'<b', '[b'} -nmap {'>B', ']B'} -nmap {'<B', '[B'} -nmap {'>l', ']l'} -nmap {'>=', ']l'} -nmap {'<l', '[l'} -nmap {'<=', '[l'} -nmap {'>L', ']L'} -nmap {'<L', '[L'} -nmap {'>t', ']t'} -nmap {'<t', '[t'} -nmap {'>T', ']T'} -nmap {'<T', '[T'} -nmap {'>s', ']s'} -nmap {'<s', '[s'} -nmap {'>S', ']S'} -nmap {'<S', '[S'} -nmap {'>f', ']f'} -nmap {'<f', '[f'} -nmap {'>e', ']e'} -nmap {'<e', '[e'} -nmap {'>x', ']x'} -nmap {'>x', ']x'} -nmap {'<x', '[x'} -nmap {'<x', '[x'} -nmap {'>u', ']u'} -nmap {'>u', ']u'} -nmap {'<u', '[u'} -nmap {'<u', '[u'} -nmap {'>y', ']y'} -nmap {'>y', ']y'} -nmap {'<y', '[y'} -nmap {'<y', '[y'} +vim.keymap.nmap {'>q', ']q'} +vim.keymap.nmap {'>!', ']q'} +vim.keymap.nmap {'<!', '[q'} +vim.keymap.nmap {'<q', '[q'} +vim.keymap.nmap {'>Q', ']Q'} +vim.keymap.nmap {'<Q', '[Q'} +vim.keymap.nmap {'>a', ']a'} +vim.keymap.nmap {'<a', '[a'} +vim.keymap.nmap {'>A', ']A'} +vim.keymap.nmap {'<A', '[A'} +vim.keymap.nmap {'>b', ']b'} +vim.keymap.nmap {'<b', '[b'} +vim.keymap.nmap {'>B', ']B'} +vim.keymap.nmap {'<B', '[B'} +vim.keymap.nmap {'>l', ']l'} +vim.keymap.nmap {'>=', ']l'} +vim.keymap.nmap {'<l', '[l'} +vim.keymap.nmap {'<=', '[l'} +vim.keymap.nmap {'>L', ']L'} +vim.keymap.nmap {'<L', '[L'} +vim.keymap.nmap {'>t', ']t'} +vim.keymap.nmap {'<t', '[t'} +vim.keymap.nmap {'>T', ']T'} +vim.keymap.nmap {'<T', '[T'} +vim.keymap.nmap {'>s', ']s'} +vim.keymap.nmap {'<s', '[s'} +vim.keymap.nmap {'>S', ']S'} +vim.keymap.nmap {'<S', '[S'} +vim.keymap.nmap {'>f', ']f'} +vim.keymap.nmap {'<f', '[f'} +vim.keymap.nmap {'>e', ']e'} +vim.keymap.nmap {'<e', '[e'} +vim.keymap.nmap {'>x', ']x'} +vim.keymap.nmap {'>x', ']x'} +vim.keymap.nmap {'<x', '[x'} +vim.keymap.nmap {'<x', '[x'} +vim.keymap.nmap {'>u', ']u'} +vim.keymap.nmap {'>u', ']u'} +vim.keymap.nmap {'<u', '[u'} +vim.keymap.nmap {'<u', '[u'} +vim.keymap.nmap {'>y', ']y'} +vim.keymap.nmap {'>y', ']y'} +vim.keymap.nmap {'<y', '[y'} +vim.keymap.nmap {'<y', '[y'}