Buscadores personalizados con Mini.Pick

Buscadores personalizados con Mini.Pick

Mini.Pick, parte del paquete de plugins Mini.Nvim desarrollados por el gran Evgeni Chasnovski, es una gran alternativa a Telescope. Con este módulo, podemos buscar rápidamente entre nuestros archivos, buffers abiertos, símbolos del servidor del lenguaje de nuestro proyecto, etc.

El plugin incluye un conjunto de buscadores por defecto, a los cuales también podemos agregar una gran lista adicional usando el módulo Mini.Extra. Sin embargo, también podemos crear nuestros propios buscadores y su configuración.

Aquí tenemos dos ejemplos.

Selector de temas (colorschemes)

Este es una modificación al selector de temas de colores desarrollado por el proyecto MVIM, una distribución de Neovim basada en los módulos Mini.

Este selector nos permite rápidamente buscar entre los temas de colores que tenemos instalados, mostrar un previo del tema usando la tecla <Tab> y al seleccionarlos, genera una transición entre el tema anterior y el nuevo haciendo uso de la función Colorscheme provista por Mini.Colors. El código es el siguiente:

require(«mini.pick»).setup()

— Define la ventana del selector centrada en la pantalla
local win_config = function()
local height = math.floor(0.3 * vim.o.lines)
local width = math.floor(0.3 * vim.o.columns)
return {
anchor = «NW»,
height = height,
width = width,
row = math.floor(0.5 * (vim.o.lines height)),
col = math.floor(0.5 * (vim.o.columns width)),
}
end

— MiniPick Colorscheme Picker
local set_colorscheme = function(name)
pcall(function()
vim.cmd(«Colorscheme « .. name) — Usa mini.colors Colorscheme para animar transición
end)
end
local pick_colorscheme = function()
local init_scheme = vim.g.colors_name
local new_scheme = MiniPick.start({
source = {
name = «Colorscheme»,
items = vim.fn.getcompletion(«», «color»),
choose = set_colorscheme,
},
mappings = {
move_down = «<C-n>»,
move_start = «<C-g>»,
move_up = «<C-p>»,
preview = {
char = «<Tab>»,
func = function()
local item = MiniPick.get_picker_matches()
if item and item.current then
pcall(function()
vim.cmd(«colorscheme « .. item.current)
end)
end
end,
},
},
window = { config = win_config },
})
if new_scheme == nil then
set_colorscheme(init_scheme)
end
end

Sugerencias otográficas

También podemos usar Mini.Pick para remplazar las sugerencias ortográficas, de forma que se posicionen bajo el cursor, como en un procesador de texto.

Aquí el código:

local spellsuggest = function()
local local_opts = { n_suggestions = 5 } — Define el número de sugerencias a mostrar
local opts = {
mappings = {
caret_left = «<Left>»,
caret_right = «<Right>»,

choose = «<CR>»,

delete_char = «<BS>»,
delete_char_right = «<Del>»,
delete_left = «<C-u>»,
delete_word = «<C-w>»,

move_down = «<C-n>»,
move_start = «<C-g>»,
move_up = «<C-p>»,

scroll_down = «<C-f>»,
scroll_left = «<C-h>»,
scroll_right = «<C-l>»,
scroll_up = «<C-b>»,

stop = «<Esc>»,
},
window = {
config = {
relative = «cursor»,
anchor = «NW»,
row = 1,
col = 0,
width = 40,
height = 5,
},
},
}
MiniExtra.pickers.spellsuggest(local_opts, opts)
end

— Remplaza el atajo de teclado «z=»
vim.keymap.set(«n», «z=», spellsuggest, { desc = «Abre las sugerencias ortográficas» })

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *