commit 0d79443370b0bcd0ef6d71622ce460aab116a7e5
parent a6f0038b149bd50c8fc481b3f2bbe4171a2643cf
Author: Tomas Nemec <nemi@skaut.cz>
Date: Thu, 14 Apr 2022 07:39:58 +0200
major update
Diffstat:
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)