From 7a32abb7c07c320cdeae19897d9daaea48acb1bb Mon Sep 17 00:00:00 2001 From: Elvis Claros Castro Date: Sun, 30 Nov 2025 23:37:04 -0300 Subject: =?UTF-8?q?refactorizaci=C3=B3n!:=20migraci=C3=B3n=20de=20la=20fun?= =?UTF-8?q?cionalidad=20de=20b=C3=BAsqueda=20y=20selecci=C3=B3n=20de=20arc?= =?UTF-8?q?hivos=20de=20Telescope=20a=20Snacks.nvim?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CAMBIO IMPORTANTE: Se elimina el plugin Telescope y los módulos personalizados relacionados (init, mappings, my_actions, setup). Toda la navegación y búsqueda de archivos, buffers y selectores ahora utiliza Snacks.nvim. Se actualizan los mapeos de teclas y las dependencias de plugins para reflejar esta migración. También se modifican las configuraciones de plugins (codecompanion, copilot-chat, dap, lualine, refactoring, todo-comments) para eliminar o reemplazar el uso de Telescope por Snacks. Algunas opciones de formato en null-ls se comentan. Este cambio requiere Snacks.nvim y elimina nvim-telescope/telescope.nvim del espacio de trabajo. --- lua/config/autocmds.lua | 2 +- lua/config/init.lua | 1 - lua/config/keymaps.lua | 2 +- lua/pi/lsp/attach.lua | 10 +- lua/pi/lsp/null-ls.lua | 36 +++---- lua/pi/telescope/init.lua | 186 --------------------------------- lua/pi/telescope/mappings.lua | 55 ---------- lua/pi/telescope/my_actions.lua | 170 ------------------------------ lua/pi/telescope/setup.lua | 222 ---------------------------------------- lua/plugins/codecompanion.lua | 4 +- lua/plugins/copilot-chat.lua | 7 +- lua/plugins/dap.lua | 10 +- lua/plugins/lualine.lua | 4 +- lua/plugins/refactoring.lua | 3 +- lua/plugins/snacks.lua | 88 ++++++++++++++++ lua/plugins/telescope.lua | 35 ------- lua/plugins/todo-comments.lua | 2 +- 17 files changed, 128 insertions(+), 709 deletions(-) delete mode 100644 lua/pi/telescope/init.lua delete mode 100644 lua/pi/telescope/mappings.lua delete mode 100644 lua/pi/telescope/my_actions.lua delete mode 100644 lua/pi/telescope/setup.lua create mode 100644 lua/plugins/snacks.lua delete mode 100644 lua/plugins/telescope.lua (limited to 'lua') diff --git a/lua/config/autocmds.lua b/lua/config/autocmds.lua index ad999b9..1d3fe8a 100644 --- a/lua/config/autocmds.lua +++ b/lua/config/autocmds.lua @@ -63,7 +63,7 @@ vim.api.nvim_create_autocmd("BufEnter", { if vim.opt.diff:get() then local wk = require "which-key" local opts = { - mode = "n", -- NORMAL mode + mode = "n", -- NORMAL mode buffer = vim.api.nvim_get_current_buf(), -- Specify a buffer number for buffer local mappings } local mappings = { diff --git a/lua/config/init.lua b/lua/config/init.lua index bc22409..ee1c549 100644 --- a/lua/config/init.lua +++ b/lua/config/init.lua @@ -27,7 +27,6 @@ vim.api.nvim_create_autocmd("User", { require "config.autocmds" require "config.usercmds" require "config.keymaps" - require "config.diagnostic" require "config.composer" end, }) diff --git a/lua/config/keymaps.lua b/lua/config/keymaps.lua index 07c9d77..88251eb 100644 --- a/lua/config/keymaps.lua +++ b/lua/config/keymaps.lua @@ -108,7 +108,7 @@ map("n", "vi", function() end, { desc = "Create REPL in vertical or horizontal split" }) map("n", "-", "Oil", { desc = "Open parent directory" }) map("n", "fg", function() - require("telescope").extensions.live_grep_args.live_grep_args() + Snacks.picker.grep() end, { desc = "run grep" }) -- Asignar la función a una tecla específica diff --git a/lua/pi/lsp/attach.lua b/lua/pi/lsp/attach.lua index c61f5a1..3611279 100644 --- a/lua/pi/lsp/attach.lua +++ b/lua/pi/lsp/attach.lua @@ -1,4 +1,4 @@ -local telescope_mapper = require "pi.telescope.mappings" +-- local telescope_mapper = require "pi.telescope.mappings" return function(client, bufnr) -- keymaps for lsp @@ -23,10 +23,10 @@ return function(client, bufnr) vim.notify("Inlay hints " .. (current and "disabled" or "enabled")) end, { buffer = 0, desc = "LSP Toggle inlay hints" }) - telescope_mapper("gr", "lsp_references", { buffer = true, desc = "LSP References of symbol on cursor" }) - telescope_mapper("pv", "find_symbol", { buffer = true, desc = "LSP find symbol on the project" }) - telescope_mapper("pd", "lsp_document_symbols", { buffer = true, desc = "LSP document symbols" }) - telescope_mapper("", "lsp_definitions", { buffer = true, desc = "LSP go to definition" }) + vim.keymap.set("n", "gr", function() Snacks.picker.lsp_references() end, { buffer = bufnr, desc = "LSP References of symbol on cursor" }) + vim.keymap.set("n", "pv", function() Snacks.picker.lsp_workspace_symbols() end, { buffer = bufnr, desc = "LSP find symbol on the project" }) + vim.keymap.set("n", "pd", function() Snacks.picker.lsp_symbols() end, { buffer = bufnr, desc = "LSP document symbols" }) + vim.keymap.set("n", "", function() Snacks.picker.lsp_definitions() end, { buffer = bufnr, desc = "LSP go to definition" }) vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc" diff --git a/lua/pi/lsp/null-ls.lua b/lua/pi/lsp/null-ls.lua index 3026bd4..d8211ed 100644 --- a/lua/pi/lsp/null-ls.lua +++ b/lua/pi/lsp/null-ls.lua @@ -11,7 +11,7 @@ null_ls.setup { null_ls.builtins.code_actions.refactoring, null_ls.builtins.formatting.alejandra, require "none-ls-luacheck.diagnostics.luacheck", - null_ls.builtins.formatting.stylua, + -- null_ls.builtins.formatting.stylua, require "none-ls.diagnostics.yamllint", -- require("none-ls.diagnostics.ruff"), @@ -72,23 +72,23 @@ null_ls.setup { -- --quiet: suprime la salida normal -- --color: colorea el diff -- --exclude ".*test.*": excluye archivos que coincidan con el patrón - null_ls.builtins.formatting.black.with { - extra_args = { - "--line-length", - "100", - -- "--fast", - "--skip-string-normalization", - "--skip-magic-trailing-comma", - "--target-version", - "py312", - -- "--preview", - -- "--diff", - -- "--quiet", - -- "--color", - "--exclude", - ".*test.*", - }, - }, + -- null_ls.builtins.formatting.black.with { + -- extra_args = { + -- "--line-length", + -- "120", + -- -- "--fast", + -- "--skip-string-normalization", + -- "--skip-magic-trailing-comma", + -- "--target-version", + -- "py312", + -- -- "--preview", + -- -- "--diff", + -- -- "--quiet", + -- -- "--color", + -- "--exclude", + -- ".*test.*", + -- }, + -- }, -- Assembly formatter { name = "asmfmt", diff --git a/lua/pi/telescope/init.lua b/lua/pi/telescope/init.lua deleted file mode 100644 index 7117a35..0000000 --- a/lua/pi/telescope/init.lua +++ /dev/null @@ -1,186 +0,0 @@ -local SHOULD_RELOAD_TELESCOPE = false - -local reloader = function() - if SHOULD_RELOAD_TELESCOPE then - Reload "plenary" - Reload "telescope" - Reload "pi.telescope.setup" - end -end - -local fb_actions = require("telescope").extensions.file_browser.actions -local actions = require "telescope.actions" -local my_actions = require "pi.telescope.my_actions" - -local M = {} - -function M.project_files() - local opts = { show_untracked = true } -- define here if you want to define something - local ok = pcall(require("telescope.builtin").git_files, opts) - if not ok then - require("telescope.builtin").find_files(opts) - end -end - -function M.branches() - require("telescope.builtin").git_branches { - attach_mappings = function(_, map) - map("i", "", actions.git_create_branch) - map("n", "", actions.git_create_branch) - return true - end, - } -end - -function M.search_config() - require("telescope.builtin").git_files { - prompt_title = "< Dotfiles >", - cwd = "$HOME/.dotfiles", - show_untracked = true, - } -end - -M.find_nvim_config = function() - require("telescope.builtin").find_files { - prompt_title = "< Neovim >", - cwd = "$HOME/.config/nvim/", - } -end - -M.find_nvim_plugin = function() - require("telescope.builtin").find_files { - prompt_title = "< Plugins >", - cwd = "$HOME/.config/nvim/lua/plugins/", - attach_mappings = function(_, map) - map("i", "", my_actions.create_plugin) - map("i", "", my_actions.disable_plugin) - map("i", "", my_actions.enable_plugin) - - return true - end, - } -end - -function M.grep_string() - vim.ui.input({ prompt = "Grep for > " }, function(input) - if input == nil then - return - end - require("telescope.builtin").grep_string { search = input } - end) -end - -function M.grep_word() - require("telescope.builtin").grep_string { search = vim.fn.expand "" } -end - -function M.find_symbol() - vim.ui.input({ prompt = "Symbol for > " }, function(input) - if input == nil then - return - end - require("telescope.builtin").lsp_workspace_symbols { query = input } - end) -end - -function M.my_plugins() - if vim.fn.isdirectory(vim.fn.getenv "HOME" .. "/code/plugins/") == 0 then - vim.notify("Directory ~/code/plugins does not exists", vim.log.levels.WARN, { title = "Telescope Mappings" }) - return - end - require("telescope.builtin").find_files { - cwd = "~/code/plugins/", - } -end - -function M.scratchs() - require("telescope.builtin").find_files { - prompt_title = "Scratchs", - no_ignore = true, - cwd = "~/.config/nvim/lua/scratchs/", - attach_mappings = function(_, map) - map("i", "", my_actions.create_scratch_file) - - return true - end, - } -end - -function M.projectionist() - return require("telescope").extensions.projectionist.projectionist() -end - -function M.laravel_commands() - return require("telescope").extensions.laravel.laravel() -end - -function M.api_specs() - if vim.fn.isdirectory "./api-specification" == 0 then - vim.notify("Directory api-specification does not exists", vim.log.levels.WARN, { title = "Telescope Mappings" }) - return - end - require("telescope.builtin").git_files { - cwd = "./api-specification", - show_untracked = true, - } -end - -function M.worktree() - return require("telescope").extensions.git_worktree.git_worktrees() -end - -function M.worktree_create() - return require("telescope").extensions.git_worktree.create_git_worktree() -end - -function M.refactor() - return require("telescope").extensions.refactoring.refactors() -end - -function M.gateway() - return require("pi.php.gateway").graphql_definitions { - layout_config = { - horizontal = { - preview_width = function(_, cols, _) - return math.floor(cols * 0.7) - end, - }, - }, - } -end - -function M.file_browser_relative() - return M.file_browser { path = "%:p:h" } -end - -function M.file_browser(opts) - opts = opts or {} - - opts = { - path = opts.path, - sorting_strategy = "ascending", - scroll_strategy = "cycle", - layout_config = { - prompt_position = "top", - }, - - attach_mappings = function(_, map) - map("i", "", fb_actions.create_from_prompt) - - return true - end, - } - - return require("telescope").extensions.file_browser.file_browser(opts) -end - -return setmetatable({}, { - __index = function(_, k) - reloader() - if M[k] then - return M[k] - else - return require("telescope.builtin")[k] - end - end, -}) diff --git a/lua/pi/telescope/mappings.lua b/lua/pi/telescope/mappings.lua deleted file mode 100644 index a927023..0000000 --- a/lua/pi/telescope/mappings.lua +++ /dev/null @@ -1,55 +0,0 @@ -local map_tele = function(key, f, opts) - local default = { - mode = "n", - options = {}, - buffer = nil, - desc = nil, - } - opts = opts or {} - opts = vim.tbl_deep_extend("force", default, opts or {}) - - local rhs = function() - R("pi.telescope")[f](opts.options) - end - - local map_options = { - remap = false, - silent = true, - } - if opts.buffer then - map_options.buffer = opts.buffer - end - if opts.desc then - map_options.desc = "Telescope: " .. opts.desc - end - - vim.keymap.set(opts.mode, key, rhs, map_options) -end - --- not shure what this line does -vim.api.nvim_set_keymap( - "c", - "", - "(TelescopeFuzzyCommandSearch)", - { noremap = false, nowait = true, desc = "In comand look for previous commands" } -) - -map_tele("pp", "project_files", { desc = "Open Project files" }) -map_tele("gc", "branches", { desc = "Git Branches selector" }) -map_tele("pw", "grep_word", { desc = "Grep word under cursor" }) -map_tele("ps", "grep_string", { desc = "Grep provided input string" }) -map_tele("rc", "search_config", { desc = "Search Files in .dotfiles directory" }) -map_tele("rn", "find_nvim_config", { desc = "Search Files in nvim config directory" }) -map_tele("rp", "find_nvim_plugin", { desc = "Search Neovim plugins" }) -map_tele("rs", "scratchs", { desc = "Search Neovim Scratchs files" }) -map_tele("ph", "help_tags", { desc = "Neovim Help" }) -map_tele("pe", "buffers", { desc = "Open buffers" }) -map_tele("pr", "treesitter", { desc = "Treesitter buffer elements" }) -map_tele("bb", "file_browser_relative", { desc = "Current directory" }) -map_tele("bp", "file_browser", { desc = "Project directory" }) -map_tele("gs", "git_status", { desc = "Git status" }) -map_tele("ve", "diagnostics", { desc = "Diagnostic of the buffer" }) -map_tele("po", "api_specs", { desc = "Openapi directory" }) -map_tele("pm", "gateway", { desc = "Graphql mutations and queries" }) - -return map_tele diff --git a/lua/pi/telescope/my_actions.lua b/lua/pi/telescope/my_actions.lua deleted file mode 100644 index 2afb8aa..0000000 --- a/lua/pi/telescope/my_actions.lua +++ /dev/null @@ -1,170 +0,0 @@ -local M = {} - -local action_state = require "telescope.actions.state" -local actions = require "telescope.actions" - -M.create_plugin = function(prompt_bufnr) - local new_plugin = action_state.get_current_line() - actions.close(prompt_bufnr) - vim.cmd(string.format("edit ~/.config/nvim/lua/plugins/%s.lua", new_plugin)) -end - - -local get_disable_stm_node = function(bufnr, tree) - vim.treesitter.query.set( - "lua", - "pi_plugin_is_disabled", - [[ -(return_statement - (expression_list - (table_constructor - (field - name: (identifier) @enabled (#eq? @enabled "enabled") - value: (false) @is_false - ) - ) - ) - ) - ]] - ) - - local query = vim.treesitter.query.get("lua", "pi_plugin_is_disabled") - - for id, node in query:iter_captures(tree:root(), bufnr) do - if query.captures[id] == "enabled" then - return node - end - end - - return nil -end - -local get_enabled_node = function(bufnr, tree) - vim.treesitter.query.set( - "lua", - "pi_plugin_has_enable_property", - [[ -(return_statement - (expression_list - (table_constructor - (field - name: (identifier) @enabled (#eq? @enabled "enabled") - ) - ) - ) - ) - ]] - ) - - local query = vim.treesitter.query.get("lua", "pi_plugin_has_enable_property") - - for id, node in query:iter_captures(tree:root(), bufnr) do - if query.captures[id] == "enabled" then - return node - end - end - - return nil -end - -local get_return_node = function(bufnr, tree) - vim.treesitter.query.set( - "lua", - "pi_plugin_return_table_constructor", - [[ -(return_statement - (expression_list - (table_constructor) @table_constructor - ) - ) - ]] - ) - - local query = vim.treesitter.query.get("lua", "pi_plugin_return_table_constructor") - - for id, node in query:iter_captures(tree:root(), bufnr) do - if query.captures[id] == "table_constructor" then - return node - end - end - - return nil -end - -M.disable_plugin = function(prompt_bufnr) - local entry = action_state.get_selected_entry() - local uri = vim.uri_from_fname(entry.cwd .. entry[1]) - local bufnr = vim.uri_to_bufnr(uri) - vim.fn.bufload(bufnr) - - local parsers = require "nvim-treesitter.parsers" - local parser = parsers.get_parser(bufnr) - local tree = parser:parse()[1] - - local disabled_stm_node = get_disable_stm_node(bufnr, tree) - if disabled_stm_node ~= nil then - vim.notify("Plugin is already disable", vim.log.levels.WARN, {}) - return - end - - local start_line - local end_line - - local enable_node = get_enabled_node(bufnr, tree) - if enable_node == nil then - -- node does not exists need to assume line - local return_node = get_return_node(bufnr, tree) - - if return_node == nil then - vim.notify("Can determine how to diable the plugin", vim.log.levels.ERROR, {}) - return - end - - start_line = return_node:start() + 2 - end_line = start_line - else - start_line = enable_node:start() - end_line = start_line + 1 - end - - vim.api.nvim_buf_set_lines(bufnr, start_line, end_line, false, { " enabled = false," }) - vim.notify("Plugin " .. entry[1] .. " Disabled", vim.log.levels.INFO, {}) - actions.close(prompt_bufnr) - vim.api.nvim_buf_call(bufnr, function() - vim.cmd "write" - end) -end - -M.enable_plugin = function(prompt_bufnr) - local entry = action_state.get_selected_entry() - local uri = vim.uri_from_fname(entry.cwd .. entry[1]) - local bufnr = vim.uri_to_bufnr(uri) - vim.fn.bufload(bufnr) - - local parsers = require "nvim-treesitter.parsers" - local parser = parsers.get_parser(bufnr) - - local tree = parser:parse()[1] - - local disabled_stm_node = get_disable_stm_node(bufnr, tree) - if disabled_stm_node == nil then - vim.notify("Plugin is already Enable", vim.log.levels.WARN, {}) - return - end - - local enable_line = disabled_stm_node:start() - vim.api.nvim_buf_set_lines(bufnr, enable_line, enable_line + 1, false, {}) - vim.notify("Plugin " .. entry[1] .. " Enabled", vim.log.levels.INFO, {}) - actions.close(prompt_bufnr) - vim.api.nvim_buf_call(bufnr, function() - vim.cmd "write" - end) -end - -M.create_scratch_file = function(prompt_bufnr) - local new_scratch = action_state.get_current_line() - actions.close(prompt_bufnr) - vim.cmd(string.format("edit ~/.config/nvim/lua/scratchs/%s.lua", new_scratch)) -end - -return M diff --git a/lua/pi/telescope/setup.lua b/lua/pi/telescope/setup.lua deleted file mode 100644 index 0e368c7..0000000 --- a/lua/pi/telescope/setup.lua +++ /dev/null @@ -1,222 +0,0 @@ -local actions = require "telescope.actions" -local action_state = require "telescope.actions.state" -local action_layout = require "telescope.actions.layout" - -local set_prompt_to_entry_value = function(prompt_bufnr) - local entry = action_state.get_selected_entry() - if not entry or not type(entry) == "table" then - return - end - - action_state.get_current_picker(prompt_bufnr):reset_prompt(entry.ordinal) -end - -local filetype_hook = function(filepath, bufnr, opts) - -- Here for example you can say: if ft == "xyz" then this_regex_highlighing else nothing end - -- - local is_image = function(filepath) - local image_extensions = { "png", "jpg" } -- Supported image formats - local split_path = vim.split(filepath:lower(), ".", { plain = true }) - local extension = split_path[#split_path] - return vim.tbl_contains(image_extensions, extension) - end - if not is_image(filepath) then - return true - end - local ui = require "image.ui" - local options = require "image.options" - local dimensions = require "image.dimensions" - local api = require "image.api" - local config = require "image.config" - local user_opts = { - render = { - foreground_color = true, - background_color = true, - }, - } - local global_opts = vim.tbl_deep_extend("force", config.DEFAULT_OPTS, user_opts) - - local ascii_width, ascii_height, horizontal_padding, vertical_padding, img_width, img_height = - dimensions.calculate_ascii_width_height(opts.winid, filepath, global_opts) - options.set_options_before_render(bufnr) - ui.buf_clear(bufnr) - local label = ui.create_label( - filepath, - ascii_width, - horizontal_padding, - global_opts.render.show_image_dimensions, - img_width, - img_height - ) - - api.get_ascii_data_sync(filepath, ascii_width, ascii_height, global_opts, function(ascii_data) - ui.buf_insert_data_with_padding(bufnr, ascii_data, horizontal_padding, vertical_padding, label, global_opts) - - options.set_options_after_render(bufnr) - end) - return false -end - -require("telescope").setup { - defaults = { - preview = { - filetype_hook = filetype_hook, - }, - prompt_prefix = "❯ ", - selection_caret = "❯ ", - - winblend = 0, - - layout_strategy = "horizontal", - layout_config = { - width = 0.95, - height = 0.85, - -- preview_cutoff = 120, - prompt_position = "bottom", - - horizontal = { - preview_width = function(_, cols, _) - if cols > 200 then - return math.floor(cols * 0.5) - else - return math.floor(cols * 0.7) - end - end, - }, - - vertical = { - width = 0.9, - height = 0.95, - preview_height = 0.5, - }, - - flex = { - horizontal = { - preview_width = 0.9, - }, - }, - }, - - selection_strategy = "reset", - sorting_strategy = "descending", - scroll_strategy = "cycle", - color_devicons = true, - - mappings = { - i = { - -- [""] = false, - -- [""] = actions.select_horizontal, - [""] = "move_selection_next", - - [""] = set_prompt_to_entry_value, - - -- These are new :) - [""] = action_layout.toggle_preview, - [""] = action_layout.toggle_mirror, - -- [""] = action_layout.toggle_prompt_position, - - -- [""] = actions.master_stack, - - -- [""] = actions.send_to_qflist + actions.open_qflist, - -- [""] = actions.send_selected_to_qflist + actions.open_qflist, - - -- This is nicer when used with smart-history plugin. - [""] = actions.cycle_history_next, - [""] = actions.cycle_history_prev, - - -- [""] = function(prompt_bufnr) - -- local opts = { - -- callback = actions.toggle_selection, - -- loop_callback = actions.send_selected_to_qflist, - -- } - -- require("telescope").extensions.hop._hop_loop(prompt_bufnr, opts) - -- end, - - -- [""] = function() - -- vim.api.nvim_input("") - -- end, - }, - }, - - -- borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - -- file_ignore_patterns = nil, - - file_previewer = require("telescope.previewers").vim_buffer_cat.new, - grep_previewer = require("telescope.previewers").vim_buffer_vimgrep.new, - qflist_previewer = require("telescope.previewers").vim_buffer_qflist.new, - - history = { - path = "~/.local/share/nvim/databases/telescope_history.sqlite3", - limit = 100, - }, - -- buffer_previewer_maker = new_maker, - }, - - pickers = { - fd = { - mappings = { - n = { - ["kj"] = "close", - }, - }, - }, - - git_branches = { - mappings = { - i = { - [""] = false, - }, - }, - }, - }, - - extensions = { - fzy_native = { - override_generic_sorter = true, - override_file_sorter = true, - }, - - fzf_writer = { - use_highlighter = false, - minimum_grep_characters = 6, - }, - - hop = { - -- keys define your hop keys in order; defaults to roughly lower- and uppercased home row - keys = { "a", "s", "d", "f", "g", "h", "j", "k", "l", ";" }, -- ... and more - - -- Highlight groups to link to signs and lines; the below configuration refers to demo - -- sign_hl typically only defines foreground to possibly be combined with line_hl - sign_hl = { "WarningMsg", "Title" }, - - -- optional, typically a table of two highlight groups that are alternated between - line_hl = { "CursorLine", "Normal" }, - - -- options specific to `hop_loop` - -- true temporarily disables Telescope selection highlighting - clear_selection_hl = false, - -- highlight hopped to entry with telescope selection highlight - -- note: mutually exclusive with `clear_selection_hl` - trace_entry = true, - -- jump to entry where hoop loop was started from - reset_selection = true, - }, - - ["ui-select"] = { - require("telescope.themes").get_dropdown { - borderchars = { - prompt = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - results = { "─", "│", "─", "│", "╭", "╮", "┤", "├" }, - preview = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - }, - width = 0.8, - previewer = false, - }, - }, - }, -} - -require("telescope").load_extension "notify" -require("telescope").load_extension "file_browser" -require("telescope").load_extension "ui-select" -require("telescope").load_extension "fzf" diff --git a/lua/plugins/codecompanion.lua b/lua/plugins/codecompanion.lua index ff00936..052b066 100644 --- a/lua/plugins/codecompanion.lua +++ b/lua/plugins/codecompanion.lua @@ -6,7 +6,7 @@ return { dependencies = { "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter", - "nvim-telescope/telescope.nvim", -- Using telescope for file and buffer picker + -- "nvim-telescope/telescope.nvim", -- Using telescope for file and buffer picker "jellydn/spinner.nvim", -- Show loading spinner when request is started "ravitemer/codecompanion-history.nvim", -- History management extension { @@ -200,7 +200,7 @@ return { -- Number of days after which chats are automatically deleted (0 to disable) expiration_days = 0, -- Picker interface (auto resolved to a valid picker) - picker = "telescope", -- ("telescope", "snacks", "fzf-lua", or "default") + picker = "snacks", -- ("telescope", "snacks", "fzf-lua", or "default") -- Optional filter function to control which chats are shown when browsing chat_filter = nil, -- function(chat_data) return boolean end -- Customize picker keymaps (optional) diff --git a/lua/plugins/copilot-chat.lua b/lua/plugins/copilot-chat.lua index c7decda..be40096 100644 --- a/lua/plugins/copilot-chat.lua +++ b/lua/plugins/copilot-chat.lua @@ -26,7 +26,7 @@ return { -- version = "v3.3.0", dependencies = { { "nvim-lua/plenary.nvim" }, - { "nvim-telescope/telescope.nvim" }, -- Using telescope instead of fzf-lua + -- { "nvim-telescope/telescope.nvim" }, -- Using telescope instead of fzf-lua }, opts = { -- question_header = "## User ", @@ -34,7 +34,7 @@ return { -- error_header = "## Error ", prompts = prompts, -- Turn off Claude model as it's not working well - -- model = "claude-3.5-sonnet", + model = "gpt-4.1", auto_follow_cursor = false, -- Don't follow the cursor after getting response }, @@ -50,7 +50,8 @@ return { -- opts.answer_header = " Copilot " -- Override the git prompts message opts.prompts.Commit = { - prompt = '> #git:staged\n\nWrite commit message with commitizen convention. Write clear, informative commit messages that explain the "what" and "why" behind changes, not just the "how".', + prompt = + '> #git:staged\n\nWrite commit message with commitizen convention. Write clear, informative commit messages that explain the "what" and "why" behind changes, not just the "how".', } chat.setup(opts) diff --git a/lua/plugins/dap.lua b/lua/plugins/dap.lua index 01e6567..ab84671 100644 --- a/lua/plugins/dap.lua +++ b/lua/plugins/dap.lua @@ -6,17 +6,17 @@ return { "leoluz/nvim-dap-go", "mxsdev/nvim-dap-vscode-js", "anuvyklack/hydra.nvim", - "nvim-telescope/telescope-dap.nvim", + -- "nvim-telescope/telescope-dap.nvim", -- Note: cmp-dap removed due to migration to blink.cmp -- blink.cmp handles DAP completions automatically }, keys = { { "d", desc = "Open Debug menu" } }, config = function() require "pi.dap" - local ok_telescope, telescope = pcall(require, "telescope") - if ok_telescope then - telescope.load_extension "dap" - end + -- local ok_telescope, telescope = pcall(require, "telescope") + -- if ok_telescope then + -- telescope.load_extension "dap" + -- end -- Note: DAP completions are handled automatically by blink.cmp -- No additional configuration needed diff --git a/lua/plugins/lualine.lua b/lua/plugins/lualine.lua index aa74930..9409537 100644 --- a/lua/plugins/lualine.lua +++ b/lua/plugins/lualine.lua @@ -133,7 +133,7 @@ return { { "filename", on_click = function() - require("telescope.builtin").find_files() + Snacks.picker.files() -- print('file name clicked') end, icon = " ", @@ -147,7 +147,7 @@ return { { "diagnostics", on_click = function() - require("telescope.builtin").diagnostics() + Snacks.picker.diagnostics() end, -- separator = { left = '' }, sources = { "nvim_diagnostic" }, diff --git a/lua/plugins/refactoring.lua b/lua/plugins/refactoring.lua index 92cdf64..7ca3989 100644 --- a/lua/plugins/refactoring.lua +++ b/lua/plugins/refactoring.lua @@ -8,7 +8,7 @@ return { { "rr", function() - require("telescope").extensions.refactoring.refactors() + require("refactoring").select_refactor() end, mode = { "n", "v" }, desc = "Refactoring menu", @@ -16,6 +16,5 @@ return { }, config = function() require("refactoring").setup {} - require("telescope").load_extension "refactoring" end, } diff --git a/lua/plugins/snacks.lua b/lua/plugins/snacks.lua new file mode 100644 index 0000000..bcec3e5 --- /dev/null +++ b/lua/plugins/snacks.lua @@ -0,0 +1,88 @@ +return { + "folke/snacks.nvim", + priority = 1000, + lazy = false, + ---@type snacks.Config + opts = { + bigfile = { enabled = true }, + dashboard = { enabled = true }, + explorer = { enabled = true }, + indent = { enabled = true }, + input = { enabled = true }, + notifier = { enabled = true }, + picker = { enabled = true }, + quickfile = { enabled = true }, + scope = { enabled = true }, + scroll = { enabled = true }, + statuscolumn = { enabled = true }, + words = { enabled = true }, + }, + keys = { + -- Top Pickers & Explorer + { "", function() Snacks.picker.smart() end, desc = "Smart Find Files" }, + { ",", function() Snacks.picker.buffers() end, desc = "Buffers" }, + { "/", function() Snacks.picker.grep() end, desc = "Grep" }, + { ":", function() Snacks.picker.command_history() end, desc = "Command History" }, + { "n", function() Snacks.picker.notifications() end, desc = "Notification History" }, + { "e", function() Snacks.explorer() end, desc = "File Explorer" }, + -- find + { "fb", function() Snacks.picker.buffers() end, desc = "Buffers" }, + { "fc", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" }, + { "ff", function() Snacks.picker.files() end, desc = "Find Files" }, + { "gf", function() Snacks.picker.git_files() end, desc = "Find Git Files" }, + { "fr", function() Snacks.picker.recent() end, desc = "Recent" }, + -- git + { "gl", function() Snacks.picker.git_log() end, desc = "Git Log" }, + { "gs", function() Snacks.picker.git_status() end, desc = "Git Status" }, + -- Grep + { "sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" }, + { "sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" }, + { "sg", function() Snacks.picker.grep() end, desc = "Grep" }, + { "sw", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" } }, + -- search + { 's"', function() Snacks.picker.registers() end, desc = "Registers" }, + { 's/', function() Snacks.picker.search_history() end, desc = "Search History" }, + { "sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" }, + { "sc", function() Snacks.picker.command_history() end, desc = "Command History" }, + { "sC", function() Snacks.picker.commands() end, desc = "Commands" }, + { "sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" }, + { "sh", function() Snacks.picker.help() end, desc = "Help Pages" }, + { "si", function() Snacks.picker.icons() end, desc = "Icons" }, + { "sk", function() Snacks.picker.keymaps() end, desc = "Keymaps" }, + { "sl", function() Snacks.picker.loclist() end, desc = "Location List" }, + { "sm", function() Snacks.picker.marks() end, desc = "Marks" }, + { "sq", function() Snacks.picker.qflist() end, desc = "Quickfix List" }, + { "sR", function() Snacks.picker.resume() end, desc = "Resume" }, + { "su", function() Snacks.picker.undo() end, desc = "Undo History" }, + { "st", function() Snacks.picker.todo_comments() end, desc = "Todo" }, + { "sT", function() Snacks.picker.todo_comments({ keywords = { "TODO", "FIX", "FIXME" } }) end, desc = "Todo/Fix/Fixme" }, + { "uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" }, + -- LSP + { "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition" }, + { "gD", function() Snacks.picker.lsp_declarations() end, desc = "Goto Declaration" }, + { "gr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" }, + { "gI", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" }, + { "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" }, + { "ss", function() Snacks.picker.lsp_symbols() end, desc = "LSP Symbols" }, + { "sS", function() Snacks.picker.lsp_workspace_symbols() end, desc = "LSP Workspace Symbols" }, + + -- Migrated from Telescope + { "pp", function() Snacks.picker.smart() end, desc = "Open Project files" }, + { "gc", function() Snacks.picker.git_branches() end, desc = "Git Branches selector" }, + { "pw", function() Snacks.picker.grep_word() end, desc = "Grep word under cursor" }, + { "ps", function() Snacks.picker.grep() end, desc = "Grep provided input string" }, + { "rc", function() Snacks.picker.git_files({ cwd = vim.fn.expand("~/.dotfiles") }) end, desc = "Search Files in .dotfiles directory" }, + { "rn", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Search Files in nvim config directory" }, + { "rp", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") .. "/lua/plugins" }) end, desc = "Search Neovim plugins" }, + { "rs", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") .. "/lua/scratchs" }) end, desc = "Search Neovim Scratchs files" }, + { "ph", function() Snacks.picker.help() end, desc = "Neovim Help" }, + { "pe", function() Snacks.picker.buffers() end, desc = "Open buffers" }, + -- { "pr", function() Snacks.picker.treesitter() end, desc = "Treesitter buffer elements" }, -- Check if treesitter exists + { "bb", function() Snacks.explorer() end, desc = "Current directory" }, + { "bp", function() Snacks.explorer() end, desc = "Project directory" }, + -- { "gs", function() Snacks.picker.git_status() end, desc = "Git status" }, -- Already in default + { "ve", function() Snacks.picker.diagnostics() end, desc = "Diagnostic of the buffer" }, + { "po", function() Snacks.picker.git_files({ cwd = "./api-specification" }) end, desc = "Openapi directory" }, + -- { "pm", "gateway", { desc = "Graphql mutations and queries" }) -- Skipped + }, +} diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua deleted file mode 100644 index c34e299..0000000 --- a/lua/plugins/telescope.lua +++ /dev/null @@ -1,35 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - dependencies = { - { "nvim-lua/plenary.nvim" }, - { "nvim-lua/popup.nvim" }, - { "nvim-telescope/telescope-fzy-native.nvim" }, - { "kyazdani42/nvim-web-devicons" }, - { "nvim-telescope/telescope-file-browser.nvim" }, - { "nvim-telescope/telescope-ui-select.nvim" }, - { "nvim-telescope/telescope-live-grep-args.nvim" }, - { - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - dependencies = { - "junegunn/fzf.vim", - dependencies = { - { - "tpope/vim-dispatch", - cmd = { "Make", "Dispatch" }, - }, - { - "junegunn/fzf", - build = ":call fzf#install()", - } - }, - }, - }, - }, - event = "VeryLazy", - config = function() - require "pi.telescope.setup" - require "pi.telescope.mappings" - require("telescope").load_extension("live_grep_args") - end, -} diff --git a/lua/plugins/todo-comments.lua b/lua/plugins/todo-comments.lua index fef635e..3c4c232 100644 --- a/lua/plugins/todo-comments.lua +++ b/lua/plugins/todo-comments.lua @@ -5,7 +5,7 @@ return { }, config = true, lazy = false, - cmd = { "TodoTrouble", "TodoTelescope", "TodoQuickFix" }, + cmd = { "TodoTrouble", "TodoQuickFix" }, keys = { { "]t", -- cgit v1.2.3