vim: refactor configuration of plugins

This commit is contained in:
Fernando Schauenburg 2023-07-09 12:52:48 +02:00
parent 9a6d090015
commit 1954162b2b
7 changed files with 437 additions and 445 deletions

View file

@ -1,12 +1,10 @@
return {
'lukas-reineke/indent-blankline.nvim',
opts = {
enabled = false,
},
config = function(_, opts)
require('indent_blankline').setup(opts)
config = function()
require('indent_blankline').setup {
enabled = false,
}
-- show/hide indent guides
vim.keymap.set('n', '<leader>si', '<cmd>IndentBlanklineToggle<cr>')

View file

@ -29,25 +29,25 @@ local on_attach = function(client, bufnr)
if filetype_attach then filetype_attach(client, bufnr) end
end
local config = function()
local capabilities = vim.lsp.protocol.make_client_capabilities()
local has_cmp, cmp = pcall(require, 'cmp_nvim_lsp')
if has_cmp then
vim.tbl_deep_extend('force', capabilities, cmp.default_capabilities())
end
lsp = require('lspconfig')
for server, opts in pairs(servers) do
opts = vim.tbl_deep_extend('keep', opts, {
on_attach = on_attach,
capabilities = capabilities,
})
lsp[server].setup(opts)
end
end
return {
'neovim/nvim-lspconfig',
config = function()
local capabilities = vim.lsp.protocol.make_client_capabilities()
local has_cmp, cmp = pcall(require, 'cmp_nvim_lsp')
if has_cmp then
vim.tbl_deep_extend('force', capabilities, cmp.default_capabilities())
end
lsp = require('lspconfig')
for server, opts in pairs(servers) do
opts = vim.tbl_deep_extend('keep', opts, {
on_attach = on_attach,
capabilities = capabilities,
})
lsp[server].setup(opts)
end
end,
config = config,
}

View file

@ -1,181 +1,182 @@
return {
'nvim-lualine/lualine.nvim',
local 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 ',
}
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 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 diff = require'lualine.components.diff':extend()
diff.update_status = update_status
local filetype = require'lualine.components.filetype':extend()
filetype.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_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 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
},
local parts = {
paste = {
function() return '' end,
color = { bg = '#bbaa00' },
cond = function()
return vim.opt.paste:get()
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
},
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
if vim.bo.modifiable == false or vim.bo.readonly == true then
table.insert(flags, 'RO')
end
return table.concat(flags, ' ')
end,
branch = {
'branch',
icon = '',
cond = window_is_medium,
},
color = { fg = '#eee8d5' },
},
status = {
function()
local flags = {}
if vim.bo.modified then
table.insert(flags, '+')
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
if vim.bo.modifiable == false or vim.bo.readonly == true then
table.insert(flags, 'RO')
end
return table.concat(flags, ' ')
end,
end
color = { fg = '#eee8d5' },
},
return shorten_path(vim.fn.expand('%:~:.'))
end,
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
color = function()
if vim.bo.modified then
return { gui = 'italic' }
end
end,
return shorten_path(vim.fn.expand('%:~:.'))
end,
padding = { left = 1, right = 0},
},
color = function()
if vim.bo.modified then
return { gui = 'italic' }
end
end,
filetype = {
filetype,
cond = window_is_medium,
},
padding = { left = 1, right = 0},
},
fileformat = {
'fileformat',
cond = window_is_medium,
},
filetype = {
filetype,
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,
},
}
fileformat = {
'fileformat',
cond = window_is_medium,
},
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' },
}
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,
},
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
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,
return {
'nvim-lualine/lualine.nvim',
config = config,
}

View file

@ -1,26 +1,22 @@
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
api.config.mappings.default_on_attach(bufnr)
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
return {
'kyazdani42/nvim-tree.lua',
opts = {
local 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,
on_attach = function(bufnr)
local api = require('nvim-tree.api')
api.config.mappings.default_on_attach(bufnr)
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,
git = {
ignore = false, -- don't hide files from .gitignore
@ -41,14 +37,15 @@ return {
group_empty = true, -- folders that contain only one folder are grouped
highlight_git = true, -- enable highlight based on git attributes
},
},
}
config = function(_, opts)
require('nvim-tree').setup(opts)
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
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,
return {
'kyazdani42/nvim-tree.lua',
config = config,
}

View file

@ -1,177 +1,176 @@
local telescope = {
'nvim-telescope/telescope.nvim',
local config = function()
local telescope = require 'telescope'
local actions = require 'telescope.actions'
local actions_layout = require 'telescope.actions.layout'
local builtin = require 'telescope.builtin'
config = 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 = {
['<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,
})
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 = '',
telescope.setup {
defaults = {
prompt_prefix = ' ',
selection_caret = '', -- Other ideas: ➔ 
multi_icon = '',
layout_strategy = 'flex',
layout_config = {
anchor = 'center',
width = 0.9,
height = 0.9,
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,
},
flex = {
flip_columns = 130,
},
cycle_layout_list = {
{ layout_strategy = 'bottom_pane', layout_config = { width = 1, height = 0.4 }, },
'horizontal',
'vertical',
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 = {
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
},
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 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')
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
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 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,
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,
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,
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
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' } }
builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", " " } }
end
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,
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
local telescope = {
'nvim-telescope/telescope.nvim',
config = config,
}
local file_browser = {
'nvim-telescope/telescope-file-browser.nvim',
dependencies = {
'nvim-telescope/telescope.nvim',
},
dependencies = { 'nvim-telescope/telescope.nvim' },
config = function()
require('telescope').load_extension 'file_browser'

View file

@ -1,98 +1,97 @@
return {
{
'nvim-treesitter/nvim-treesitter',
local config = function()
require('nvim-treesitter.configs').setup {
ensure_installed = {
'bash',
'c',
'cpp',
'haskell',
'html',
'javascript',
'latex',
'lua',
'make',
'markdown',
'markdown_inline',
'python',
'query',
'toml',
'vim',
'vimdoc',
'yaml',
},
opts = {
ensure_installed = {
'bash',
'c',
'cpp',
'haskell',
'html',
'javascript',
'latex',
'lua',
'make',
'markdown',
'markdown_inline',
'python',
'query',
'toml',
'vim',
highlight = {
enable = true,
disable = {
'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)
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
},
},
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,
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>')
end
return {
{
'nvim-treesitter/nvim-treesitter',
config = config,
},
'nvim-treesitter/nvim-treesitter-refactor',

View file

@ -1,12 +1,10 @@
return {
'lukas-reineke/virt-column.nvim',
opts = {
char = '',
},
config = function(_, opts)
require('virt-column').setup(opts)
config = function()
require('virt-column').setup {
char = '',
}
local toggle_virtual_column = function()
if vim.o.colorcolumn == '' then