diff --git a/config/nvim/lua/user/plugins/telescope.lua b/config/nvim/lua/user/plugins/telescope.lua index 1173854..88bedfa 100644 --- a/config/nvim/lua/user/plugins/telescope.lua +++ b/config/nvim/lua/user/plugins/telescope.lua @@ -1,170 +1,178 @@ -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 telescope = { + 'nvim-telescope/telescope.nvim', - local mappings = { - [''] = actions_layout.cycle_layout_next, - [''] = actions_layout.toggle_mirror, - [''] = actions.smart_send_to_qflist + actions.open_qflist, - } + 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_normal_mode = mappings - local mappings_insert_mode = vim.tbl_extend('force', mappings, { - [''] = actions.cycle_history_next, - [''] = actions.cycle_history_prev, - }) + local mappings = { + [''] = actions_layout.cycle_layout_next, + [''] = actions_layout.toggle_mirror, + [''] = actions.smart_send_to_qflist + actions.open_qflist, + } - telescope.setup { - defaults = { - prompt_prefix = ' ❯ ', - selection_caret = ' ', -- Other ideas: ➔  - multi_icon = ' ', + local mappings_normal_mode = mappings + local mappings_insert_mode = vim.tbl_extend('force', mappings, { + [''] = actions.cycle_history_next, + [''] = actions.cycle_history_prev, + }) - layout_strategy = 'flex', - layout_config = { - anchor = 'center', - width = 0.9, - height = 0.9, + telescope.setup { + defaults = { + prompt_prefix = ' ❯ ', + selection_caret = ' ', -- Other ideas: ➔  + multi_icon = ' ', - flex = { - flip_columns = 130, + 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, + }, }, - horizontal = { - preview_width = 0.5, - preview_cutoff = 130, + cycle_layout_list = { + { layout_strategy = 'bottom_pane', layout_config = { width = 1, height = 0.4 }, }, + 'horizontal', + 'vertical', }, - 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 + 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 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 + 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 - 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 + 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' }, man_cmd = { "apropos", " " } } + builtin.man_pages { sections = { 'ALL' } } end - elseif sysname == "freebsd" then - builtin.man_pages { sections = { 'ALL' }, man_cmd = { "apropos", "." } } - else - builtin.man_pages { sections = { 'ALL' } } - end - 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, +} -file_browser = { +local file_browser = { 'nvim-telescope/telescope-file-browser.nvim', + dependencies = { + 'nvim-telescope/telescope.nvim', + }, + config = function() require('telescope').load_extension 'file_browser' vim.keymap.set('n', 'br', 'Telescope file_browser', { desc = ' file [BR]owser' }) @@ -172,12 +180,7 @@ file_browser = { } return { - 'nvim-telescope/telescope.nvim', - - config = config_telescope, - - dependencies = { - file_browser, - }, + telescope, + file_browser, } diff --git a/config/nvim/lua/user/plugins/treesitter.lua b/config/nvim/lua/user/plugins/treesitter.lua index 14aa274..35d1abc 100644 --- a/config/nvim/lua/user/plugins/treesitter.lua +++ b/config/nvim/lua/user/plugins/treesitter.lua @@ -1,102 +1,102 @@ return { - 'nvim-treesitter/nvim-treesitter', + { + '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 = '', -- 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) + + vim.keymap.set('n', 'sp', 'TSPlaygroundToggle') + vim.keymap.set('n', 'sh', 'TSHighlightCapturesUnderCursor') + vim.keymap.set('n', 'sn', 'TSNodeUnderCursor') + end, }, - 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 = '', -- 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) - - vim.keymap.set('n', 'sp', 'TSPlaygroundToggle') - vim.keymap.set('n', 'sh', 'TSHighlightCapturesUnderCursor') - vim.keymap.set('n', 'sn', 'TSNodeUnderCursor') - end, + 'nvim-treesitter/nvim-treesitter-refactor', + 'nvim-treesitter/nvim-treesitter-textobjects', + 'nvim-treesitter/playground', }