neovim

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

commit 0d79443370b0bcd0ef6d71622ce460aab116a7e5
parent a6f0038b149bd50c8fc481b3f2bbe4171a2643cf
Author: Tomas Nemec <nemi@skaut.cz>
Date:   Thu, 14 Apr 2022 07:39:58 +0200

major update

Diffstat:
Mafter/plugin/aerial.lua | 11++---------
Aafter/plugin/animate.lua | 10++++++++++
Aafter/plugin/autopairs.lua | 5+++++
Aafter/plugin/beacon.lua | 4++++
Aafter/plugin/colors.lua | 12++++++++++++
Aafter/plugin/cryoline.lua | 12++++++++++++
Aafter/plugin/dadbod.lua | 3+++
Mafter/plugin/dap.lua | 30++++++++++--------------------
Aafter/plugin/dressing.lua | 4++++
Aafter/plugin/fugitive.lua | 5+++++
Aafter/plugin/git-worktree.lua | 3+++
Aafter/plugin/git.lua | 4++++
Mafter/plugin/gitsigns.lua | 14++++++++++++++
Aafter/plugin/hexen.lua | 7+++++++
Aafter/plugin/hi-pairs.lua | 22++++++++++++++++++++++
Aafter/plugin/leap.lua | 4++++
Aafter/plugin/neoscroll.lua | 13+++++++++++++
Aafter/plugin/notify.lua | 3+++
Aafter/plugin/sideways.lua | 14++++++++++++++
Mafter/plugin/telescope.lua | 48++++++++++++++++++++++++++++++++++++++++++++----
Aafter/plugin/trans.lua | 2++
Aafter/plugin/ts-autotag.lua | 2++
Aafter/plugin/undotree.lua | 4++++
Aafter/plugin/zen.lua | 4++++
Aafter/plugin/zk.lua | 23+++++++++++++++++++++++
Minit.lua | 155++-----------------------------------------------------------------------------
Alua/tms/first_load.lua | 16++++++++++++++++
Mlua/tms/lsp/init.lua | 98++++++++++++++++++++++++++++++++-----------------------------------------------
Mlua/tms/p/hexen.lua | 2+-
Mlua/tms/p/telescope.lua | 56+++++++++++++++++++++++++++-----------------------------
Dlua/tms/p/zk.lua | 33---------------------------------
Mlua/tms/plugins.lua | 379+++++++++++--------------------------------------------------------------------
Aplugin/autocmd.lua | 6++++++
Dplugin/hexen.lua | 5-----
Aplugin/keymap.lua | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aplugin/options.lua | 45+++++++++++++++++++++++++++++++++++++++++++++
Mplugin/trans.lua | 2++
37 files changed, 489 insertions(+), 639 deletions(-)

diff --git a/after/plugin/aerial.lua b/after/plugin/aerial.lua @@ -1,12 +1,5 @@ if not pcall(require, 'aerial') then return end local aerial = require('aerial') -aerial.setup({}) - -require('tms.lsp').add_attach({ - fn = function(client, bufnr) aerial.on_attach(client, bufnr) end, -}) - -require('telescope').load_extension('aerial') -vim.keymap.set('n', '<space>r', require('tms.p.telescope').aerial, - { noremap = true }) +vim.g.aerial = { backends = { 'lsp', 'treesitter' }, highlight_on_jump = 0 } +aerial.setup() diff --git a/after/plugin/animate.lua b/after/plugin/animate.lua @@ -0,0 +1,10 @@ + if not vim.g['animate#loaded'] then return end + vim.cmd('let g:animate#duration = 100.0') + vim.keymap.set('n', '<c-up>', ':call animate#window_delta_height(10)<cr>', { silent = true }) + vim.keymap.set('n', '<c-down>', ':call animate#window_delta_height(-10)<cr>', { silent = true }) + vim.keymap.set('n', '<c-left>', ':call animate#window_delta_width(-10)<cr>', { silent = true }) + vim.keymap.set('n', '<c-right>', ':call animate#window_delta_width(10)<cr>', { silent = true }) + vim.keymap.set('n', '<s-up>', ':call animate#window_delta_height(1)<cr>', { silent = true }) + vim.keymap.set('n', '<s-down>', ':call animate#window_delta_height(-1)<cr>', { silent = true }) + vim.keymap.set('n', '<s-left>', ':call animate#window_delta_width(-1)<cr>', { silent = true }) + vim.keymap.set('n', '<s-right>', ':call animate#window_delta_width(1)<cr>', { silent = true }) diff --git a/after/plugin/autopairs.lua b/after/plugin/autopairs.lua @@ -0,0 +1,5 @@ + if not pcall(require, 'nvim-autopairs') then return end + require('nvim-autopairs').setup({ disable_filetype = { 'TelescopePrompt', 'vim' } }) + -- local cmp_autopairs = require('nvim-autopairs.completion.cmp') + -- local cmp = require('cmp') + -- cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done({map_char = {tex = ''}})) diff --git a/after/plugin/beacon.lua b/after/plugin/beacon.lua @@ -0,0 +1,4 @@ +if not vim.g.beacon_loaded then return end + +vim.keymap.set('n', '*', '*:Beacon<cr>') +vim.keymap.set('n', '#', '#:Beacon<cr>') diff --git a/after/plugin/colors.lua b/after/plugin/colors.lua @@ -0,0 +1,12 @@ + if pcall(require, 'colorizer') then + require'colorizer'.setup({ 'css', 'scss', 'less' }, { + RGB = true, -- #RGB hex codes + RRGGBB = true, -- #RRGGBB hex codes + names = true, -- "Name" codes like Blue + RRGGBBAA = true, -- #RRGGBBAA hex codes + rgb_fn = true, -- CSS rgb() and rgba() functions + hsl_fn = true, -- CSS hsl() and hsla() functions + css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB + css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn + }) + end diff --git a/after/plugin/cryoline.lua b/after/plugin/cryoline.lua @@ -0,0 +1,12 @@ +if not pcall(require, 'cryoline') then return end + +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, +} diff --git a/after/plugin/dadbod.lua b/after/plugin/dadbod.lua @@ -0,0 +1,3 @@ +if pcall(require, 'vim-dadbod-completion') then + vim.cmd [[autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })]] +end diff --git a/after/plugin/dap.lua b/after/plugin/dap.lua @@ -9,29 +9,16 @@ local cpp = function(dap) name = 'lldb', } - dap.configurations.cpp = { - { - type = 'cpp', - request = 'launch', - name = 'Launch File', - program = '${file}', - }, - } + dap.configurations.cpp = { { type = 'cpp', request = 'launch', name = 'Launch File', program = '${file}' } } end local dart = function(dap) - dap.defaults.fallback.external_terminal = { - command = '/usr/bin/alacritty', - args = { '-e' }, - } + dap.defaults.fallback.external_terminal = { command = '/usr/bin/alacritty', args = { '-e' } } dap.adapters.dart = { type = 'executable', command = 'node', - args = { - os.getenv('HOME') .. '/downloads/Dart-Code/out/dist/debug.js', - 'dart', - }, + args = { os.getenv('HOME') .. '/downloads/Dart-Code/out/dist/debug.js', 'dart' }, } dap.configurations.dart = { @@ -66,9 +53,8 @@ local function lua(dap) }, } - dap.adapters.nlua = function(callback, config) - callback({ type = 'server', host = config.host, port = config.port }) - end + dap.adapters.nlua = + function(callback, config) callback({ type = 'server', host = config.host, port = config.port }) end end local dap = require('dap') @@ -76,4 +62,8 @@ local dap = require('dap') -- dart(dap) lua(dap) -if pcall(require, 'dapui') then require('dapui').setup() end +local has_dapui, dapui = pcall(require, 'dapui') +if has_dapui then dapui.setup() end + +local has_dapvt, dapvt = pcall(require, 'nvim-dap-virtual-text') +if has_dapvt then dapvt.setup() end diff --git a/after/plugin/dressing.lua b/after/plugin/dressing.lua @@ -0,0 +1,4 @@ + if not pcall(require, 'dressing') then return end + require('dressing').setup({ + select = { backend = { 'telescope', 'builtin' }, telescope = require('telescope.themes').get_dropdown() }, + }) diff --git a/after/plugin/fugitive.lua b/after/plugin/fugitive.lua @@ -0,0 +1,5 @@ +if not vim.g.loaded_fugitive then return end + +vim.keymap.set('n', '<leader>gg', '<cmd>G<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>gc', '<cmd>G commit<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>gb', '<cmd>Git blame<cr>', { noremap = true }) diff --git a/after/plugin/git-worktree.lua b/after/plugin/git-worktree.lua @@ -0,0 +1,3 @@ +if not pcall(require, 'git-worktree') then return end + +require('git-worktree').setup() diff --git a/after/plugin/git.lua b/after/plugin/git.lua @@ -0,0 +1,4 @@ +if vim.g.loaded_git_messenger == 1 then + vim.g.git_messenger_floating_win_opts = { border = 'single' } + vim.keymap.set('n', '<leader>gm', '<plug>(git-messenger)', { noremap = true }) +end diff --git a/after/plugin/gitsigns.lua b/after/plugin/gitsigns.lua @@ -50,3 +50,17 @@ require('gitsigns').setup { keymaps = {}, } +vim.keymap.set('n', '>c', function() require('gitsigns').next_hunk() end) +vim.keymap.set('n', '>[', function() require('gitsigns').next_hunk() end) +vim.keymap.set('n', '<c', function() require('gitsigns').prev_hunk() end) +vim.keymap.set('n', '<[', function() require('gitsigns').prev_hunk() end) +vim.keymap.set('n', '<leader>hs', function() require('gitsigns').stage_hunk() end) +vim.keymap.set('n', '<leader>hu', function() require('gitsigns').undo_stage_hunk() end) +vim.keymap.set('n', '<leader>hr', function() require('gitsigns').reset_hunk() end) +vim.keymap.set('n', '<leader>hR', function() require('gitsigns').reset_buffer() end) +vim.keymap.set('n', '<leader>hp', function() require('gitsigns').preview_hunk() end) +vim.keymap.set('n', '<leader>hb', function() require('gitsigns').toggle_current_line_blame() end) +vim.keymap.set('n', '<leader>hl', function() require('gitsigns').toggle_linehl() end) +vim.keymap.set('n', '<leader>hn', function() require('gitsigns').toggle_numhl() end) +vim.keymap.set('o', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') +vim.keymap.set('x', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') diff --git a/after/plugin/hexen.lua b/after/plugin/hexen.lua @@ -0,0 +1,7 @@ +if not pcall(require, 'tms.p.hexen') then return end + +-- TODO Arguments andrange passed +vim.api.nvim_create_user_command('HexEncode', require('tms.p.hexen').encode, { range = true }) +vim.api.nvim_create_user_command('HexDecode', require('tms.p.hexen').decode, { range = true }) +-- vim.cmd [[command! -range HexEncode lua require('tms.p.hexen').encode()]] +-- vim.cmd [[command! -range HexDecode lua require('tms.p.hexen').decode()]] diff --git a/after/plugin/hi-pairs.lua b/after/plugin/hi-pairs.lua @@ -0,0 +1,22 @@ +if not vim.g.loaded_hiPairs then return end + +vim.g.loaded_matchparen = 1 +vim.g.hiPairs_timeout = 5 +vim.g.hiPairs_hl_matchPair = { + ['term'] = 'underline,bold', + ['cterm'] = 'bold', + ['ctermfg'] = 'none', + ['ctermbg'] = 'none', + ['guifg'] = 'none', + ['guibg'] = 'none', + ['gui'] = 'bold', +} +vim.g.hiPairs_hl_unmatchPair = { + ['term'] = 'underline,bold', + ['cterm'] = 'bold', + ['ctermfg'] = 'none', + ['ctermbg'] = 'none', + ['guifg'] = 'none', + ['guibg'] = 'none', + ['gui'] = 'bold', +} diff --git a/after/plugin/leap.lua b/after/plugin/leap.lua @@ -0,0 +1,4 @@ +if not pcall(require, 'leap') then return end + +require('leap').set_default_keymaps() +vim.keymap.set('n', 'gw', '<Plug>(leap-cross-window)') diff --git a/after/plugin/neoscroll.lua b/after/plugin/neoscroll.lua @@ -0,0 +1,13 @@ +if not pcall(require,'neoscroll')then return end + +require('neoscroll').setup({ mappings = { '<C-u>', '<C-d>', '<C-b>', '<C-f>', 'zt', 'zz', 'zb' } }) +local t = {} +-- Syntax: t[keys] = {function , {function arguments}} +t['<C-u>'] = { 'scroll', { '-vim.wo.scroll', 'true', '80' } } +t['<C-d>'] = { 'scroll', { 'vim.wo.scroll', 'true', '80' } } +t['<C-b>'] = { 'scroll', { '-vim.api.nvim_win_get_height(0)', 'true', '100' } } +t['<C-f>'] = { 'scroll', { 'vim.api.nvim_win_get_height(0)', 'true', '100' } } +t['zt'] = { 'zt', { '100' } } +t['zz'] = { 'zz', { '100' } } +t['zb'] = { 'zb', { '100' } } +require('neoscroll.config').set_mappings(t) diff --git a/after/plugin/notify.lua b/after/plugin/notify.lua @@ -0,0 +1,3 @@ + if not pcall(require, 'notify') then return end + require('notify').setup({ on_open = function(win) vim.api.nvim_win_set_config(win, { focusable = false }) end }) + vim.keymap.set('n', '<leader>N', require('notify').dismiss, { noremap = true }) diff --git a/after/plugin/sideways.lua b/after/plugin/sideways.lua @@ -0,0 +1,14 @@ +if not vim.g.loaded_sideways then return end + +vim.keymap.set('n', '<c-h>', '<cmd>SidewaysLeft<cr>', { noremap = true }) +vim.keymap.set('n', '<c-l>', '<cmd>SidewaysRight<cr>', { noremap = true }) +vim.keymap.set('o', 'aa', '<Plug>SidewaysArgumentTextobjA') +vim.keymap.set('o', 'a.', '<Plug>SidewaysArgumentTextobjA') +vim.keymap.set('x', 'aa', '<Plug>SidewaysArgumentTextobjA') +vim.keymap.set('x', 'a.', '<Plug>SidewaysArgumentTextobjA') +vim.keymap.set('o', 'ia', '<Plug>SidewaysArgumentTextobjI') +vim.keymap.set('x', 'ia', '<Plug>SidewaysArgumentTextobjI') +vim.keymap.set('n', '<leader>ah', '<Plug>SidewaysArgumentInsertBefore') +vim.keymap.set('n', '<leader>al', '<Plug>SidewaysArgumentAppendAfter') +vim.keymap.set('n', '<leader>aH', '<Plug>SidewaysArgumentInsertFirst') +vim.keymap.set('n', '<leader>aL', '<Plug>SidewaysArgumentAppendLast') diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua @@ -1,9 +1,10 @@ if not pcall(require, 'telescope') then return end +local telescope = require('telescope') local actions = require('telescope.actions') local action_generate = require('telescope.actions.generate') -require('telescope').setup { +telescope.setup { defaults = { mappings = { i = { @@ -17,7 +18,46 @@ require('telescope').setup { }, }, }, - extensions = { - fzy_native = { override_generic_sorter = false, override_file_sorter = true }, - }, + extensions = { fzy_native = { override_generic_sorter = false, override_file_sorter = true } }, } + +-- extensions +_ = telescope.load_extension('fzy_native') +_ = telescope.load_extension('dap') +_ = telescope.load_extension('media_files') +_ = telescope.load_extension('aerial') +_ = telescope.load_extension('zk') +_ = telescope.load_extension('git_worktree') + +-- TODO(tms) 13.04.22: Hmm hmm +vim.cmd [[packadd packer.nvim]] +require('packer').init() +_ = telescope.load_extension('packer') + +local map = function(mode, lhs, picker, opts) + vim.keymap.set(mode, lhs, string.format('<cmd>lua require("tms.p.telescope")["%s"]() <cr>', picker), opts) +end + +local opts = { noremap = true } +map('n', '<space>h', 'help_tags', opts) +map('n', '<space>d', 'find_files', opts) +map('n', '<space>D', 'find_files', opts) +map('n', '<space>g', 'git_files', opts) +map('n', '<space>b', 'buffers', opts) +map('n', '<space>l', 'lines', opts) +map('n', '<space>e', 'grep_string', opts) +map('n', '<space>c', 'git_status', opts) +map('n', '<space>q', 'quickfix', opts) +map('n', '<space>k', 'keymaps', opts) +map('n', '<space>m', 'man_pages', opts) +map('n', '<space>o', 'oldfiles', opts) +map('n', '<space>t', 'treesitter', opts) + +map('n', '<space>p', 'packer', opts) +map('n', '<space>P', 'reloader', opts) +map('n', '<space>M', 'media_files', opts) +map('n', '<space>r', 'aerial', opts) +map('n', '<space>wo', 'git_worktrees', opts) +map('n', '<space>wi', 'create_git_worktree', opts) + +map('n', '<space>n', 'edit_neovim', opts) diff --git a/after/plugin/trans.lua b/after/plugin/trans.lua @@ -0,0 +1,2 @@ + vim.keymap.set('x', 'mtt', function() require('trans').translate() end) + vim.keymap.set('x', 'mtc', function() require('trans').translate('cs') end) diff --git a/after/plugin/ts-autotag.lua b/after/plugin/ts-autotag.lua @@ -0,0 +1,2 @@ + if not pcall(require, 'nvim-ts-autotag') then return end + require('nvim-ts-autotag').setup({}) diff --git a/after/plugin/undotree.lua b/after/plugin/undotree.lua @@ -0,0 +1,4 @@ + if not vim.g.loaded_undotree then return end + vim.g.undotree_WindowLayout = 2 + vim.g.undotree_SplitWidth = 50 + vim.keymap.set('n', '<F5>', '<cmd>UndotreeToggle<cr>', { noremap = true }) diff --git a/after/plugin/zen.lua b/after/plugin/zen.lua @@ -0,0 +1,4 @@ +if not pcall(require,'zen-mode')then return end + +require('zen-mode').setup {} +vim.keymap.set('n', '<leader>Z', '<cmd>ZenMode<cr>', { noremap = true }) diff --git a/after/plugin/zk.lua b/after/plugin/zk.lua @@ -0,0 +1,23 @@ +if not pcall(require, 'zk') then return end + +local opts = { noremap = true } +vim.keymap.set('n', '<leader>zc', '<cmd>ZkNew<cr>', opts) +vim.keymap.set('x', '<leader>zc', '<cmd>ZkNewFromTitleSelection<cr>', opts) +vim.keymap.set('n', '<space>zn', '<cmd>ZkNotes<cr>', opts) +vim.keymap.set('n', '<space>zt', '<cmd>ZkTags<cr>', opts) +vim.keymap.set('n', '<space>zl', '<cmd>ZkLinks<cr>', opts) +vim.keymap.set('n', '<space>zo', '<cmd>ZkNotes {orphan = true}<cr>', opts) + +-- local make_lsp_location = function() +-- local params = vim.lsp.util.make_range_params() +-- params.uri = params.textDocument.uri +-- params.textDocument = nil +-- return params +-- end + +-- M.new_link = function() +-- vim.ui.input('title', function(title) +-- local location = make_lsp_location() +-- require('zk').new(nil, {insertLinkAtLocation = location, title = title}) +-- end) +-- end diff --git a/init.lua b/init.lua @@ -1,158 +1,9 @@ -local install_path = vim.fn.stdpath('data') .. '/site/pack/packer' -local packer_path = install_path .. '/opt/packer.nvim' -if vim.fn.empty(vim.fn.glob(packer_path)) > 0 then - vim.api.nvim_command('!git clone --depth=1 https://github.com/wbthomason/packer.nvim ' .. packer_path) -end -local impatient_path = install_path .. '/start/impatient.nvim' -if vim.fn.empty(vim.fn.glob(impatient_path)) > 0 then - vim.api.nvim_command('!git clone --depth=1 https://github.com/lewis6991/impatient.nvim ' .. impatient_path) -end -local colorbuddy_path = install_path .. '/start/colorbuddy.nvim' -if vim.fn.empty(vim.fn.glob(colorbuddy_path)) > 0 then - vim.api.nvim_command('!git clone --depth=1 https://github.com/tjdevries/colorbuddy.nvim ' .. colorbuddy_path) -end +require('tms.first_load') --- Meta setup require('impatient') -- faster `require` -require('colorbuddy').colorscheme('my-default') - --- disable netrw -vim.g.loaded_netrw = true -vim.g.loaded_netrwPlugin = true --- OPTIONS --- external vimrc -vim.opt.exrc = true -vim.opt.secure = true --- utilsions -vim.opt.clipboard = 'unnamedplus' -vim.opt.completeopt = 'menu,menuone,noselect' -vim.opt.equalalways = false -vim.opt.grepprg = 'rg --vimgrep --no-heading --smart-case' -vim.opt.grepformat = '%f:%l:%c:%m' -vim.opt.hidden = true -vim.opt.ignorecase = true -vim.opt.inccommand = 'split' -vim.opt.incsearch = true -vim.opt.mouse = 'a' -vim.opt.pumheight = 5 -vim.opt.shiftround = true -vim.opt.shortmess = vim.opt.shortmess + 'c' -vim.opt.showbreak = '">\\ "' -vim.opt.cursorline = true -vim.opt.showmode = false -vim.opt.smartcase = true -vim.opt.splitbelow = true -vim.opt.splitright = true -vim.opt.termguicolors = true -vim.opt.updatetime = 100 -vim.opt.writebackup = false -vim.opt.expandtab = true -vim.opt.shiftwidth = 2 -vim.opt.smartindent = true -vim.opt.softtabstop = -1 -vim.opt.swapfile = false -vim.opt.tabstop = 2 -vim.opt.undofile = true -vim.opt.foldlevel = 999 -vim.opt.foldmethod = 'indent' -vim.opt.foldtext = 'MyFoldText()' -vim.opt.list = false -vim.opt.laststatus = 3 -vim.opt.statusline = ' ' -vim.opt.ruler = false -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' +require('colorbuddy').colorscheme('my-default') --- MAPPINGS vim.g.mapleader = ',' --- forget visual -vim.keymap.set('n', 'Q', '<nop>') --- kb.nnoremap('<tab>', 'za') -vim.keymap.set('n', '<esc>', '<cmd>nohl<cr>', { silent = true }) -vim.keymap.set('n', 'gA', 'ga', { noremap = true }) -vim.keymap.set('n', 'Y', 'y$', { noremap = true }) -vim.keymap.set('n', 'n', 'nzzzv', { noremap = true }) -vim.keymap.set('n', 'N', 'Nzzzv', { noremap = true }) -vim.keymap.set('n', 'J', 'mzJ`z', { noremap = true }) -vim.keymap.set('i', ',', ',<c-g>u', { noremap = true }) -vim.keymap.set('i', '.', '.<c-g>u', { noremap = true }) -vim.keymap.set('i', '!', '!<c-g>u', { noremap = true }) -vim.keymap.set('i', '?', '?<c-g>u', { noremap = true }) --- shortcuts -vim.keymap.set('n', '<leader>w', '<cmd>write<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>W', '<cmd>wall<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>e', '<cmd>edit<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>E', ':e %:h/', { noremap = true }) -vim.keymap.set('n', '<leader>q', '<cmd>quit<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>Q', '<cmd>quit!<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>M', '<cmd>messages<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>so', '<cmd>source<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>bo', '<cmd>BufOnly<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>bO', '<cmd>BufOnly!<cr>', { noremap = true }) --- window movement -vim.keymap.set('n', '<a-h>', '<c-w>h', { noremap = true }) -vim.keymap.set('n', '<a-j>', '<c-w>j', { noremap = true }) -vim.keymap.set('n', '<a-k>', '<c-w>k', { noremap = true }) -vim.keymap.set('n', '<a-l>', '<c-w>l', { noremap = true }) --- window movement in terminal -vim.keymap.set('t', '<a-l>', '<c-\\><c-n><c-w>l', { noremap = true }) -vim.keymap.set('t', '<a-j>', '<c-\\><c-n><c-w>j', { noremap = true }) -vim.keymap.set('t', '<a-k>', '<c-\\><c-n><c-w>k', { noremap = true }) -vim.keymap.set('t', '<a-h>', '<c-\\><c-n><c-w>h', { noremap = true }) -vim.keymap.set('t', '<a-r>', '<c-\\><c-n>', { noremap = true }) --- window split -vim.keymap.set('n', '<c-w><c-v>', '<cmd>vnew<cr>', { noremap = true }) -vim.keymap.set('n', '<c-w><c-s>', '<cmd>new<cr>', { noremap = true }) --- line movement -vim.keymap.set('n', '<c-j>', ':m .+1<cr>==', { noremap = true }) -vim.keymap.set('n', '<c-k>', ':m .-2<cr>==', { noremap = true }) -vim.keymap.set('i', '<c-j>', '<esc>:m .+1<cr>==', { noremap = true }) -vim.keymap.set('i', '<c-k>', '<esc>:m .-2<cr>==', { noremap = true }) -vim.keymap.set('v', '<c-j>', ':m \'>+1<cr>gv=gv', { noremap = true }) -vim.keymap.set('v', '<c-k>', ':m \'<-2<cr>gv=gv', { noremap = true }) --- quickfix/loclist -vim.keymap.set('n', '<leader>c', '<cmd>call ToggleList("Quickfix List", "c")<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>C', '<cmd>cexpr []|cclose<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>l', '<cmd>call ToggleList("Location List", "l")<cr>', { noremap = true }) -vim.keymap.set('n', '<leader>L', '<cmd>lexpr []|lclose<cr>', { noremap = true }) --- fold -vim.keymap.set('n', 'zH', 'zM', { noremap = true }) -vim.keymap.set('n', 'zh', 'zm', { noremap = true }) -vim.keymap.set('n', 'zj', 'zo', { noremap = true }) -vim.keymap.set('n', 'zJ', 'zO', { noremap = true }) -vim.keymap.set('n', 'zk', 'zc', { noremap = true }) -vim.keymap.set('n', 'zK', 'zC', { noremap = true }) -vim.keymap.set('n', 'zl', 'zr', { noremap = true }) -vim.keymap.set('n', 'zL', 'zR', { noremap = true }) --- remap double usage -vim.keymap.set('n', 'y.', 'yy', { noremap = true }) -vim.keymap.set('n', 'z.', 'mmz.`m', { noremap = true }) -vim.keymap.set('n', 'd.', 'dd', { noremap = true }) -vim.keymap.set('n', 'c.', 'cc', { noremap = true }) -vim.keymap.set('n', 'g.', 'gg', { noremap = true }) -vim.keymap.set('n', 'v.', 'V', { noremap = true }) -vim.keymap.set('n', '=.', '==', { noremap = true }) -vim.keymap.set('n', 'gc.', 'gcc', { noremap = true }) - --- autocommands - -vim.api.nvim_create_autocmd('BufEnter', { pattern = 'vifm:*', command = 'startinsert' }) -vim.api.nvim_create_autocmd('WinEnter', { command = 'setlocal cursorline' }) -vim.api.nvim_create_autocmd('WinLeave', { command = 'setlocal nocursorline' }) -vim.api.nvim_create_autocmd('TextYankPost', - { pattern = '*', callback = function() require('vim.highlight').on_yank() end }) -vim.api.nvim_create_autocmd('ColorScheme', { callback = function() require('tms.u.reload').colors() end }) --- Load plugins -vim.cmd [[ packadd cfilter ]] -require('tms.plugins') -if vim.fn.empty(vim.fn.glob(vim.fn.stdpath('config') .. '/lua/packer_compiled.lua')) > 0 then - vim.cmd [[PackerSync]] -else - require('packer_compiled') -end +require('tms.lsp').setup() diff --git a/lua/tms/first_load.lua b/lua/tms/first_load.lua @@ -0,0 +1,16 @@ +local install_path = vim.fn.stdpath('data') .. '/site/pack/packer' + +local packer_path = install_path .. '/opt/packer.nvim' +if vim.fn.empty(vim.fn.glob(packer_path)) > 0 then + vim.api.nvim_command('!git clone --depth=1 https://github.com/wbthomason/packer.nvim ' .. packer_path) +end + +local impatient_path = install_path .. '/start/impatient.nvim' +if vim.fn.empty(vim.fn.glob(impatient_path)) > 0 then + vim.api.nvim_command('!git clone --depth=1 https://github.com/lewis6991/impatient.nvim ' .. impatient_path) +end + +local colorbuddy_path = install_path .. '/start/colorbuddy.nvim' +if vim.fn.empty(vim.fn.glob(colorbuddy_path)) > 0 then + vim.api.nvim_command('!git clone --depth=1 https://github.com/tjdevries/colorbuddy.nvim ' .. colorbuddy_path) +end diff --git a/lua/tms/lsp/init.lua b/lua/tms/lsp/init.lua @@ -1,8 +1,20 @@ local servers = require('tms.lsp.servers') -local M = {} +local on_attach = function(client, bufnr) + local lsp = vim.lsp + + local hh = lsp.with(lsp.handlers.hover, { border = 'single' }) + lsp.handlers['textDocument/hover'] = hh + + local sh = lsp.with(lsp.handlers.signature_help, { border = 'single' }) + lsp.handlers['textDocument/signatureHelp'] = sh + if client.resolved_capabilities.goto_definition then + vim.api.nvim_buf_set_option(bufnr, 'tagfunc', 'v:lua.vim.lsp.tagfunc') + end + -- if client.resolved_capabilities.document_formatting then + -- vim.api.nvim_buf_set_option(bufnr, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') + -- end -local keybind = function(client, bufnr) -- TODO(tms) 11.04.22: handle genericaly for all servers if (client.name == 'sumneko_lua') then client.resolved_capabilities.document_formatting = false @@ -27,31 +39,10 @@ local keybind = function(client, bufnr) -- symbols local t = require('tms.p.telescope') vim.keymap.set('n', 'gm', t.lsp_document_symbols, { silent = true, buffer = bufnr }) - vim.keymap.set('n', 'gM', t.b.lsp_dynamic_workspace_symbols, { silent = true, buffer = bufnr }) -end - -local attach_callbacks = {} + vim.keymap.set('n', 'gM', t.lsp_dynamic_workspace_symbols, { silent = true, buffer = bufnr }) -local on_attach = function(client, bufnr) - local lsp = vim.lsp - - local hh = lsp.with(lsp.handlers.hover, { border = 'single' }) - lsp.handlers['textDocument/hover'] = hh - - local sh = lsp.with(lsp.handlers.signature_help, { border = 'single' }) - lsp.handlers['textDocument/signatureHelp'] = sh - if client.resolved_capabilities.goto_definition then - vim.api.nvim_buf_set_option(bufnr, 'tagfunc', 'v:lua.vim.lsp.tagfunc') - end - -- if client.resolved_capabilities.document_formatting then - -- vim.api.nvim_buf_set_option(bufnr, 'formatexpr', 'v:lua.vim.lsp.formatexpr()') - -- end - for _, cb in ipairs(attach_callbacks) do - if cb.test(client, bufnr) then -- - cb.fn(client, bufnr) - end - end - keybind(client, bufnr) + local has_aerial, aerial = pcall(require, 'aerial') + if has_aerial then aerial.on_attach(client, bufnr) end end local capabilities = function() @@ -63,47 +54,38 @@ local capabilities = function() end end -local server_opts = function(name) +local server_opts = function(name, server) local opts = {} opts.on_attach = on_attach opts.capabilities = capabilities() - opts = servers.setup(name, opts) + opts = servers.setup(name, opts, server) return opts end -local add_server = function(name) - local opts = server_opts(name) - require('lspconfig')[name].setup(opts) -end - -M.setup = function() - attach_callbacks = {} - +local setup = function() -- LSP Installer - local lsp_installer = require('nvim-lsp-installer') - lsp_installer.on_server_ready(function(server) - local function finish(o) - server:setup(o) + local has_lspi, lsp_installer = pcall(require, 'nvim-lsp-installer') + if has_lspi then + lsp_installer.on_server_ready(function(server) + local opts = server_opts(server.name, server) + server:setup(opts) vim.cmd [[ do User LspAttachBuffers ]] - end - - local opts = {} - opts.on_attach = on_attach - opts.capabilities = capabilities() - opts = servers.setup(server.name, opts, server) - finish(opts) - end) + end) + end - -- Manual install - local manual_servers = { 'gdscript', 'dartls' } - for _, name in ipairs(manual_servers) do add_server(name) end - require('tms.p.zk').setup(server_opts('zk')) -end + -- LSP Config + local has_lspc, lsp_config = pcall(require, 'lspconfig') + if has_lspc then + local manual_servers = { 'gdscript', 'dartls' } + for _, name in ipairs(manual_servers) do + local opts = server_opts(name) + lsp_config[name].setup(opts) + end + end -M.add = function(name) add_server(name) end -M.add_attach = function(t) - if not t.test then t.test = function() return true end end - table.insert(attach_callbacks, t) + -- Manual + local has_zk, zk = pcall(require, 'zk') + if has_zk then zk.setup({ lsp = { config = server_opts('zk') } }) end end -return M +return { setup = setup, server_opts = server_opts } diff --git a/lua/tms/p/hexen.lua b/lua/tms/p/hexen.lua @@ -1,4 +1,4 @@ -local utf8 = require('lua-utf8') +local utf8 = require('luautf8') local api = vim.api local fn = vim.fn diff --git a/lua/tms/p/telescope.lua b/lua/tms/p/telescope.lua @@ -11,17 +11,11 @@ local extensions = telescope.extensions local M = {} -M.b = builtin -M.e = extensions - -local layouts = { +local layout = { dd = themes.get_dropdown(), dd_noprev = themes.get_dropdown({ previewer = false }), dd_large = themes.get_dropdown({ layout_config = { width = 120 } }), - dd_large_noprev = themes.get_dropdown { - layout_config = { width = 120 }, - previewer = false, - }, + dd_large_noprev = themes.get_dropdown { layout_config = { width = 120 }, previewer = false }, } M.mail_address = function() @@ -43,28 +37,32 @@ M.mail_address = function() end M.edit_neovim = function() - builtin.find_files(themes.get_dropdown { - prompt_title = 'dotfiles', - cwd = '~/.config/nvim', - previewer = false, - }) + builtin.find_files(themes.get_dropdown { prompt_title = 'dotfiles', cwd = '~/.config/nvim', previewer = false }) end -M.find_files = function() builtin.find_files(layouts.dd_large_noprev) end -M.spell_suggest = function() builtin.spell_suggest(layouts.dd) end -M.lines = - function() builtin.current_buffer_fuzzy_find(layouts.dd_large_noprev) end -M.reloader = function() builtin.reloader(layouts.dd_noprev) end -M.buffers = function() builtin.buffers(layouts.dd_large) end -M.snippets = function() extensions.snippets.snippets(layouts.dd_large) end +M.find_files = function() builtin.find_files(layout.dd_large_noprev) end +M.spell_suggest = function() builtin.spell_suggest(layout.dd) end +M.lines = function() builtin.current_buffer_fuzzy_find(layout.dd_large_noprev) end +M.reloader = function() builtin.reloader(layout.dd_noprev) end +M.buffers = function() builtin.buffers(layout.dd_large) end +M.keymaps = function() builtin.keymaps(layout.dd_large) end +M.quickfix = function() builtin.quickfix(layout.dd_large_noprev) end +M.lsp_code_actions = function() builtin.lsp_code_actions(layout.dd) end +M.lsp_document_symbols = function() builtin.lsp_document_symbols(layout.dd_large) end +M.lsp_definitions = function() builtin.lsp_definitions(layout.dd) end +M.aerial = function() extensions.aerial.aerial(layout.dd_large) end +M.packer = function() extensions.packer.packer() end +M.git_worktrees = function() extensions.git_worktree.git_worktrees() end +M.create_git_worktree = function() extensions.git_worktree.create_git_worktree() end +M.snippets = function() extensions.snippets.snippets(layout.dd_large) end M.media_files = function() extensions.media_files.media_files() end -M.aerial = function() extensions.aerial.aerial(layouts.dd_large) end -M.keymaps = function() builtin.keymaps(layouts.dd_large) end -M.quickfix = function() builtin.quickfix(layouts.dd_large_noprev) end -M.lsp_code_actions = function() builtin.lsp_code_actions(layouts.dd) end -M.lsp_document_symbols = function() - builtin.lsp_document_symbols(layouts.dd_large) -end -M.lsp_definitions = function() builtin.lsp_definitions(layouts.dd) end -return M +return setmetatable({}, { + __index = function(_, k) + if M[k] then + return M[k] + else + return require('telescope.builtin')[k] + end + end, +}) diff --git a/lua/tms/p/zk.lua b/lua/tms/p/zk.lua @@ -1,33 +0,0 @@ -local M = {} - -local keybind = function() - vim.keymap.set('n', '<leader>zc', '<cmd>ZkNew<cr>', {noremap = true}) - vim.keymap.set('x', '<leader>zc', '<cmd>ZkNewFromTitleSelection<cr>', {noremap = true}) - vim.keymap.set('n', '<space>zn', '<cmd>ZkNotes<cr>', {noremap = true}) - vim.keymap.set('n', '<space>zt', '<cmd>ZkTags<cr>', {noremap = true}) - vim.keymap.set('n', '<space>zl', '<cmd>ZkLinks<cr>', {noremap = true}) - vim.keymap.set('n', '<space>zo', '<cmd>ZkNotes {orphan = true}<cr>', {noremap = true}) -end - -M.setup = function(lsp_cfg) - lsp_cfg = lsp_cfg or {} - require('zk').setup({lsp = {config = lsp_cfg}}) - require('telescope').load_extension('zk') - keybind() -end - -local make_lsp_location = function() - local params = vim.lsp.util.make_range_params() - params.uri = params.textDocument.uri - params.textDocument = nil - return params -end - -M.new_link = function() - vim.ui.input('title', function(title) - local location = make_lsp_location() - require('zk').new(nil, {insertLinkAtLocation = location, title = title}) - end) -end - -return M diff --git a/lua/tms/plugins.lua b/lua/tms/plugins.lua @@ -20,14 +20,7 @@ return packer.startup({ use 'xxdavid/bez-diakritiky.vim' -- movements - use { - 'ggandor/leap.nvim', - config = function() - require('leap').set_default_keymaps() - - vim.keymap.set('n', 'gw', '<Plug>(leap-cross-window)') - end, - } + use { 'ggandor/leap.nvim' } -- editor use 'tpope/vim-repeat' @@ -35,231 +28,55 @@ return packer.startup({ use 'tpope/vim-surround' use 'chaoren/vim-wordmotion' -- word counts with _,.,-,... use 'romgrk/equal.operator' -- equal text object `lefthand = righthand` - use { 'godlygeek/tabular' } -- align - use { 'luukvbaal/stabilize.nvim' } - use { - 'windwp/nvim-autopairs', - config = function() - require('nvim-autopairs').setup({ disable_filetype = { 'TelescopePrompt', 'vim' } }) - -- local cmp_autopairs = require('nvim-autopairs.completion.cmp') - -- local cmp = require('cmp') - -- cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done({map_char = {tex = ''}})) - end, - } - use { 'numToStr/Comment.nvim' } - use { -- undo tree - 'mbbill/undotree', - setup = function() - vim.g.undotree_WindowLayout = 2 - vim.g.undotree_SplitWidth = 50 - end, - config = function() vim.keymap.set('n', '<F5>', '<cmd>UndotreeToggle<cr>', { noremap = true }) end, - } - use { -- animate height/width of window - 'camspiers/animate.vim', - config = function() - vim.cmd('let g:animate#duration = 100.0') - vim.keymap.set('n', '<c-up>', ':call animate#window_delta_height(10)<cr>', { silent = true }) - vim.keymap.set('n', '<c-down>', ':call animate#window_delta_height(-10)<cr>', { silent = true }) - vim.keymap.set('n', '<c-left>', ':call animate#window_delta_width(-10)<cr>', { silent = true }) - vim.keymap.set('n', '<c-right>', ':call animate#window_delta_width(10)<cr>', { silent = true }) - vim.keymap.set('n', '<s-up>', ':call animate#window_delta_height(1)<cr>', { silent = true }) - vim.keymap.set('n', '<s-down>', ':call animate#window_delta_height(-1)<cr>', { silent = true }) - vim.keymap.set('n', '<s-left>', ':call animate#window_delta_width(-1)<cr>', { silent = true }) - vim.keymap.set('n', '<s-right>', ':call animate#window_delta_width(1)<cr>', { silent = true }) - end, - } - use { -- colorize rgb format - 'norcalli/nvim-colorizer.lua', - config = function() - require'colorizer'.setup({ 'css', 'scss', 'less' }, { - RGB = true, -- #RGB hex codes - RRGGBB = true, -- #RRGGBB hex codes - names = true, -- "Name" codes like Blue - RRGGBBAA = true, -- #RRGGBBAA hex codes - rgb_fn = true, -- CSS rgb() and rgba() functions - hsl_fn = true, -- CSS hsl() and hsla() functions - css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB - css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn - }) - end, - } - use { -- beacon last cursor pos - 'danilamihailov/beacon.nvim', - config = function() - vim.keymap.set('n', '*', '*:Beacon<cr>') - vim.keymap.set('n', '#', '#:Beacon<cr>') - end, - } - use { -- highlight parens - 'Yggdroot/hiPairs', - setup = function() - vim.g.loaded_matchparen = 1 - vim.g.hiPairs_timeout = 5 - vim.g.hiPairs_hl_matchPair = { - ['term'] = 'underline,bold', - ['cterm'] = 'bold', - ['ctermfg'] = 'none', - ['ctermbg'] = 'none', - ['guifg'] = 'none', - ['guibg'] = 'none', - ['gui'] = 'bold', - } - vim.g.hiPairs_hl_unmatchPair = { - ['term'] = 'underline,bold', - ['cterm'] = 'bold', - ['ctermfg'] = 'none', - ['ctermbg'] = 'none', - ['guifg'] = 'none', - ['guibg'] = 'none', - ['gui'] = 'bold', - } - end, - } - use { - 'jandamm/cryoline.nvim', - after = { 'vim-fugitive' }, - 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 - 'karb94/neoscroll.nvim', - config = function() - require('neoscroll').setup({ mappings = { '<C-u>', '<C-d>', '<C-b>', '<C-f>', 'zt', 'zz', 'zb' } }) - local t = {} - -- Syntax: t[keys] = {function , {function arguments}} - t['<C-u>'] = { 'scroll', { '-vim.wo.scroll', 'true', '80' } } - t['<C-d>'] = { 'scroll', { 'vim.wo.scroll', 'true', '80' } } - t['<C-b>'] = { 'scroll', { '-vim.api.nvim_win_get_height(0)', 'true', '100' } } - t['<C-f>'] = { 'scroll', { 'vim.api.nvim_win_get_height(0)', 'true', '100' } } - t['zt'] = { 'zt', { '100' } } - t['zz'] = { 'zz', { '100' } } - t['zb'] = { 'zb', { '100' } } - require('neoscroll.config').set_mappings(t) - end, - } - use { -- parameter switch - 'AndrewRadev/sideways.vim', - config = function() - vim.keymap.set('n', '<c-h>', '<cmd>SidewaysLeft<cr>', { noremap = true }) - vim.keymap.set('n', '<c-l>', '<cmd>SidewaysRight<cr>', { noremap = true }) - vim.keymap.set('o', 'aa', '<Plug>SidewaysArgumentTextobjA') - vim.keymap.set('o', 'a.', '<Plug>SidewaysArgumentTextobjA') - vim.keymap.set('x', 'aa', '<Plug>SidewaysArgumentTextobjA') - vim.keymap.set('x', 'a.', '<Plug>SidewaysArgumentTextobjA') - vim.keymap.set('o', 'ia', '<Plug>SidewaysArgumentTextobjI') - vim.keymap.set('x', 'ia', '<Plug>SidewaysArgumentTextobjI') - vim.keymap.set('n', '<leader>ah', '<Plug>SidewaysArgumentInsertBefore') - vim.keymap.set('n', '<leader>al', '<Plug>SidewaysArgumentAppendAfter') - vim.keymap.set('n', '<leader>aH', '<Plug>SidewaysArgumentInsertFirst') - vim.keymap.set('n', '<leader>aL', '<Plug>SidewaysArgumentAppendLast') - end, - } - use { 'windwp/nvim-spectre' } + use 'godlygeek/tabular' -- align + use 'luukvbaal/stabilize.nvim' + use 'windwp/nvim-autopairs' + use 'numToStr/Comment.nvim' + use 'mbbill/undotree' + use 'camspiers/animate.vim' + use 'norcalli/nvim-colorizer.lua' + use 'danilamihailov/beacon.nvim' + use 'Yggdroot/hiPairs' + use 'jandamm/cryoline.nvim' + use 'karb94/neoscroll.nvim' + use 'AndrewRadev/sideways.vim' + use 'windwp/nvim-spectre' use { 'sidebar-nvim/sidebar.nvim', requires = { 'kyazdani42/nvim-web-devicons' } } -- Notes use { 'nvim-neorg/neorg', requires = { 'nvim-lua/plenary.nvim' } } - use { - 'mickael-menu/zk-nvim', - requires = { 'neovim/nvim-lspconfig' }, - -- after = { 'telescope.nvim' }, - -- config = function() require('tms.p.zk').setup() end, - } + use { 'mickael-menu/zk-nvim', requires = { 'neovim/nvim-lspconfig' } } -- quickfix list - use { 'kevinhwang91/nvim-bqf' } + use 'kevinhwang91/nvim-bqf' -- distraction use 'junegunn/limelight.vim' - use { - 'folke/zen-mode.nvim', - config = function() - require('zen-mode').setup {} - vim.keymap.set('n', '<leader>Z', '<cmd>ZenMode<cr>', { noremap = true }) - end, - } + use 'folke/zen-mode.nvim' -- how to vim use 'ThePrimeagen/vim-be-good' -- vcs - use { - 'lewis6991/gitsigns.nvim', - requires = { 'nvim-lua/plenary.nvim' }, - config = function() - vim.keymap.set('n', '>c', function() require('gitsigns').next_hunk() end) - vim.keymap.set('n', '>[', function() require('gitsigns').next_hunk() end) - vim.keymap.set('n', '<c', function() require('gitsigns').prev_hunk() end) - vim.keymap.set('n', '<[', function() require('gitsigns').prev_hunk() end) - vim.keymap.set('n', '<leader>hs', function() require('gitsigns').stage_hunk() end) - vim.keymap.set('n', '<leader>hu', function() require('gitsigns').undo_stage_hunk() end) - vim.keymap.set('n', '<leader>hr', function() require('gitsigns').reset_hunk() end) - vim.keymap.set('n', '<leader>hR', function() require('gitsigns').reset_buffer() end) - vim.keymap.set('n', '<leader>hp', function() require('gitsigns').preview_hunk() end) - vim.keymap.set('n', '<leader>hb', function() require('gitsigns').toggle_current_line_blame() end) - vim.keymap.set('n', '<leader>hl', function() require('gitsigns').toggle_linehl() end) - vim.keymap.set('n', '<leader>hn', function() require('gitsigns').toggle_numhl() end) - vim.keymap.set('o', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') - vim.keymap.set('x', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') - end, - } - use { -- view diffs for multiple files - 'sindrets/diffview.nvim', - config = function() -- - vim.keymap.set('n', '<leader>f', '<cmd>DiffViewOpen<cr>') - end, - } - use { -- git integration - 'tpope/vim-fugitive', - config = function() - vim.keymap.set('n', '<leader>gg', '<cmd>G<cr>', { noremap = true }) - vim.keymap.set('n', '<leader>gc', '<cmd>G commit<cr>', { noremap = true }) - vim.keymap.set('n', '<leader>gb', '<cmd>Git blame<cr>', { noremap = true }) - end, - } - use { -- git info for current line - 'rhysd/git-messenger.vim', - setup = function() vim.g.git_messenger_floating_win_opts = { border = 'single' } end, - config = function() vim.keymap.set('n', '<leader>gm', '<plug>(git-messenger)', { noremap = true }) end, - } - use { - 'ThePrimeagen/git-worktree.nvim', - after = { 'telescope.nvim' }, - config = function() - require('git-worktree').setup() - require('telescope').load_extension('git_worktree') - vim.keymap.set('n', '<space>wo', require('telescope').extensions.git_worktree.git_worktrees, { noremap = true }) - vim.keymap.set('n', '<space>wi', require('telescope').extensions.git_worktree.create_git_worktree, - { noremap = true }) - end, - } + use { 'lewis6991/gitsigns.nvim', requires = { 'nvim-lua/plenary.nvim' } } + use 'sindrets/diffview.nvim' + use 'tpope/vim-fugitive' + use 'rhysd/git-messenger.vim' + use 'ThePrimeagen/git-worktree.nvim' -- http - use { disable = true, 'nicwest/vim-http' } - use { 'NTBBloodbath/rest.nvim', ft = { 'http' }, requires = { 'nvim-lua/plenary.nvim' } } + use { 'NTBBloodbath/rest.nvim', requires = { 'nvim-lua/plenary.nvim' } } -- tasks - use { 'amirrezaask/actions.nvim' } + use 'amirrezaask/actions.nvim' -- filetype use 'tikhomirov/vim-glsl' - use { 'windwp/nvim-ts-autotag', ft = { 'html', 'php' }, config = function() require('nvim-ts-autotag').setup {} end } -- html tag autoclose/rename + use 'windwp/nvim-ts-autotag' use 'baskerville/vim-sxhkdrc' - use { 'dart-lang/dart-vim-plugin', ft = { 'dart' } } - + use 'dart-lang/dart-vim-plugin' -- snippets - use { 'L3MON4D3/luaSnip' } + use 'L3MON4D3/luaSnip' -- completion use { @@ -279,142 +96,48 @@ return packer.startup({ } -- ui - use { - 'stevearc/dressing.nvim', - config = function() - require('dressing').setup({ - select = { backend = { 'telescope', 'builtin' }, telescope = require('telescope.themes').get_dropdown() }, - }) - end, - } - use { - 'rcarriga/nvim-notify', - config = function() - -- vim.notify = require('notify') - require('notify').setup({ on_open = function(win) vim.api.nvim_win_set_config(win, { focusable = false }) end }) - vim.keymap.set('n', '<leader>N', require('notify').dismiss, { noremap = true }) - end, - } - - -- refactor - use { - disable = true, - 'ThePrimeagen/refactoring.nvim', - after = { 'nvim-treesitter' }, - requires = { 'nvim-lua/plenary.nvim' }, - } + use 'stevearc/dressing.nvim' + use 'rcarriga/nvim-notify' -- lsp - use { - 'neovim/nvim-lspconfig', - after = { 'nvim-lsp-installer', 'lua-dev.nvim', 'telescope.nvim' }, - config = function() require('tms.lsp').setup() end, - } - use { disable = true, 'ii14/lsp-command' } + use 'neovim/nvim-lspconfig' use 'williamboman/nvim-lsp-installer' - use { 'b0o/schemastore.nvim' } - use { 'folke/lua-dev.nvim' } - use { 'jose-elias-alvarez/null-ls.nvim', after = { 'nvim-lspconfig' }, requires = { 'nvim-lua/plenary.nvim' } } - use { - 'stevearc/aerial.nvim', - after = { 'telescope.nvim', 'nvim-treesitter' }, - setup = function() vim.g.aerial = { backends = { 'lsp', 'treesitter' }, highlight_on_jump = 0 } end, - } + use 'b0o/schemastore.nvim' + use 'folke/lua-dev.nvim' + use { 'jose-elias-alvarez/null-ls.nvim', requires = { 'nvim-lua/plenary.nvim' } } + use 'stevearc/aerial.nvim' -- dap - use { 'mfussenegger/nvim-dap' } - use { 'rcarriga/nvim-dap-ui', after = { 'nvim-dap' } } - use { - disable = true, - 'Pocco81/DAPInstall.nvim', - after = { 'nvim-dap' }, - requires = { 'jbyuki/one-small-step-for-vimkind' }, - config = function() - local dap_install = require('dap-install') - local dbg_list = require('dap-install.debuggers_list').debuggers - for debugger, _ in pairs(dbg_list) do dap_install.config(debugger, {}) end - end, - } - use { - 'theHamsta/nvim-dap-virtual-text', - after = { 'nvim-dap' }, - config = function() require('nvim-dap-virtual-text').setup(); end, - } + use 'mfussenegger/nvim-dap' + use 'rcarriga/nvim-dap-ui' + use 'theHamsta/nvim-dap-virtual-text' -- treesitter - use { 'nvim-treesitter/nvim-treesitter' } - use { 'nvim-treesitter/nvim-treesitter-textobjects', after = { 'nvim-treesitter' } } - use { 'nvim-treesitter/nvim-treesitter-refactor', after = { 'nvim-treesitter' } } - use { 'nvim-treesitter/playground', after = { 'nvim-treesitter' } } - use { 'JoosepAlviste/nvim-ts-context-commentstring', after = { 'nvim-treesitter' } } + use 'nvim-treesitter/nvim-treesitter' + use 'nvim-treesitter/nvim-treesitter-textobjects' + use 'nvim-treesitter/nvim-treesitter-refactor' + use 'nvim-treesitter/playground' + use 'JoosepAlviste/nvim-ts-context-commentstring' -- telescope use { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/popup.nvim', 'nvim-lua/plenary.nvim', 'kyazdani42/nvim-web-devicons' }, - config = function() - local tscope = require('tms.p.telescope') - local opts = { noremap = true } - vim.keymap.set('n', '<space>h', tscope.b.help_tags, opts) - vim.keymap.set('n', '<space>d', tscope.find_files, opts) - vim.keymap.set('n', '<space>D', tscope.b.find_files, opts) - vim.keymap.set('n', '<space>g', tscope.b.git_files, opts) - vim.keymap.set('n', '<space>b', tscope.buffers, opts) - vim.keymap.set('n', '<space>l', tscope.lines, opts) - vim.keymap.set('n', '<space>e', tscope.b.grep_string, opts) - vim.keymap.set('n', '<space>c', tscope.b.git_status, opts) - vim.keymap.set('n', '<space>q', tscope.quickfix, opts) - vim.keymap.set('n', '<space>k', tscope.keymaps, opts) - vim.keymap.set('n', '<space>m', tscope.b.man_pages, opts) - vim.keymap.set('n', '<space>p', tscope.e.packer.packer, opts) - vim.keymap.set('n', '<space>P', tscope.reloader, opts) - -- extensions - vim.keymap.set('n', '<space>M', tscope.media_files, opts) - -- custom - vim.keymap.set('n', '<space>n', tscope.edit_neovim, opts) - -- maybe - almost unsuedtelescope - vim.keymap.set('n', '<space>o', tscope.b.oldfiles, opts) - vim.keymap.set('n', '<space>t', tscope.b.treesitter, opts) - end, - } - use { 'nvim-telescope/telescope-packer.nvim', after = { 'telescope.nvim' } } - use { - 'nvim-telescope/telescope-fzy-native.nvim', - after = { 'telescope.nvim' }, - config = function() require('telescope').load_extension('fzy_native') end, - } - use { - 'nvim-telescope/telescope-dap.nvim', - after = { 'telescope.nvim' }, - config = function() require('telescope').load_extension('dap') end, - } - use { - 'nvim-telescope/telescope-media-files.nvim', - after = { 'telescope.nvim' }, - config = function() require('telescope').load_extension('media_files') end, } + use 'nvim-telescope/telescope-packer.nvim' + use 'nvim-telescope/telescope-fzy-native.nvim' + use 'nvim-telescope/telescope-dap.nvim' + use 'nvim-telescope/telescope-media-files.nvim' -- Godot - use { 'habamax/vim-godot' } + use 'habamax/vim-godot' -- personal - use { - 'GenesisTMS/trans.nvim', - config = function() - vim.keymap.set('x', 'mtt', function() require('trans').translate() end) - vim.keymap.set('x', 'mtc', function() require('trans').translate('cs') end) - end, - } + use 'GenesisTMS/trans.nvim' -- database - use { 'tpope/vim-dadbod' } - use { 'kristijanhusak/vim-dadbod-ui' } - use { - 'kristijanhusak/vim-dadbod-completion', - config = function() - vim.cmd [[autocmd FileType sql,mysql,plsql lua require('cmp').setup.buffer({ sources = {{ name = 'vim-dadbod-completion' }} })]] - end, - } + use 'tpope/vim-dadbod' + use 'kristijanhusak/vim-dadbod-ui' + use 'kristijanhusak/vim-dadbod-completion' end, - config = { compile_path = vim.fn.stdpath('config') .. '/lua/packer_compiled.lua' }, }) diff --git a/plugin/autocmd.lua b/plugin/autocmd.lua @@ -0,0 +1,6 @@ +vim.api.nvim_create_autocmd('BufEnter', { pattern = 'vifm:*', command = 'startinsert' }) +vim.api.nvim_create_autocmd('WinEnter', { command = 'setlocal cursorline' }) +vim.api.nvim_create_autocmd('WinLeave', { command = 'setlocal nocursorline' }) +vim.api.nvim_create_autocmd('TextYankPost', + { pattern = '*', callback = function() require('vim.highlight').on_yank() end }) +vim.api.nvim_create_autocmd('ColorScheme', { callback = function() require('tms.u.reload').colors() end }) diff --git a/plugin/hexen.lua b/plugin/hexen.lua @@ -1,5 +0,0 @@ --- TODO Arguments andrange passed -vim.api.nvim_create_user_command('HexEncode', require('tms.p.hexen').encode, {range = true}) -vim.api.nvim_create_user_command('HexDecode', require('tms.p.hexen').decode, {range = true}) --- vim.cmd [[command! -range HexEncode lua require('tms.p.hexen').encode()]] --- vim.cmd [[command! -range HexDecode lua require('tms.p.hexen').decode()]] diff --git a/plugin/keymap.lua b/plugin/keymap.lua @@ -0,0 +1,68 @@ +-- forget visual +vim.keymap.set('n', 'Q', '<nop>') +-- kb.nnoremap('<tab>', 'za') +vim.keymap.set('n', '<esc>', '<cmd>nohl<cr>', { silent = true }) +vim.keymap.set('n', 'gA', 'ga', { noremap = true }) +vim.keymap.set('n', 'Y', 'y$', { noremap = true }) +vim.keymap.set('n', 'n', 'nzzzv', { noremap = true }) +vim.keymap.set('n', 'N', 'Nzzzv', { noremap = true }) +vim.keymap.set('n', 'J', 'mzJ`z', { noremap = true }) +vim.keymap.set('i', ',', ',<c-g>u', { noremap = true }) +vim.keymap.set('i', '.', '.<c-g>u', { noremap = true }) +vim.keymap.set('i', '!', '!<c-g>u', { noremap = true }) +vim.keymap.set('i', '?', '?<c-g>u', { noremap = true }) +-- shortcuts +vim.keymap.set('n', '<leader>w', '<cmd>write<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>W', '<cmd>wall<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>e', '<cmd>edit<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>E', ':e %:h/', { noremap = true }) +vim.keymap.set('n', '<leader>q', '<cmd>quit<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>Q', '<cmd>quit!<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>M', '<cmd>messages<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>so', '<cmd>source<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>bo', '<cmd>BufOnly<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>bO', '<cmd>BufOnly!<cr>', { noremap = true }) +-- window movement +vim.keymap.set('n', '<a-h>', '<c-w>h', { noremap = true }) +vim.keymap.set('n', '<a-j>', '<c-w>j', { noremap = true }) +vim.keymap.set('n', '<a-k>', '<c-w>k', { noremap = true }) +vim.keymap.set('n', '<a-l>', '<c-w>l', { noremap = true }) +-- window movement in terminal +vim.keymap.set('t', '<a-l>', '<c-\\><c-n><c-w>l', { noremap = true }) +vim.keymap.set('t', '<a-j>', '<c-\\><c-n><c-w>j', { noremap = true }) +vim.keymap.set('t', '<a-k>', '<c-\\><c-n><c-w>k', { noremap = true }) +vim.keymap.set('t', '<a-h>', '<c-\\><c-n><c-w>h', { noremap = true }) +vim.keymap.set('t', '<a-r>', '<c-\\><c-n>', { noremap = true }) +-- window split +vim.keymap.set('n', '<c-w><c-v>', '<cmd>vnew<cr>', { noremap = true }) +vim.keymap.set('n', '<c-w><c-s>', '<cmd>new<cr>', { noremap = true }) +-- line movement +vim.keymap.set('n', '<c-j>', ':m .+1<cr>==', { noremap = true }) +vim.keymap.set('n', '<c-k>', ':m .-2<cr>==', { noremap = true }) +vim.keymap.set('i', '<c-j>', '<esc>:m .+1<cr>==', { noremap = true }) +vim.keymap.set('i', '<c-k>', '<esc>:m .-2<cr>==', { noremap = true }) +vim.keymap.set('v', '<c-j>', ':m \'>+1<cr>gv=gv', { noremap = true }) +vim.keymap.set('v', '<c-k>', ':m \'<-2<cr>gv=gv', { noremap = true }) +-- quickfix/loclist +vim.keymap.set('n', '<leader>c', '<cmd>call ToggleList("Quickfix List", "c")<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>C', '<cmd>cexpr []|cclose<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>l', '<cmd>call ToggleList("Location List", "l")<cr>', { noremap = true }) +vim.keymap.set('n', '<leader>L', '<cmd>lexpr []|lclose<cr>', { noremap = true }) +-- fold +vim.keymap.set('n', 'zH', 'zM', { noremap = true }) +vim.keymap.set('n', 'zh', 'zm', { noremap = true }) +vim.keymap.set('n', 'zj', 'zo', { noremap = true }) +vim.keymap.set('n', 'zJ', 'zO', { noremap = true }) +vim.keymap.set('n', 'zk', 'zc', { noremap = true }) +vim.keymap.set('n', 'zK', 'zC', { noremap = true }) +vim.keymap.set('n', 'zl', 'zr', { noremap = true }) +vim.keymap.set('n', 'zL', 'zR', { noremap = true }) +-- remap double usage +vim.keymap.set('n', 'y.', 'yy', { noremap = true }) +vim.keymap.set('n', 'z.', 'mmz.`m', { noremap = true }) +vim.keymap.set('n', 'd.', 'dd', { noremap = true }) +vim.keymap.set('n', 'c.', 'cc', { noremap = true }) +vim.keymap.set('n', 'g.', 'gg', { noremap = true }) +vim.keymap.set('n', 'v.', 'V', { noremap = true }) +vim.keymap.set('n', '=.', '==', { noremap = true }) +vim.keymap.set('n', 'gc.', 'gcc', { noremap = true }) diff --git a/plugin/options.lua b/plugin/options.lua @@ -0,0 +1,45 @@ +vim.opt.exrc = true +vim.opt.secure = true +-- utilsions +vim.opt.clipboard = 'unnamedplus' +vim.opt.completeopt = 'menu,menuone,noselect' +vim.opt.equalalways = false +vim.opt.grepprg = 'rg --vimgrep --no-heading --smart-case' +vim.opt.grepformat = '%f:%l:%c:%m' +vim.opt.hidden = true +vim.opt.ignorecase = true +vim.opt.inccommand = 'split' +vim.opt.incsearch = true +vim.opt.mouse = 'a' +vim.opt.pumheight = 5 +vim.opt.shiftround = true +vim.opt.shortmess = vim.opt.shortmess + 'c' +vim.opt.showbreak = '">\\ "' +vim.opt.cursorline = true +vim.opt.showmode = false +vim.opt.smartcase = true +vim.opt.splitbelow = true +vim.opt.splitright = true +vim.opt.termguicolors = true +vim.opt.updatetime = 100 +vim.opt.writebackup = false +vim.opt.expandtab = true +vim.opt.shiftwidth = 2 +vim.opt.smartindent = true +vim.opt.softtabstop = -1 +vim.opt.swapfile = false +vim.opt.tabstop = 2 +vim.opt.undofile = true +vim.opt.foldlevel = 999 +vim.opt.foldmethod = 'indent' +vim.opt.foldtext = 'MyFoldText()' +vim.opt.list = false +vim.opt.laststatus = 3 +vim.opt.statusline = ' ' +vim.opt.ruler = false +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' diff --git a/plugin/trans.lua b/plugin/trans.lua @@ -1,2 +1,4 @@ +if not pcall(require, 'trans') then return end + vim.keymap.set('x', 'mtt', function() require('trans').translate() end) vim.keymap.set('x', 'mtc', function() require('trans').translate('cs') end)