From 1954162b2b1b6b3e20e1a2714fc368b855a76d39 Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Sun, 9 Jul 2023 12:52:48 +0200 Subject: [PATCH] vim: refactor configuration of plugins --- .../lua/user/plugins/indent-blankline.lua | 10 +- config/nvim/lua/user/plugins/lsp.lua | 34 +- config/nvim/lua/user/plugins/lualine.lua | 315 +++++++++--------- config/nvim/lua/user/plugins/nvim-tree.lua | 51 ++- config/nvim/lua/user/plugins/telescope.lua | 285 ++++++++-------- config/nvim/lua/user/plugins/treesitter.lua | 177 +++++----- config/nvim/lua/user/plugins/virt-column.lua | 10 +- 7 files changed, 437 insertions(+), 445 deletions(-) diff --git a/config/nvim/lua/user/plugins/indent-blankline.lua b/config/nvim/lua/user/plugins/indent-blankline.lua index 533cee4..9607ba5 100644 --- a/config/nvim/lua/user/plugins/indent-blankline.lua +++ b/config/nvim/lua/user/plugins/indent-blankline.lua @@ -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', 'si', 'IndentBlanklineToggle') diff --git a/config/nvim/lua/user/plugins/lsp.lua b/config/nvim/lua/user/plugins/lsp.lua index a045117..1fa5508 100644 --- a/config/nvim/lua/user/plugins/lsp.lua +++ b/config/nvim/lua/user/plugins/lsp.lua @@ -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, } diff --git a/config/nvim/lua/user/plugins/lualine.lua b/config/nvim/lua/user/plugins/lualine.lua index eb57670..17ab289 100644 --- a/config/nvim/lua/user/plugins/lualine.lua +++ b/config/nvim/lua/user/plugins/lualine.lua @@ -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, } diff --git a/config/nvim/lua/user/plugins/nvim-tree.lua b/config/nvim/lua/user/plugins/nvim-tree.lua index 47d8a7d..8cb281f 100644 --- a/config/nvim/lua/user/plugins/nvim-tree.lua +++ b/config/nvim/lua/user/plugins/nvim-tree.lua @@ -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', '', 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', '', 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', 'nn', 'NvimTreeOpen') + vim.keymap.set('n', 'nf', 'NvimTreeFindFile') + vim.keymap.set('n', 'nc', 'NvimTreeClose') +end - vim.keymap.set('n', 'nn', 'NvimTreeOpen') - vim.keymap.set('n', 'nf', 'NvimTreeFindFile') - vim.keymap.set('n', 'nc', 'NvimTreeClose') - end, +return { + 'kyazdani42/nvim-tree.lua', + config = config, } diff --git a/config/nvim/lua/user/plugins/telescope.lua b/config/nvim/lua/user/plugins/telescope.lua index 88bedfa..5d78bed 100644 --- a/config/nvim/lua/user/plugins/telescope.lua +++ b/config/nvim/lua/user/plugins/telescope.lua @@ -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 = { + [''] = actions_layout.cycle_layout_next, + [''] = actions_layout.toggle_mirror, + [''] = actions.smart_send_to_qflist + actions.open_qflist, + } - local mappings = { - [''] = actions_layout.cycle_layout_next, - [''] = actions_layout.toggle_mirror, - [''] = actions.smart_send_to_qflist + actions.open_qflist, - } + local mappings_normal_mode = mappings + local mappings_insert_mode = vim.tbl_extend('force', mappings, { + [''] = actions.cycle_history_next, + [''] = actions.cycle_history_prev, + }) - local mappings_normal_mode = mappings - local mappings_insert_mode = vim.tbl_extend('force', mappings, { - [''] = actions.cycle_history_next, - [''] = 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', 'fa', custom.all_files, { desc = ' [F]ind [A]ll Files in $PWD' }) - map('n', 'fb', builtin.buffers, { desc = ' [F]ind [B]uffers' }) - map('n', 'fc', builtin.git_commits, { desc = ' [F]ind [C]ommits' }) - map('n', 'fd', custom.dotfiles, { desc = ' [F]ind [D]otfiles' }) - map('n', 'ff', builtin.find_files, { desc = ' [F]ind [F]iles in $PWD' }) - map('n', 'fg', builtin.live_grep, { desc = ' [F]ind with [G]rep in $PWD' }) - map('n', 'fh', builtin.help_tags, { desc = ' [F]ind [H]elp tags' }) - map('n', 'fk', builtin.keymaps, { desc = ' [F]ind [K]eymaps' }) - map('n', 'fm', custom.man_pages, { desc = ' [F]ind [M]an pages' }) - map('n', 'fo', builtin.vim_options, { desc = ' [F]ind vim [O]ptions' }) - map('n', 'fs', builtin.grep_string, { desc = ' [F]ind [S]tring' }) - map('v', 'fs', custom.grep_visual, { desc = ' [F]ind visual [S]election' }) - end, + local map = vim.keymap.set + map('n', 'fa', custom.all_files, { desc = ' [F]ind [A]ll Files in $PWD' }) + map('n', 'fb', builtin.buffers, { desc = ' [F]ind [B]uffers' }) + map('n', 'fc', builtin.git_commits, { desc = ' [F]ind [C]ommits' }) + map('n', 'fd', custom.dotfiles, { desc = ' [F]ind [D]otfiles' }) + map('n', 'ff', builtin.find_files, { desc = ' [F]ind [F]iles in $PWD' }) + map('n', 'fg', builtin.live_grep, { desc = ' [F]ind with [G]rep in $PWD' }) + map('n', 'fh', builtin.help_tags, { desc = ' [F]ind [H]elp tags' }) + map('n', 'fk', builtin.keymaps, { desc = ' [F]ind [K]eymaps' }) + map('n', 'fm', custom.man_pages, { desc = ' [F]ind [M]an pages' }) + map('n', 'fo', builtin.vim_options, { desc = ' [F]ind vim [O]ptions' }) + map('n', 'fs', builtin.grep_string, { desc = ' [F]ind [S]tring' }) + map('v', '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' diff --git a/config/nvim/lua/user/plugins/treesitter.lua b/config/nvim/lua/user/plugins/treesitter.lua index 35d1abc..2f8d405 100644 --- a/config/nvim/lua/user/plugins/treesitter.lua +++ b/config/nvim/lua/user/plugins/treesitter.lua @@ -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 = '', -- mapped in visual mode - node_decremental = '', -- 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 = '', - goto_previous_usage = '', - }, - }, - }, - - 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 = '', -- mapped in visual mode + node_decremental = '', -- mapped in visual mode + scope_incremental = nil, -- disabled, normally mapped in visual mode + }, + }, - vim.keymap.set('n', 'sp', 'TSPlaygroundToggle') - vim.keymap.set('n', 'sh', 'TSHighlightCapturesUnderCursor') - vim.keymap.set('n', 'sn', 'TSNodeUnderCursor') - 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 = '', + goto_previous_usage = '', + }, + }, + }, + + 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', 'sp', 'TSPlaygroundToggle') + vim.keymap.set('n', 'sh', 'TSHighlightCapturesUnderCursor') + vim.keymap.set('n', 'sn', 'TSNodeUnderCursor') +end + +return { + { + 'nvim-treesitter/nvim-treesitter', + config = config, }, 'nvim-treesitter/nvim-treesitter-refactor', diff --git a/config/nvim/lua/user/plugins/virt-column.lua b/config/nvim/lua/user/plugins/virt-column.lua index 3275b2d..fdfd0c7 100644 --- a/config/nvim/lua/user/plugins/virt-column.lua +++ b/config/nvim/lua/user/plugins/virt-column.lua @@ -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