vim: migrate plugin configuration to lazy.nvim
This commit is contained in:
parent
9611578728
commit
a00e28b031
25 changed files with 621 additions and 587 deletions
|
@ -1,5 +0,0 @@
|
||||||
local ok, colorizer = pcall(require, 'colorizer')
|
|
||||||
if ok and colorizer and vim.opt.termguicolors:get() then
|
|
||||||
colorizer.setup({'*'}, { mode = 'foreground' })
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
vim.keymap.set('n', '<leader>gs', '<cmd>tab Git<cr>')
|
|
||||||
vim.keymap.set('n', '<leader>gb', '<cmd>Git blame<cr>')
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
local ok, plugin = pcall(require, 'indent_blankline')
|
|
||||||
if not ok then return end
|
|
||||||
|
|
||||||
plugin.setup {
|
|
||||||
enabled = false,
|
|
||||||
}
|
|
||||||
|
|
||||||
-- show/hide indent guides
|
|
||||||
vim.keymap.set('n', '<leader>si', '<cmd>IndentBlanklineToggle<cr>')
|
|
||||||
|
|
|
@ -1,180 +0,0 @@
|
||||||
local ok, lualine = pcall(require, 'lualine')
|
|
||||||
if not ok or not lualine then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local MODE_MAP = {
|
|
||||||
['n'] = 'Normal ',
|
|
||||||
['no'] = 'O-Pend ',
|
|
||||||
['nov'] = 'O-Pend ',
|
|
||||||
['noV'] = 'O-Pend ',
|
|
||||||
['no'] = 'O-Pend ',
|
|
||||||
['niI'] = 'Normal ',
|
|
||||||
['niR'] = 'Normal ',
|
|
||||||
['niV'] = 'Normal ',
|
|
||||||
['nt'] = 'Normal ',
|
|
||||||
['ntT'] = 'Normal*',
|
|
||||||
['v'] = 'Visual ',
|
|
||||||
['vs'] = 'Visual ',
|
|
||||||
['V'] = 'V-Line ',
|
|
||||||
['Vs'] = 'V-Line ',
|
|
||||||
[''] = 'V-Block',
|
|
||||||
['s'] = 'V-Block',
|
|
||||||
['s'] = 'Select ',
|
|
||||||
['S'] = 'S-Line ',
|
|
||||||
[''] = 'S-Block',
|
|
||||||
['i'] = 'Insert ',
|
|
||||||
['ic'] = 'Insert ',
|
|
||||||
['ix'] = 'Insert ',
|
|
||||||
['R'] = 'Replace',
|
|
||||||
['Rc'] = 'Replace',
|
|
||||||
['Rx'] = 'Replace',
|
|
||||||
['Rv'] = 'V-Repl ',
|
|
||||||
['Rvc'] = 'V-Repl ',
|
|
||||||
['Rvx'] = 'V-Repl ',
|
|
||||||
['c'] = 'Command',
|
|
||||||
['cv'] = ' Ex ',
|
|
||||||
['ce'] = ' Ex ',
|
|
||||||
['r'] = 'Replace',
|
|
||||||
['rm'] = ' More ',
|
|
||||||
['r?'] = 'Confirm',
|
|
||||||
['!'] = ' Shell ',
|
|
||||||
['t'] = ' Term ',
|
|
||||||
}
|
|
||||||
|
|
||||||
local update_status = function(self, is_focused)
|
|
||||||
self.options.colored = is_focused
|
|
||||||
return self.super.update_status(self, is_focused)
|
|
||||||
end
|
|
||||||
|
|
||||||
local diff = require'lualine.components.diff':extend()
|
|
||||||
diff.update_status = update_status
|
|
||||||
|
|
||||||
local filetype = require'lualine.components.filetype':extend()
|
|
||||||
filetype.update_status = update_status
|
|
||||||
|
|
||||||
local window_is_at_least = function(width)
|
|
||||||
return function() return vim.fn.winwidth(0) > width end
|
|
||||||
end
|
|
||||||
|
|
||||||
local window_is_wide = window_is_at_least(80)
|
|
||||||
local window_is_medium = window_is_at_least(50)
|
|
||||||
|
|
||||||
local parts = {
|
|
||||||
paste = {
|
|
||||||
function() return '' end,
|
|
||||||
color = { bg = '#bbaa00' },
|
|
||||||
cond = function()
|
|
||||||
return vim.opt.paste:get()
|
|
||||||
end
|
|
||||||
},
|
|
||||||
|
|
||||||
mode = {
|
|
||||||
function()
|
|
||||||
local code = vim.api.nvim_get_mode().mode
|
|
||||||
return MODE_MAP[code] or code
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
visual_multi = function()
|
|
||||||
local ok, infos = pcall(vim.fn.VMInfos)
|
|
||||||
if not ok or not infos.status then return '' end
|
|
||||||
return infos.current .. '/' .. infos.total .. ' ' .. infos.status
|
|
||||||
end,
|
|
||||||
|
|
||||||
branch = {
|
|
||||||
'branch',
|
|
||||||
icon = '',
|
|
||||||
cond = window_is_medium,
|
|
||||||
},
|
|
||||||
|
|
||||||
status = {
|
|
||||||
function()
|
|
||||||
local flags = {}
|
|
||||||
if vim.bo.modified then
|
|
||||||
table.insert(flags, '+')
|
|
||||||
end
|
|
||||||
if vim.bo.modifiable == false or vim.bo.readonly == true then
|
|
||||||
table.insert(flags, 'RO')
|
|
||||||
end
|
|
||||||
return table.concat(flags, ' ')
|
|
||||||
end,
|
|
||||||
|
|
||||||
color = { fg = '#eee8d5' },
|
|
||||||
},
|
|
||||||
|
|
||||||
filename = {
|
|
||||||
function()
|
|
||||||
local shorten_path = function(path)
|
|
||||||
if window_is_wide() then
|
|
||||||
return path
|
|
||||||
elseif window_is_medium() then
|
|
||||||
return vim.fn.pathshorten(path) -- only first letter of directories
|
|
||||||
else
|
|
||||||
return vim.fn.fnamemodify(path, ':t') -- only tail
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return shorten_path(vim.fn.expand('%:~:.'))
|
|
||||||
end,
|
|
||||||
|
|
||||||
color = function()
|
|
||||||
if vim.bo.modified then
|
|
||||||
return { gui = 'italic' }
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
|
|
||||||
padding = { left = 1, right = 0},
|
|
||||||
},
|
|
||||||
|
|
||||||
filetype = {
|
|
||||||
filetype,
|
|
||||||
cond = window_is_medium,
|
|
||||||
},
|
|
||||||
|
|
||||||
fileformat = {
|
|
||||||
'fileformat',
|
|
||||||
cond = window_is_medium,
|
|
||||||
},
|
|
||||||
|
|
||||||
progress = {
|
|
||||||
function()
|
|
||||||
local chars = { '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' }
|
|
||||||
local current, total = vim.fn.line '.', vim.fn.line '$'
|
|
||||||
return chars[math.ceil(#chars * current / total)]
|
|
||||||
end,
|
|
||||||
padding = { left = 0, right = 1 },
|
|
||||||
cond = window_is_wide,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = { parts.visual_multi, parts.branch },
|
|
||||||
lualine_c = { parts.filename, parts.status },
|
|
||||||
lualine_x = { 'diagnostics', parts.filetype },
|
|
||||||
lualine_y = { parts.fileformat, parts.progress },
|
|
||||||
lualine_z = { 'location' },
|
|
||||||
}
|
|
||||||
|
|
||||||
lualine.setup {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
component_separators = { left = '', right = '' },
|
|
||||||
section_separators = { left = '', right = '' },
|
|
||||||
theme = 'solarized',
|
|
||||||
},
|
|
||||||
|
|
||||||
sections = vim.tbl_extend('force', inactive_sections, {
|
|
||||||
lualine_a = { parts.paste, parts.mode },
|
|
||||||
}),
|
|
||||||
|
|
||||||
inactive_sections = inactive_sections,
|
|
||||||
|
|
||||||
extensions = {
|
|
||||||
'fugitive',
|
|
||||||
'quickfix',
|
|
||||||
'nvim-tree',
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
local ok, nt = pcall(require, 'nvim-tree')
|
|
||||||
if not ok then return end
|
|
||||||
|
|
||||||
local on_attach = function(bufnr)
|
|
||||||
local api = require 'nvim-tree.api'
|
|
||||||
local opts = function(desc)
|
|
||||||
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, silent = true }
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set('n', 'l', api.node.open.edit, opts('open'))
|
|
||||||
vim.keymap.set('n', '<CR>', api.node.open.edit, opts('open'))
|
|
||||||
vim.keymap.set('n', 'o', api.node.open.edit, opts('open'))
|
|
||||||
vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts('close directory'))
|
|
||||||
end
|
|
||||||
|
|
||||||
nt.setup {
|
|
||||||
disable_netrw = true, -- replace netrw with nvim-tree
|
|
||||||
hijack_cursor = true, -- keep the cursor on begin of the filename
|
|
||||||
sync_root_with_cwd = true, -- watch for `DirChanged` and refresh the tree
|
|
||||||
on_attach = on_attach,
|
|
||||||
|
|
||||||
git = {
|
|
||||||
ignore = false, -- don't hide files from .gitignore
|
|
||||||
},
|
|
||||||
|
|
||||||
view = {
|
|
||||||
adaptive_size = true, -- resize the window based on the longest line
|
|
||||||
width = 35, -- a little wider than the default 30
|
|
||||||
},
|
|
||||||
|
|
||||||
filters = {
|
|
||||||
dotfiles = false, -- show files starting with a .
|
|
||||||
custom = { '^\\.git' }, -- don't show .git directory
|
|
||||||
},
|
|
||||||
|
|
||||||
renderer = {
|
|
||||||
add_trailing = true, -- add trailing / to folders
|
|
||||||
group_empty = true, -- folders that contain only one folder are grouped
|
|
||||||
highlight_git = true, -- enable highlight based on git attributes
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>nn', '<cmd>NvimTreeOpen<cr>')
|
|
||||||
vim.keymap.set('n', '<leader>nf', '<cmd>NvimTreeFindFile<cr>')
|
|
||||||
vim.keymap.set('n', '<leader>nc', '<cmd>NvimTreeClose<cr>')
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
local ok, solarized = pcall(require, 'solarized')
|
|
||||||
if ok and solarized then
|
|
||||||
vim.cmd [[colorscheme solarized]]
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
if vim.fn.exists('g:tabular_loaded') ~= 1 then return end
|
|
||||||
|
|
||||||
vim.cmd [[ AddTabularPattern! first_comma /^[^,]*\zs,/ ]]
|
|
||||||
vim.cmd [[ AddTabularPattern! first_colon /^[^:]*\zs:/ ]]
|
|
||||||
vim.cmd [[ AddTabularPattern! first_equal /^[^=]*\zs=/ ]]
|
|
||||||
|
|
|
@ -1,172 +0,0 @@
|
||||||
local has_telescope, telescope = pcall(require, 'telescope')
|
|
||||||
if not has_telescope then return end
|
|
||||||
|
|
||||||
local actions = require 'telescope.actions'
|
|
||||||
local actions_layout = require 'telescope.actions.layout'
|
|
||||||
|
|
||||||
local common_mappings = {
|
|
||||||
['<c-l>'] = actions_layout.cycle_layout_next,
|
|
||||||
['<c-o>'] = actions_layout.toggle_mirror,
|
|
||||||
['<c-q>'] = actions.smart_send_to_qflist + actions.open_qflist,
|
|
||||||
}
|
|
||||||
|
|
||||||
telescope.setup {
|
|
||||||
defaults = {
|
|
||||||
prompt_prefix = ' ❯ ',
|
|
||||||
selection_caret = ' ', -- Other ideas: ➔
|
|
||||||
multi_icon = ' ',
|
|
||||||
|
|
||||||
layout_strategy = 'flex',
|
|
||||||
layout_config = {
|
|
||||||
anchor = 'center',
|
|
||||||
width = 0.9,
|
|
||||||
height = 0.9,
|
|
||||||
|
|
||||||
flex = {
|
|
||||||
flip_columns = 130,
|
|
||||||
},
|
|
||||||
|
|
||||||
horizontal = {
|
|
||||||
preview_width = 0.5,
|
|
||||||
preview_cutoff = 130,
|
|
||||||
},
|
|
||||||
|
|
||||||
vertical = {
|
|
||||||
preview_height = 0.5,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
cycle_layout_list = {
|
|
||||||
{ layout_strategy = 'bottom_pane', layout_config = { width = 1, height = 0.4 }, },
|
|
||||||
'horizontal',
|
|
||||||
'vertical',
|
|
||||||
},
|
|
||||||
|
|
||||||
mappings = {
|
|
||||||
i = vim.tbl_extend('force', common_mappings, {
|
|
||||||
['<c-j>'] = actions.cycle_history_next,
|
|
||||||
['<c-k>'] = actions.cycle_history_prev,
|
|
||||||
}),
|
|
||||||
n = common_mappings,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
pickers = {
|
|
||||||
buffers = { prompt_title = ' Buffers ' },
|
|
||||||
find_files = { prompt_title = ' Files ' },
|
|
||||||
git_commits = { prompt_title = ' Commits ' },
|
|
||||||
help_tags = { prompt_title = ' Help tags ' },
|
|
||||||
keymaps = { prompt_title = ' Keymaps ' },
|
|
||||||
live_grep = { prompt_title = ' Live grep ' },
|
|
||||||
vim_options = { prompt_title = ' Vim options ' },
|
|
||||||
man_pages = { prompt_title = ' Man pages ' },
|
|
||||||
},
|
|
||||||
|
|
||||||
extensions = {
|
|
||||||
file_browser = {
|
|
||||||
theme = 'ivy',
|
|
||||||
mappings = {
|
|
||||||
n = {
|
|
||||||
-- normal mode mappings go here
|
|
||||||
},
|
|
||||||
i = {
|
|
||||||
-- insert mode mappings go here
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
local builtin = require 'telescope.builtin'
|
|
||||||
|
|
||||||
local selected_range = function()
|
|
||||||
local _, s_row, s_col, _ = unpack(vim.fn.getpos('v'))
|
|
||||||
local _, e_row, e_col, _ = unpack(vim.fn.getpos('.'))
|
|
||||||
|
|
||||||
local mode = vim.api.nvim_get_mode().mode
|
|
||||||
local visual_line = (mode == 'V' or mode == 'CTRL-V')
|
|
||||||
|
|
||||||
if s_row < e_row or (s_row == e_row and s_col <= e_col) then
|
|
||||||
if visual_line then s_col, e_col = 1, #vim.fn.getline(e_row) end
|
|
||||||
return s_row - 1, s_col - 1, e_row - 1, e_col
|
|
||||||
else
|
|
||||||
if visual_line then e_col, s_col = 1, #vim.fn.getline(s_row) end
|
|
||||||
return e_row - 1, e_col - 1, s_row - 1, s_col
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local selected_text = function()
|
|
||||||
local r0, c0, r1, c1 = selected_range()
|
|
||||||
return vim.fn.join(vim.api.nvim_buf_get_text(0, r0, c0, r1, c1, {}), '\n')
|
|
||||||
end
|
|
||||||
|
|
||||||
local custom = {
|
|
||||||
all_files = function()
|
|
||||||
builtin.find_files {
|
|
||||||
prompt_title = ' ALL Files ',
|
|
||||||
hidden = true,
|
|
||||||
no_ignore = true,
|
|
||||||
no_ignore_parent = true,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
|
|
||||||
dotfiles = function()
|
|
||||||
builtin.find_files {
|
|
||||||
prompt_title = ' Find dotfiles ',
|
|
||||||
cwd = '~/.dotfiles',
|
|
||||||
hidden = true,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
|
|
||||||
grep_visual = function()
|
|
||||||
local selection = selected_text()
|
|
||||||
builtin.grep_string {
|
|
||||||
prompt_title = string.format(' Grep: %s', selection),
|
|
||||||
search = selection,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
|
|
||||||
man_pages = function()
|
|
||||||
-- Fix for macOS Ventura onwards (macOS 13.x <-> Darwin 22.x).
|
|
||||||
-- See: https://github.com/nvim-telescope/telescope.nvim/issues/2326#issuecomment-1407502328
|
|
||||||
local uname = vim.loop.os_uname()
|
|
||||||
local sysname = string.lower(uname.sysname)
|
|
||||||
if sysname == "darwin" then
|
|
||||||
local major_version = tonumber(vim.fn.matchlist(uname.release, [[^\(\d\+\)\..*]])[2]) or 0
|
|
||||||
if major_version >= 22 then
|
|
||||||
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", "." } }
|
|
||||||
else
|
|
||||||
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", " " } }
|
|
||||||
end
|
|
||||||
elseif sysname == "freebsd" then
|
|
||||||
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", "." } }
|
|
||||||
else
|
|
||||||
builtin.man_pages { sections = { 'ALL' } }
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local map = vim.keymap.set
|
|
||||||
|
|
||||||
map('n', '<leader>fa', custom.all_files, { desc = ' [F]ind [A]ll Files in $PWD' })
|
|
||||||
map('n', '<leader>fb', builtin.buffers, { desc = ' [F]ind [B]uffers' })
|
|
||||||
map('n', '<leader>fc', builtin.git_commits, { desc = ' [F]ind [C]ommits' })
|
|
||||||
map('n', '<leader>fd', custom.dotfiles, { desc = ' [F]ind [D]otfiles' })
|
|
||||||
map('n', '<leader>ff', builtin.find_files, { desc = ' [F]ind [F]iles in $PWD' })
|
|
||||||
map('n', '<leader>fg', builtin.live_grep, { desc = ' [F]ind with [G]rep in $PWD' })
|
|
||||||
map('n', '<leader>fh', builtin.help_tags, { desc = ' [F]ind [H]elp tags' })
|
|
||||||
map('n', '<leader>fk', builtin.keymaps, { desc = ' [F]ind [K]eymaps' })
|
|
||||||
map('n', '<leader>fm', custom.man_pages, { desc = ' [F]ind [M]an pages' })
|
|
||||||
map('n', '<leader>fo', builtin.vim_options, { desc = ' [F]ind vim [O]ptions' })
|
|
||||||
map('n', '<leader>fs', builtin.grep_string, { desc = ' [F]ind [S]tring' })
|
|
||||||
map('v', '<leader>fs', custom.grep_visual, { desc = ' [F]ind visual [S]election' })
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
local loaded_file_browser, _ = pcall(telescope.load_extension, 'file_browser')
|
|
||||||
if loaded_file_browser then
|
|
||||||
map('n', '<leader>br', '<cmd>Telescope file_browser<cr>', { desc = ' file [BR]owser' })
|
|
||||||
else
|
|
||||||
vim.notify('Telescope file_browser not installed!', vim.log.levels.WARN)
|
|
||||||
end
|
|
||||||
|
|
|
@ -1,91 +0,0 @@
|
||||||
local ok, configs = pcall(require, 'nvim-treesitter.configs')
|
|
||||||
if not ok then return end
|
|
||||||
|
|
||||||
configs.setup {
|
|
||||||
ensure_installed = {
|
|
||||||
'bash',
|
|
||||||
'c',
|
|
||||||
'cpp',
|
|
||||||
'haskell',
|
|
||||||
'html',
|
|
||||||
'javascript',
|
|
||||||
'latex',
|
|
||||||
'lua',
|
|
||||||
'make',
|
|
||||||
'markdown',
|
|
||||||
'markdown_inline',
|
|
||||||
'python',
|
|
||||||
'query',
|
|
||||||
'toml',
|
|
||||||
'vim',
|
|
||||||
'vimdoc',
|
|
||||||
'yaml',
|
|
||||||
},
|
|
||||||
|
|
||||||
highlight = {
|
|
||||||
enable = true,
|
|
||||||
disable = {
|
|
||||||
'help',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
incremental_selection = {
|
|
||||||
enable = true,
|
|
||||||
keymaps = {
|
|
||||||
init_selection = 'gnn', -- mapped in normal mode
|
|
||||||
node_incremental = '<CR>', -- mapped in visual mode
|
|
||||||
node_decremental = '<BS>', -- mapped in visual mode
|
|
||||||
scope_incremental = nil, -- disabled, normally mapped in visual mode
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
refactor = {
|
|
||||||
highlight_definitions = { enable = true },
|
|
||||||
highlight_current_scope = { enable = false },
|
|
||||||
|
|
||||||
smart_rename = {
|
|
||||||
enable = true,
|
|
||||||
keymaps = {
|
|
||||||
smart_rename = 'grr',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
navigation = {
|
|
||||||
enable = true,
|
|
||||||
keymaps = {
|
|
||||||
goto_definition = 'gd', -- default: 'gnd'
|
|
||||||
list_definitions = nil, -- disabled, default: 'gnD'
|
|
||||||
list_definitions_toc = 'gO',
|
|
||||||
goto_next_usage = '<a-*>',
|
|
||||||
goto_previous_usage = '<a-#>',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
textobjects = {
|
|
||||||
select = {
|
|
||||||
enable = true,
|
|
||||||
keymaps = {
|
|
||||||
['ab'] = '@block.outer',
|
|
||||||
['ib'] = '@block.inner',
|
|
||||||
['ac'] = '@conditional.outer',
|
|
||||||
['ic'] = '@conditional.inner',
|
|
||||||
['af'] = '@function.outer',
|
|
||||||
['if'] = '@function.inner',
|
|
||||||
['al'] = '@loop.outer',
|
|
||||||
['il'] = '@loop.inner',
|
|
||||||
['aa'] = '@parameter.outer',
|
|
||||||
['ia'] = '@parameter.inner',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
playground = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>sp', '<cmd>TSPlaygroundToggle<cr>')
|
|
||||||
vim.keymap.set('n', '<leader>sh', '<cmd>TSHighlightCapturesUnderCursor<cr>')
|
|
||||||
vim.keymap.set('n', '<leader>sn', '<cmd>TSNodeUnderCursor<cr>')
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
-- fix whitespace
|
|
||||||
vim.keymap.set('n', '<leader>w', '<cmd>StripWhitespace<cr>')
|
|
||||||
|
|
||||||
-- show/hide whitespace
|
|
||||||
vim.keymap.set('n', '<leader>sw', '<cmd>ToggleWhitespace<cr>')
|
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
local ok, plugin = pcall(require, 'virt-column')
|
|
||||||
if not ok then return end
|
|
||||||
|
|
||||||
plugin.setup {
|
|
||||||
char = '│',
|
|
||||||
}
|
|
||||||
|
|
||||||
local toggle_virtual_column = function()
|
|
||||||
if vim.o.colorcolumn == '' then
|
|
||||||
vim.o.colorcolumn = '+1' -- one after 'textwidth'
|
|
||||||
else
|
|
||||||
vim.o.colorcolumn = '' -- none
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>sc', toggle_virtual_column)
|
|
||||||
|
|
|
@ -9,14 +9,14 @@ require 'user.filetypes'
|
||||||
|
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not vim.loop.fs_stat(lazypath) then
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
vim.fn.system({
|
vim.fn.system {
|
||||||
"git",
|
"git",
|
||||||
"clone",
|
"clone",
|
||||||
"--filter=blob:none",
|
"--filter=blob:none",
|
||||||
"https://github.com/folke/lazy.nvim.git",
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
"--branch=stable", -- latest stable release
|
"--branch=stable",
|
||||||
lazypath,
|
lazypath,
|
||||||
})
|
}
|
||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
|
8
config/nvim/lua/user/plugins/colorizer.lua
Normal file
8
config/nvim/lua/user/plugins/colorizer.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
return {
|
||||||
|
'norcalli/nvim-colorizer.lua',
|
||||||
|
cond = vim.opt.termguicolors:get(),
|
||||||
|
config = function()
|
||||||
|
require('colorizer').setup({'*'}, { mode = 'foreground' })
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
8
config/nvim/lua/user/plugins/fugitive.lua
Normal file
8
config/nvim/lua/user/plugins/fugitive.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
return {
|
||||||
|
'tpope/vim-fugitive',
|
||||||
|
config = function()
|
||||||
|
vim.keymap.set('n', '<leader>gs', '<cmd>tab Git<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>gb', '<cmd>Git blame<cr>')
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
13
config/nvim/lua/user/plugins/indent-blankline.lua
Normal file
13
config/nvim/lua/user/plugins/indent-blankline.lua
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
return {
|
||||||
|
'lukas-reineke/indent-blankline.nvim',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
require('indent_blankline').setup {
|
||||||
|
enabled = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- show/hide indent guides
|
||||||
|
vim.keymap.set('n', '<leader>si', '<cmd>IndentBlanklineToggle<cr>')
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
|
@ -1,50 +1,9 @@
|
||||||
-- vim.g.better_whitespace_filetypes_blacklist = {
|
|
||||||
-- 'diff',
|
|
||||||
-- 'fugitive',
|
|
||||||
-- 'git',
|
|
||||||
-- 'gitcommit',
|
|
||||||
-- 'help',
|
|
||||||
-- }
|
|
||||||
|
|
||||||
-- vim.g.VM_leader = '\\'
|
|
||||||
-- vim.g.VM_silent_exit = 1
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'wbthomason/packer.nvim',
|
|
||||||
'nvim-lua/plenary.nvim',
|
'nvim-lua/plenary.nvim',
|
||||||
|
'milisims/nvim-luaref',
|
||||||
-- Visuals ----------------------------------------------------------------
|
|
||||||
{ dir = '~/.dotfiles/plugins/solarized.nvim' },
|
|
||||||
'kyazdani42/nvim-web-devicons',
|
'kyazdani42/nvim-web-devicons',
|
||||||
'nvim-lualine/lualine.nvim',
|
|
||||||
'lukas-reineke/virt-column.nvim',
|
|
||||||
'lukas-reineke/indent-blankline.nvim',
|
|
||||||
'norcalli/nvim-colorizer.lua',
|
|
||||||
|
|
||||||
-- Navigation -------------------------------------------------------------
|
|
||||||
'nvim-telescope/telescope.nvim',
|
|
||||||
'nvim-telescope/telescope-file-browser.nvim',
|
|
||||||
'kyazdani42/nvim-tree.lua',
|
|
||||||
|
|
||||||
-- Editing ----------------------------------------------------------------
|
|
||||||
'ntpeters/vim-better-whitespace',
|
|
||||||
'godlygeek/tabular',
|
|
||||||
'tpope/vim-commentary',
|
'tpope/vim-commentary',
|
||||||
-- 'mg979/vim-visual-multi',
|
|
||||||
|
|
||||||
-- git --------------------------------------------------------------------
|
|
||||||
'tpope/vim-fugitive',
|
|
||||||
|
|
||||||
-- Treesitter -------------------------------------------------------------
|
|
||||||
'nvim-treesitter/nvim-treesitter',
|
|
||||||
'nvim-treesitter/nvim-treesitter-refactor',
|
|
||||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
|
||||||
'nvim-treesitter/playground',
|
|
||||||
|
|
||||||
-- Filetypes --------------------------------------------------------------
|
|
||||||
'keith/swift.vim',
|
'keith/swift.vim',
|
||||||
'chr4/nginx.vim',
|
'chr4/nginx.vim',
|
||||||
|
|
||||||
-- Misc -------------------------------------------------------------------
|
|
||||||
'milisims/nvim-luaref',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
181
config/nvim/lua/user/plugins/lualine.lua
Normal file
181
config/nvim/lua/user/plugins/lualine.lua
Normal file
|
@ -0,0 +1,181 @@
|
||||||
|
return {
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
local MODE_MAP = {
|
||||||
|
['n'] = 'Normal ',
|
||||||
|
['no'] = 'O-Pend ',
|
||||||
|
['nov'] = 'O-Pend ',
|
||||||
|
['noV'] = 'O-Pend ',
|
||||||
|
['no'] = 'O-Pend ',
|
||||||
|
['niI'] = 'Normal ',
|
||||||
|
['niR'] = 'Normal ',
|
||||||
|
['niV'] = 'Normal ',
|
||||||
|
['nt'] = 'Normal ',
|
||||||
|
['ntT'] = 'Normal*',
|
||||||
|
['v'] = 'Visual ',
|
||||||
|
['vs'] = 'Visual ',
|
||||||
|
['V'] = 'V-Line ',
|
||||||
|
['Vs'] = 'V-Line ',
|
||||||
|
[''] = 'V-Block',
|
||||||
|
['s'] = 'V-Block',
|
||||||
|
['s'] = 'Select ',
|
||||||
|
['S'] = 'S-Line ',
|
||||||
|
[''] = 'S-Block',
|
||||||
|
['i'] = 'Insert ',
|
||||||
|
['ic'] = 'Insert ',
|
||||||
|
['ix'] = 'Insert ',
|
||||||
|
['R'] = 'Replace',
|
||||||
|
['Rc'] = 'Replace',
|
||||||
|
['Rx'] = 'Replace',
|
||||||
|
['Rv'] = 'V-Repl ',
|
||||||
|
['Rvc'] = 'V-Repl ',
|
||||||
|
['Rvx'] = 'V-Repl ',
|
||||||
|
['c'] = 'Command',
|
||||||
|
['cv'] = ' Ex ',
|
||||||
|
['ce'] = ' Ex ',
|
||||||
|
['r'] = 'Replace',
|
||||||
|
['rm'] = ' More ',
|
||||||
|
['r?'] = 'Confirm',
|
||||||
|
['!'] = ' Shell ',
|
||||||
|
['t'] = ' Term ',
|
||||||
|
}
|
||||||
|
|
||||||
|
local update_status = function(self, is_focused)
|
||||||
|
self.options.colored = is_focused
|
||||||
|
return self.super.update_status(self, is_focused)
|
||||||
|
end
|
||||||
|
|
||||||
|
local diff = require'lualine.components.diff':extend()
|
||||||
|
diff.update_status = update_status
|
||||||
|
|
||||||
|
local filetype = require'lualine.components.filetype':extend()
|
||||||
|
filetype.update_status = update_status
|
||||||
|
|
||||||
|
local window_is_at_least = function(width)
|
||||||
|
return function() return vim.fn.winwidth(0) > width end
|
||||||
|
end
|
||||||
|
|
||||||
|
local window_is_wide = window_is_at_least(80)
|
||||||
|
local window_is_medium = window_is_at_least(50)
|
||||||
|
|
||||||
|
local parts = {
|
||||||
|
paste = {
|
||||||
|
function() return '' end,
|
||||||
|
color = { bg = '#bbaa00' },
|
||||||
|
cond = function()
|
||||||
|
return vim.opt.paste:get()
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
mode = {
|
||||||
|
function()
|
||||||
|
local code = vim.api.nvim_get_mode().mode
|
||||||
|
return MODE_MAP[code] or code
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
visual_multi = function()
|
||||||
|
local ok, infos = pcall(vim.fn.VMInfos)
|
||||||
|
if not ok or not infos.status then return '' end
|
||||||
|
return infos.current .. '/' .. infos.total .. ' ' .. infos.status
|
||||||
|
end,
|
||||||
|
|
||||||
|
branch = {
|
||||||
|
'branch',
|
||||||
|
icon = '',
|
||||||
|
cond = window_is_medium,
|
||||||
|
},
|
||||||
|
|
||||||
|
status = {
|
||||||
|
function()
|
||||||
|
local flags = {}
|
||||||
|
if vim.bo.modified then
|
||||||
|
table.insert(flags, '+')
|
||||||
|
end
|
||||||
|
if vim.bo.modifiable == false or vim.bo.readonly == true then
|
||||||
|
table.insert(flags, 'RO')
|
||||||
|
end
|
||||||
|
return table.concat(flags, ' ')
|
||||||
|
end,
|
||||||
|
|
||||||
|
color = { fg = '#eee8d5' },
|
||||||
|
},
|
||||||
|
|
||||||
|
filename = {
|
||||||
|
function()
|
||||||
|
local shorten_path = function(path)
|
||||||
|
if window_is_wide() then
|
||||||
|
return path
|
||||||
|
elseif window_is_medium() then
|
||||||
|
return vim.fn.pathshorten(path) -- only first letter of directories
|
||||||
|
else
|
||||||
|
return vim.fn.fnamemodify(path, ':t') -- only tail
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return shorten_path(vim.fn.expand('%:~:.'))
|
||||||
|
end,
|
||||||
|
|
||||||
|
color = function()
|
||||||
|
if vim.bo.modified then
|
||||||
|
return { gui = 'italic' }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
padding = { left = 1, right = 0},
|
||||||
|
},
|
||||||
|
|
||||||
|
filetype = {
|
||||||
|
filetype,
|
||||||
|
cond = window_is_medium,
|
||||||
|
},
|
||||||
|
|
||||||
|
fileformat = {
|
||||||
|
'fileformat',
|
||||||
|
cond = window_is_medium,
|
||||||
|
},
|
||||||
|
|
||||||
|
progress = {
|
||||||
|
function()
|
||||||
|
local chars = { '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' }
|
||||||
|
local current, total = vim.fn.line '.', vim.fn.line '$'
|
||||||
|
return chars[math.ceil(#chars * current / total)]
|
||||||
|
end,
|
||||||
|
padding = { left = 0, right = 1 },
|
||||||
|
cond = window_is_wide,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = { parts.visual_multi, parts.branch },
|
||||||
|
lualine_c = { parts.filename, parts.status },
|
||||||
|
lualine_x = { 'diagnostics', parts.filetype },
|
||||||
|
lualine_y = { parts.fileformat, parts.progress },
|
||||||
|
lualine_z = { 'location' },
|
||||||
|
}
|
||||||
|
|
||||||
|
require('lualine').setup {
|
||||||
|
options = {
|
||||||
|
icons_enabled = true,
|
||||||
|
component_separators = { left = '', right = '' },
|
||||||
|
section_separators = { left = '', right = '' },
|
||||||
|
theme = 'solarized',
|
||||||
|
},
|
||||||
|
|
||||||
|
sections = vim.tbl_extend('force', inactive_sections, {
|
||||||
|
lualine_a = { parts.paste, parts.mode },
|
||||||
|
}),
|
||||||
|
|
||||||
|
inactive_sections = inactive_sections,
|
||||||
|
|
||||||
|
extensions = {
|
||||||
|
'fugitive',
|
||||||
|
'quickfix',
|
||||||
|
'nvim-tree',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
50
config/nvim/lua/user/plugins/nvim-tree.lua
Normal file
50
config/nvim/lua/user/plugins/nvim-tree.lua
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
local on_attach = function(bufnr)
|
||||||
|
local node = require('nvim-tree.api').node
|
||||||
|
local opts = function(desc)
|
||||||
|
return { desc = 'nvim-tree: ' .. desc, buffer = bufnr, silent = true }
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set('n', 'l', node.open.edit, opts('open'))
|
||||||
|
vim.keymap.set('n', '<CR>', node.open.edit, opts('open'))
|
||||||
|
vim.keymap.set('n', 'o', node.open.edit, opts('open'))
|
||||||
|
vim.keymap.set('n', 'h', node.navigate.parent_close, opts('close directory'))
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
return {
|
||||||
|
'kyazdani42/nvim-tree.lua',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
require('nvim-tree').setup {
|
||||||
|
disable_netrw = true, -- replace netrw with nvim-tree
|
||||||
|
hijack_cursor = true, -- keep the cursor on begin of the filename
|
||||||
|
sync_root_with_cwd = true, -- watch for `DirChanged` and refresh the tree
|
||||||
|
on_attach = on_attach,
|
||||||
|
|
||||||
|
git = {
|
||||||
|
ignore = false, -- don't hide files from .gitignore
|
||||||
|
},
|
||||||
|
|
||||||
|
view = {
|
||||||
|
adaptive_size = true, -- resize the window based on the longest line
|
||||||
|
width = 35, -- a little wider than the default 30
|
||||||
|
},
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
dotfiles = false, -- show files starting with a .
|
||||||
|
custom = { '^\\.git' }, -- don't show .git directory
|
||||||
|
},
|
||||||
|
|
||||||
|
renderer = {
|
||||||
|
add_trailing = true, -- add trailing / to folders
|
||||||
|
group_empty = true, -- folders that contain only one folder are grouped
|
||||||
|
highlight_git = true, -- enable highlight based on git attributes
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>nn', '<cmd>NvimTreeOpen<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>nf', '<cmd>NvimTreeFindFile<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>nc', '<cmd>NvimTreeClose<cr>')
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
8
config/nvim/lua/user/plugins/solarized.lua
Normal file
8
config/nvim/lua/user/plugins/solarized.lua
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
return {
|
||||||
|
dir = '~/.dotfiles/plugins/solarized.nvim',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
vim.cmd [[colorscheme solarized]]
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
12
config/nvim/lua/user/plugins/tabular.lua
Normal file
12
config/nvim/lua/user/plugins/tabular.lua
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
return {
|
||||||
|
'godlygeek/tabular',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
if vim.fn.exists('g:tabular_loaded') == 1 then
|
||||||
|
vim.cmd [[ AddTabularPattern! first_comma /^[^,]*\zs,/ ]]
|
||||||
|
vim.cmd [[ AddTabularPattern! first_colon /^[^:]*\zs:/ ]]
|
||||||
|
vim.cmd [[ AddTabularPattern! first_equal /^[^=]*\zs=/ ]]
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
183
config/nvim/lua/user/plugins/telescope.lua
Normal file
183
config/nvim/lua/user/plugins/telescope.lua
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
local config_telescope = function(_, opts)
|
||||||
|
local telescope = require 'telescope'
|
||||||
|
local actions = require 'telescope.actions'
|
||||||
|
local actions_layout = require 'telescope.actions.layout'
|
||||||
|
local builtin = require 'telescope.builtin'
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
['<c-l>'] = actions_layout.cycle_layout_next,
|
||||||
|
['<c-o>'] = actions_layout.toggle_mirror,
|
||||||
|
['<c-q>'] = actions.smart_send_to_qflist + actions.open_qflist,
|
||||||
|
}
|
||||||
|
|
||||||
|
local mappings_normal_mode = mappings
|
||||||
|
local mappings_insert_mode = vim.tbl_extend('force', mappings, {
|
||||||
|
['<c-j>'] = actions.cycle_history_next,
|
||||||
|
['<c-k>'] = actions.cycle_history_prev,
|
||||||
|
})
|
||||||
|
|
||||||
|
telescope.setup {
|
||||||
|
defaults = {
|
||||||
|
prompt_prefix = ' ❯ ',
|
||||||
|
selection_caret = ' ', -- Other ideas: ➔
|
||||||
|
multi_icon = ' ',
|
||||||
|
|
||||||
|
layout_strategy = 'flex',
|
||||||
|
layout_config = {
|
||||||
|
anchor = 'center',
|
||||||
|
width = 0.9,
|
||||||
|
height = 0.9,
|
||||||
|
|
||||||
|
flex = {
|
||||||
|
flip_columns = 130,
|
||||||
|
},
|
||||||
|
|
||||||
|
horizontal = {
|
||||||
|
preview_width = 0.5,
|
||||||
|
preview_cutoff = 130,
|
||||||
|
},
|
||||||
|
|
||||||
|
vertical = {
|
||||||
|
preview_height = 0.5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
cycle_layout_list = {
|
||||||
|
{ layout_strategy = 'bottom_pane', layout_config = { width = 1, height = 0.4 }, },
|
||||||
|
'horizontal',
|
||||||
|
'vertical',
|
||||||
|
},
|
||||||
|
|
||||||
|
mappings = {
|
||||||
|
i = mappings_insert_mode,
|
||||||
|
n = mappings_normal_mode,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
pickers = {
|
||||||
|
buffers = { prompt_title = ' Buffers ' },
|
||||||
|
find_files = { prompt_title = ' Files ' },
|
||||||
|
git_commits = { prompt_title = ' Commits ' },
|
||||||
|
help_tags = { prompt_title = ' Help tags ' },
|
||||||
|
keymaps = { prompt_title = ' Keymaps ' },
|
||||||
|
live_grep = { prompt_title = ' Live grep ' },
|
||||||
|
vim_options = { prompt_title = ' Vim options ' },
|
||||||
|
man_pages = { prompt_title = ' Man pages ' },
|
||||||
|
},
|
||||||
|
|
||||||
|
extensions = {
|
||||||
|
file_browser = {
|
||||||
|
theme = 'ivy',
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
-- normal mode mappings go here
|
||||||
|
},
|
||||||
|
i = {
|
||||||
|
-- insert mode mappings go here
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local selected_range = function()
|
||||||
|
local _, s_row, s_col, _ = unpack(vim.fn.getpos('v'))
|
||||||
|
local _, e_row, e_col, _ = unpack(vim.fn.getpos('.'))
|
||||||
|
|
||||||
|
local mode = vim.api.nvim_get_mode().mode
|
||||||
|
local visual_line = (mode == 'V' or mode == 'CTRL-V')
|
||||||
|
|
||||||
|
if s_row < e_row or (s_row == e_row and s_col <= e_col) then
|
||||||
|
if visual_line then s_col, e_col = 1, #vim.fn.getline(e_row) end
|
||||||
|
return s_row - 1, s_col - 1, e_row - 1, e_col
|
||||||
|
else
|
||||||
|
if visual_line then e_col, s_col = 1, #vim.fn.getline(s_row) end
|
||||||
|
return e_row - 1, e_col - 1, s_row - 1, s_col
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local selected_text = function()
|
||||||
|
local r0, c0, r1, c1 = selected_range()
|
||||||
|
return vim.fn.join(vim.api.nvim_buf_get_text(0, r0, c0, r1, c1, {}), '\n')
|
||||||
|
end
|
||||||
|
|
||||||
|
local custom = {
|
||||||
|
all_files = function()
|
||||||
|
builtin.find_files {
|
||||||
|
prompt_title = ' ALL Files ',
|
||||||
|
hidden = true,
|
||||||
|
no_ignore = true,
|
||||||
|
no_ignore_parent = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
|
||||||
|
dotfiles = function()
|
||||||
|
builtin.find_files {
|
||||||
|
prompt_title = ' Find dotfiles ',
|
||||||
|
cwd = '~/.dotfiles',
|
||||||
|
hidden = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
|
||||||
|
grep_visual = function()
|
||||||
|
local selection = selected_text()
|
||||||
|
builtin.grep_string {
|
||||||
|
prompt_title = string.format(' Grep: %s', selection),
|
||||||
|
search = selection,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
|
||||||
|
man_pages = function()
|
||||||
|
-- Fix for macOS Ventura onwards (macOS 13.x <-> Darwin 22.x).
|
||||||
|
-- See: https://github.com/nvim-telescope/telescope.nvim/issues/2326#issuecomment-1407502328
|
||||||
|
local uname = vim.loop.os_uname()
|
||||||
|
local sysname = string.lower(uname.sysname)
|
||||||
|
if sysname == "darwin" then
|
||||||
|
local major_version = tonumber(vim.fn.matchlist(uname.release, [[^\(\d\+\)\..*]])[2]) or 0
|
||||||
|
if major_version >= 22 then
|
||||||
|
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", "." } }
|
||||||
|
else
|
||||||
|
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", " " } }
|
||||||
|
end
|
||||||
|
elseif sysname == "freebsd" then
|
||||||
|
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", "." } }
|
||||||
|
else
|
||||||
|
builtin.man_pages { sections = { 'ALL' } }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local map = vim.keymap.set
|
||||||
|
map('n', '<leader>fa', custom.all_files, { desc = ' [F]ind [A]ll Files in $PWD' })
|
||||||
|
map('n', '<leader>fb', builtin.buffers, { desc = ' [F]ind [B]uffers' })
|
||||||
|
map('n', '<leader>fc', builtin.git_commits, { desc = ' [F]ind [C]ommits' })
|
||||||
|
map('n', '<leader>fd', custom.dotfiles, { desc = ' [F]ind [D]otfiles' })
|
||||||
|
map('n', '<leader>ff', builtin.find_files, { desc = ' [F]ind [F]iles in $PWD' })
|
||||||
|
map('n', '<leader>fg', builtin.live_grep, { desc = ' [F]ind with [G]rep in $PWD' })
|
||||||
|
map('n', '<leader>fh', builtin.help_tags, { desc = ' [F]ind [H]elp tags' })
|
||||||
|
map('n', '<leader>fk', builtin.keymaps, { desc = ' [F]ind [K]eymaps' })
|
||||||
|
map('n', '<leader>fm', custom.man_pages, { desc = ' [F]ind [M]an pages' })
|
||||||
|
map('n', '<leader>fo', builtin.vim_options, { desc = ' [F]ind vim [O]ptions' })
|
||||||
|
map('n', '<leader>fs', builtin.grep_string, { desc = ' [F]ind [S]tring' })
|
||||||
|
map('v', '<leader>fs', custom.grep_visual, { desc = ' [F]ind visual [S]election' })
|
||||||
|
end
|
||||||
|
|
||||||
|
file_browser = {
|
||||||
|
'nvim-telescope/telescope-file-browser.nvim',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
require('telescope').load_extension 'file_browser'
|
||||||
|
vim.keymap.set('n', '<leader>br', '<cmd>Telescope file_browser<cr>', { desc = ' file [BR]owser' })
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
'nvim-telescope/telescope.nvim',
|
||||||
|
|
||||||
|
config = config_telescope,
|
||||||
|
|
||||||
|
dependencies = {
|
||||||
|
file_browser,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
102
config/nvim/lua/user/plugins/treesitter.lua
Normal file
102
config/nvim/lua/user/plugins/treesitter.lua
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
return {
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter-refactor',
|
||||||
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
|
'nvim-treesitter/playground',
|
||||||
|
},
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
ensure_installed = {
|
||||||
|
'bash',
|
||||||
|
'c',
|
||||||
|
'cpp',
|
||||||
|
'haskell',
|
||||||
|
'html',
|
||||||
|
'javascript',
|
||||||
|
'latex',
|
||||||
|
'lua',
|
||||||
|
'make',
|
||||||
|
'markdown',
|
||||||
|
'markdown_inline',
|
||||||
|
'python',
|
||||||
|
'query',
|
||||||
|
'toml',
|
||||||
|
'vim',
|
||||||
|
'vimdoc',
|
||||||
|
'yaml',
|
||||||
|
},
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
disable = {
|
||||||
|
'help',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = 'gnn', -- mapped in normal mode
|
||||||
|
node_incremental = '<CR>', -- mapped in visual mode
|
||||||
|
node_decremental = '<BS>', -- mapped in visual mode
|
||||||
|
scope_incremental = nil, -- disabled, normally mapped in visual mode
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
refactor = {
|
||||||
|
highlight_definitions = { enable = true },
|
||||||
|
highlight_current_scope = { enable = false },
|
||||||
|
|
||||||
|
smart_rename = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
smart_rename = 'grr',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
navigation = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
goto_definition = 'gd', -- default: 'gnd'
|
||||||
|
list_definitions = nil, -- disabled, default: 'gnD'
|
||||||
|
list_definitions_toc = 'gO',
|
||||||
|
goto_next_usage = '<a-*>',
|
||||||
|
goto_previous_usage = '<a-#>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
['ab'] = '@block.outer',
|
||||||
|
['ib'] = '@block.inner',
|
||||||
|
['ac'] = '@conditional.outer',
|
||||||
|
['ic'] = '@conditional.inner',
|
||||||
|
['af'] = '@function.outer',
|
||||||
|
['if'] = '@function.inner',
|
||||||
|
['al'] = '@loop.outer',
|
||||||
|
['il'] = '@loop.inner',
|
||||||
|
['aa'] = '@parameter.outer',
|
||||||
|
['ia'] = '@parameter.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
playground = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
config = function(_, opts)
|
||||||
|
require('nvim-treesitter.configs').setup(opts)
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>sp', '<cmd>TSPlaygroundToggle<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>sh', '<cmd>TSHighlightCapturesUnderCursor<cr>')
|
||||||
|
vim.keymap.set('n', '<leader>sn', '<cmd>TSNodeUnderCursor<cr>')
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
22
config/nvim/lua/user/plugins/vim-better-whitespace.lua
Normal file
22
config/nvim/lua/user/plugins/vim-better-whitespace.lua
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
return {
|
||||||
|
'ntpeters/vim-better-whitespace',
|
||||||
|
|
||||||
|
init = function()
|
||||||
|
vim.g.better_whitespace_filetypes_blacklist = {
|
||||||
|
'diff',
|
||||||
|
'fugitive',
|
||||||
|
'git',
|
||||||
|
'gitcommit',
|
||||||
|
'help',
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
-- fix whitespace
|
||||||
|
vim.keymap.set('n', '<leader>w', '<cmd>StripWhitespace<cr>')
|
||||||
|
|
||||||
|
-- show/hide whitespace
|
||||||
|
vim.keymap.set('n', '<leader>sw', '<cmd>ToggleWhitespace<cr>')
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
20
config/nvim/lua/user/plugins/virt-column.lua
Normal file
20
config/nvim/lua/user/plugins/virt-column.lua
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
return {
|
||||||
|
'lukas-reineke/virt-column.nvim',
|
||||||
|
|
||||||
|
config = function()
|
||||||
|
require('virt-column').setup {
|
||||||
|
char = '│',
|
||||||
|
}
|
||||||
|
|
||||||
|
local toggle_virtual_column = function()
|
||||||
|
if vim.o.colorcolumn == '' then
|
||||||
|
vim.o.colorcolumn = '+1' -- one after 'textwidth'
|
||||||
|
else
|
||||||
|
vim.o.colorcolumn = '' -- none
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>sc', toggle_virtual_column)
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
9
config/nvim/lua/user/plugins/visual-multi.lua.disabled
Normal file
9
config/nvim/lua/user/plugins/visual-multi.lua.disabled
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
return {
|
||||||
|
'mg979/vim-visual-multi',
|
||||||
|
|
||||||
|
init = function()
|
||||||
|
vim.g.VM_leader = '\\'
|
||||||
|
vim.g.VM_silent_exit = 1
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue