From 98c8837469040da13edccb3dc248f04125f3dabb Mon Sep 17 00:00:00 2001 From: Fernando Schauenburg Date: Sun, 18 Feb 2024 23:41:06 +0100 Subject: [PATCH] vim: `telescope` refactor --- config/nvim/lua/fschauen/plugins/nerdy.lua | 5 +- .../nvim/lua/fschauen/plugins/nvim-notify.lua | 5 +- .../plugins/telescope-file-browser.lua | 5 +- .../nvim/lua/fschauen/plugins/telescope.lua | 120 +++++++++--------- .../lua/fschauen/plugins/todo-comments.lua | 5 +- config/nvim/lua/fschauen/util/icons.lua | 1 + 6 files changed, 77 insertions(+), 64 deletions(-) diff --git a/config/nvim/lua/fschauen/plugins/nerdy.lua b/config/nvim/lua/fschauen/plugins/nerdy.lua index 8be62b0..318a750 100644 --- a/config/nvim/lua/fschauen/plugins/nerdy.lua +++ b/config/nvim/lua/fschauen/plugins/nerdy.lua @@ -7,8 +7,11 @@ M.dependencies = { 'nvim-telescope/telescope.nvim', } +local ts = require('fschauen.plugins.telescope') +local lhs, desc = ts.keymap.lhs, ts.keymap.description + M.keys = { - { 'fi', 'Nerdy', desc = ' Telescope Nerd [i]cons' }, + { lhs('i'), 'Nerdy', desc = desc('Nerd [i]cons') }, } return M diff --git a/config/nvim/lua/fschauen/plugins/nvim-notify.lua b/config/nvim/lua/fschauen/plugins/nvim-notify.lua index 9c2549a..a351e54 100644 --- a/config/nvim/lua/fschauen/plugins/nvim-notify.lua +++ b/config/nvim/lua/fschauen/plugins/nvim-notify.lua @@ -13,9 +13,12 @@ local telescope_notify = function() notify.notify(theme) end +local ts = require('fschauen.plugins.telescope') +local lhs, desc = ts.keymap.lhs, ts.keymap.description + M.keys = { { 'n', 'Notifications', desc = 'Display notification history' }, - { 'fn', telescope_notify, desc = ' Telescope [n]otifications' }, + { lhs('n'), telescope_notify, desc = desc('[n]otifications') }, } M.lazy = false diff --git a/config/nvim/lua/fschauen/plugins/telescope-file-browser.lua b/config/nvim/lua/fschauen/plugins/telescope-file-browser.lua index ee145fb..d717e5a 100644 --- a/config/nvim/lua/fschauen/plugins/telescope-file-browser.lua +++ b/config/nvim/lua/fschauen/plugins/telescope-file-browser.lua @@ -2,8 +2,11 @@ local M = { 'nvim-telescope/telescope-file-browser.nvim' } M.dependencies = { 'nvim-telescope/telescope.nvim' } +local ts = require('fschauen.plugins.telescope') +local lhs, desc = ts.keymap.lhs, ts.keymap.description + M.keys = { - { 'fB', 'Telescope file_browser' , desc = ' Telescope file [B]rowser' }, + { lhs('B'), 'Telescope file_browser' , desc = desc('file [B]rowser') }, } M.config = function(--[[plugin]]_, --[[opts]]_) diff --git a/config/nvim/lua/fschauen/plugins/telescope.lua b/config/nvim/lua/fschauen/plugins/telescope.lua index 287a3a2..7311cbe 100644 --- a/config/nvim/lua/fschauen/plugins/telescope.lua +++ b/config/nvim/lua/fschauen/plugins/telescope.lua @@ -9,30 +9,31 @@ M.dependencies = { M.cmd = 'Telescope' -local builtin = function(picker, opts) +local builtin_picker = function(name, opts) return function(title) return function() - local args = vim.tbl_extend('keep', { prompt_title = title }, opts or {}) - return require('telescope.builtin')[picker](args) + local picker = require('telescope.builtin')[name] + picker(vim.tbl_extend('force', opts or {}, { prompt_title = title })) end end end local util = require('fschauen.util') +local icons = require('fschauen.util.icons') local pickers = setmetatable({ - all_files = builtin('find_files', { + all_files = builtin_picker('find_files', { hidden = true, no_ignore = true, no_ignore_parent = true, }), - colorscheme = builtin('colorscheme', { + colorscheme = builtin_picker('colorscheme', { enable_preview = true, }), - diagnostics = builtin('diagnostics', { + diagnostics = builtin_picker('diagnostics', { bufnr = 0 }), - dotfiles = builtin('find_files', { + dotfiles = builtin_picker('find_files', { cwd = '~/.dotfiles', hidden = true, }), @@ -45,68 +46,68 @@ local pickers = setmetatable({ } end end, - here = builtin('current_buffer_fuzzy_find'), + here = builtin_picker('current_buffer_fuzzy_find'), }, { -- Fall back to telescope's built-in pickers if a custom one is not defined -- above, but make sure to keep the title we defined. - __index = function(_, picker) - return builtin(picker) + __index = function( --[[tbl]] _, key) + return builtin_picker(key) end }) -local desc = function(text) - return ' Telescope ' .. text -end +M.keymap = { + lhs = function(keys) return 'f' .. keys end, + description = function(text) return icons.ui.Telescope .. ' Telescope ' .. text end +} +local lhs, desc = M.keymap.lhs, M.keymap.description M.keys = { - { 'fa', pickers.autocommands ' Autocommands' , desc = desc('[a]utocommands') }, - { 'fb', pickers.buffers ' Buffers' , desc = desc('[b]uffers') }, - --'fB' used in telescope-file-browser - { 'fc', pickers.colorscheme ' Colorschemes' , desc = desc('[c]olorschemes') }, - { 'fC', pickers.commands ' Commands' , desc = desc('[C]ommands') }, - { 'fdd', pickers.diagnostics '󰀪 Document Diagnostics' , desc = desc('[d]iagnostics [d]ocument') }, - { 'fdw', pickers.diagnostics '󰀪 Workspace Diagnostics', desc = desc('[d]iagnostics [w]orkspace') }, - --'fe' - { 'ff', pickers.find_files ' Files' , desc = desc('[f]ind files') }, - { 'fF', pickers.all_files ' ALL files' , desc = desc('all [F]iles') }, - { 'fgr', pickers.live_grep ' Live grep' , desc = desc('Live [gr]ep') }, - { 'fgf', pickers.git_files ' Git files' , desc = desc('[g]it [f]iles') }, - { 'fgc', pickers.git_commits ' Commits' , desc = desc('[g]it [c]ommits') }, - { 'fh', pickers.here ' Current buffer' , desc = desc('[b]uffer [h]ere') }, - { 'fH', pickers.highlights '󰌶 Highlights' , desc = desc('[H]ighlights') }, - --'fi' used in nerdy - { 'fj', pickers.jumplist ' Jumplist' , desc = desc('[j]umplist') }, - { 'fk', pickers.keymaps ' Keymaps' , desc = desc('[k]eymaps') }, - { 'fK', pickers.help_tags ' Help tags' , desc = desc('[K] help/documentation') }, - { 'fl', pickers.loclist ' Location list' , desc = desc('[l]ocation List') }, - { 'fm', pickers.man_pages ' Man pages' , desc = desc('[m]an pages') }, - --'fn' used in vim-notify - { 'fo', pickers.vim_options ' Vim options' , desc = desc('vim [o]ptions') }, - --'fp' - { 'fq', pickers.quickfix ' Quickfix' , desc = desc('[q]uickfix') }, - { 'fr', pickers.lsp_references ' References' , desc = desc('[r]eferences') }, - { 'fR', pickers.registers '󱓥 Registers' , desc = desc('[R]registers') }, - { 'fs', pickers.lsp_document_symbols '󰫧 Document Symbols ' , desc = desc('lsp document [s]ymbols') }, - { 'fS', pickers.lsp_workspace_symbols '󱄑 Workspace Symbols ' , desc = desc('lsp workspace [S]ymbols') }, - --'ft' used in todo_comments - { 'fT', pickers.treesitter ' Treesitter symbols' , desc = desc('[T]reesitter Symbols') }, - --'fu' - --'fv' - { 'fw', pickers.selection ' Grep' , desc = desc('[w]word under cursor') }, - { 'fw', pickers.selection ' Grep', mode = 'v' , desc = desc('[w]ord(s) selected') }, - --'fx' - --'fy' - { 'fz', pickers.spell_suggest '󰓆 Spelling suggestions' , desc = desc('[z] spell suggestions') }, - { 'f.', pickers.dotfiles ' Dotfiles' , desc = desc('[.]dotfiles') }, - { 'f:', pickers.command_history ' Command history' , desc = desc('[:]command history') }, - { 'f/', pickers.search_history ' Search history' , desc = desc('[/]search history') }, - { 'f', pickers.resume '󰐎 Resume' , desc = desc('Resume ') }, + { lhs'a', pickers.autocommands ' Autocommands' , desc = desc('[a]utocommands') }, + { lhs'b', pickers.buffers ' Buffers' , desc = desc('[b]uffers') }, + --lhs'B' used in telescope-file-browser + { lhs'c', pickers.colorscheme ' Colorschemes' , desc = desc('[c]olorschemes') }, + { lhs'C', pickers.commands ' Commands' , desc = desc('[C]ommands') }, + { lhs'd', pickers.diagnostics '󰀪 Diagnostics' , desc = desc('[d]iagnostics') }, + --lhs'e' + { lhs'f', pickers.find_files ' Files' , desc = desc('[f]ind files') }, + { lhs'F', pickers.all_files ' ALL files' , desc = desc('all [F]iles') }, + { lhs'gr', pickers.live_grep ' Live grep' , desc = desc('Live [gr]ep') }, + { lhs'gf', pickers.git_files ' Git files' , desc = desc('[g]it [f]iles') }, + { lhs'gc', pickers.git_commits ' Commits' , desc = desc('[g]it [c]ommits') }, + { lhs'h', pickers.here ' Current buffer' , desc = desc('[b]uffer [h]ere') }, + { lhs'H', pickers.highlights '󰌶 Highlights' , desc = desc('[H]ighlights') }, + --lhs'i' used in nerdy + { lhs'j', pickers.jumplist ' Jumplist' , desc = desc('[j]umplist') }, + { lhs'k', pickers.keymaps ' Keymaps' , desc = desc('[k]eymaps') }, + { lhs'K', pickers.help_tags ' Help tags' , desc = desc('[K] help/documentation') }, + { lhs'l', pickers.loclist ' Location list' , desc = desc('[l]ocation List') }, + { lhs'm', pickers.man_pages ' Man pages' , desc = desc('[m]an pages') }, + --lhs'n' used in vim-notify + { lhs'o', pickers.vim_options ' Vim options' , desc = desc('[o]ptions') }, + --lhs'p' + { lhs'q', pickers.quickfix ' Quickfix' , desc = desc('[q]uickfix') }, + { lhs'r', pickers.lsp_references ' References' , desc = desc('[r]eferences') }, + { lhs'R', pickers.registers '󱓥 Registers' , desc = desc('[R]registers') }, + { lhs's', pickers.lsp_document_symbols '󰫧 Document Symbols ' , desc = desc('LSP document [s]ymbols') }, + { lhs'S', pickers.lsp_workspace_symbols '󱄑 Workspace Symbols ' , desc = desc('LSP workspace [S]ymbols') }, + --lhs't' used in todo_comments + { lhs'T', pickers.treesitter ' Treesitter symbols' , desc = desc('[T]reesitter Symbols') }, + --lhs'u' + --lhs'v' + { lhs'w', pickers.selection ' Grep' , desc = desc('[w]word under cursor') }, + { lhs'w', pickers.selection ' Grep', mode = 'v' , desc = desc('[w]ord(s) selected') }, + --lhs'x' + --lhs'y' + { lhs'z', pickers.spell_suggest '󰓆 Spelling suggestions' , desc = desc('[z] spell suggestions') }, + { lhs'.', pickers.dotfiles ' Dotfiles' , desc = desc('[.]dotfiles') }, + { lhs':', pickers.command_history ' Command history' , desc = desc('[:]command history') }, + { lhs'/', pickers.search_history ' Search history' , desc = desc('[/]search history') }, + { lhs'', pickers.resume '󰐎 Resume' , desc = desc('Resume ') }, } M.opts = function(--[[plugin]]_, opts) local actions = require('telescope.actions') local layout = require('telescope.actions.layout') - local icons = require('fschauen.util.icons') local trouble = vim.F.npcall(require, 'trouble.providers.telescope') or {} local mappings = { @@ -129,7 +130,7 @@ M.opts = function(--[[plugin]]_, opts) defaults = { mappings = { i = mappings, n = mappings }, - prompt_prefix = '  ', + prompt_prefix = ' ' .. icons.ui.Telescope .. ' ', selection_caret = icons.ui.Play .. ' ', multi_icon = icons.ui.Checkbox .. ' ', @@ -166,13 +167,12 @@ M.opts = function(--[[plugin]]_, opts) }) end - -M.config = function(--[[plugin]]_, opts) +M.config = function( --[[plugin]] _, opts) require('telescope').setup(opts) require('telescope').load_extension('fzf') vim.api.nvim_create_autocmd('User', { desc = 'Enable line number in Telescope previewers.', - group = vim.api.nvim_create_augroup('fschauen.telescope', { clear = true } ), + group = vim.api.nvim_create_augroup('fschauen.telescope', { clear = true }), pattern = 'TelescopePreviewerLoaded', command = 'setlocal number' }) diff --git a/config/nvim/lua/fschauen/plugins/todo-comments.lua b/config/nvim/lua/fschauen/plugins/todo-comments.lua index 35a0def..8d686fd 100644 --- a/config/nvim/lua/fschauen/plugins/todo-comments.lua +++ b/config/nvim/lua/fschauen/plugins/todo-comments.lua @@ -7,8 +7,11 @@ M.dependencies = { M.event = { 'BufReadPost', 'BufNewFile' } +local ts = require('fschauen.plugins.telescope') +local lhs, desc = ts.keymap.lhs, ts.keymap.description + M.keys = { - { 'ft', 'TodoTelescope', desc = ' Telescope [t]odos' }, + { lhs('t'), 'TodoTelescope', desc = desc('[t]odos') }, } M.opts = function(--[[plugin]]_, opts) diff --git a/config/nvim/lua/fschauen/util/icons.lua b/config/nvim/lua/fschauen/util/icons.lua index 9f67f93..4b4417f 100644 --- a/config/nvim/lua/fschauen/util/icons.lua +++ b/config/nvim/lua/fschauen/util/icons.lua @@ -125,6 +125,7 @@ M.ui = { ReadOnly = '', -- 'RO', Search = '', --  Sleep = '󰒲', + Telescope = '', TestTube = '󰙨', -- 󰤑 Toggle = '󰨚', Warning = '',