Add jj/kitty/nvim/opencode/paru/fish/yazi/jjui
This commit is contained in:
450
nvim/files/lua/plugins/mini.lua
Normal file
450
nvim/files/lua/plugins/mini.lua
Normal file
@@ -0,0 +1,450 @@
|
||||
return {
|
||||
"echasnovski/mini.nvim",
|
||||
version = false,
|
||||
config = function()
|
||||
require("mini.ai").setup({
|
||||
-- Table with textobject id as fields, textobject specification as values.
|
||||
-- Also use this to disable builtin textobjects. See |MiniAi.config|.
|
||||
custom_textobjects = nil,
|
||||
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
-- Main textobject prefixes
|
||||
around = "a",
|
||||
inside = "i",
|
||||
|
||||
-- Next/last variants
|
||||
around_next = "an",
|
||||
inside_next = "in",
|
||||
around_last = "al",
|
||||
inside_last = "il",
|
||||
|
||||
-- Move cursor to corresponding edge of `a` textobject
|
||||
goto_left = "g[",
|
||||
goto_right = "g]",
|
||||
},
|
||||
|
||||
-- Number of lines within which textobject is searched
|
||||
n_lines = 1000,
|
||||
|
||||
-- How to search for object (first inside current line, then inside
|
||||
-- neighborhood). One of 'cover', 'cover_or_next', 'cover_or_prev',
|
||||
-- 'cover_or_nearest', 'next', 'previous', 'nearest'.
|
||||
search_method = "cover_or_next",
|
||||
|
||||
-- Whether to disable showing non-error feedback
|
||||
-- This also affects (purely informational) helper messages shown after
|
||||
-- idle time if user input is required.
|
||||
silent = false,
|
||||
})
|
||||
|
||||
require("mini.surround").setup(
|
||||
-- No need to copy this inside `setup()`. Will be used automatically.
|
||||
{
|
||||
-- Add custom surroundings to be used on top of builtin ones. For more
|
||||
-- information with examples, see `:h MiniSurround.config`.
|
||||
custom_surroundings = nil,
|
||||
|
||||
-- Duration (in ms) of highlight when calling `MiniSurround.highlight()`
|
||||
highlight_duration = 500,
|
||||
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
add = "sa", -- Add surrounding in Normal and Visual modes
|
||||
delete = "sd", -- Delete surrounding
|
||||
find = "sf", -- Find surrounding (to the right)
|
||||
find_left = "sF", -- Find surrounding (to the left)
|
||||
highlight = "sh", -- Highlight surrounding
|
||||
replace = "sr", -- Replace surrounding
|
||||
update_n_lines = "sn", -- Update `n_lines`
|
||||
|
||||
suffix_last = "l", -- Suffix to search with "prev" method
|
||||
suffix_next = "n", -- Suffix to search with "next" method
|
||||
},
|
||||
|
||||
-- Number of lines within which surrounding is searched
|
||||
n_lines = 1000,
|
||||
|
||||
-- Whether to respect selection type:
|
||||
-- - Place surroundings on separate lines in linewise mode.
|
||||
-- - Place surroundings on each line in blockwise mode.
|
||||
respect_selection_type = false,
|
||||
|
||||
-- How to search for surrounding (first inside current line, then inside
|
||||
-- neighborhood). One of 'cover', 'cover_or_next', 'cover_or_prev',
|
||||
-- 'cover_or_nearest', 'next', 'prev', 'nearest'. For more details,
|
||||
-- see `:h MiniSurround.config`.
|
||||
search_method = "cover",
|
||||
|
||||
-- Whether to disable showing non-error feedback
|
||||
-- This also affects (purely informational) helper messages shown after
|
||||
-- idle time if user input is required.
|
||||
silent = false,
|
||||
}
|
||||
)
|
||||
|
||||
-- Create a custom command to wrap double quotes with {[]} at cursor position
|
||||
vim.api.nvim_create_user_command("WrapQuotesWithBrackets", function()
|
||||
-- Get cursor position (1-indexed for line, 0-indexed for column)
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
local line_num = cursor[1]
|
||||
local col_num = cursor[2] + 1 -- Convert to 1-indexed for string operations
|
||||
|
||||
-- Get the current line
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
|
||||
-- Find all quote pairs in the line
|
||||
local quote_start, quote_end = nil, nil
|
||||
local pos = 1
|
||||
|
||||
while pos <= #line do
|
||||
local start_pos = line:find('"', pos)
|
||||
if not start_pos then
|
||||
break
|
||||
end
|
||||
|
||||
local end_pos = line:find('"', start_pos + 1)
|
||||
if not end_pos then
|
||||
break
|
||||
end
|
||||
|
||||
-- Check if cursor is within or on this quote pair
|
||||
if col_num >= start_pos and col_num <= end_pos then
|
||||
quote_start = start_pos
|
||||
quote_end = end_pos
|
||||
break
|
||||
end
|
||||
|
||||
pos = end_pos + 1
|
||||
end
|
||||
|
||||
-- If we found quotes surrounding the cursor, wrap them
|
||||
if quote_start and quote_end then
|
||||
local before = line:sub(1, quote_start - 1)
|
||||
local quoted_content = line:sub(quote_start, quote_end)
|
||||
local after = line:sub(quote_end + 1)
|
||||
|
||||
local new_line = before .. "{[" .. quoted_content .. "]}" .. after
|
||||
|
||||
-- Replace the line
|
||||
vim.api.nvim_set_current_line(new_line)
|
||||
|
||||
-- Adjust cursor position (move it after the inserted characters)
|
||||
local new_col = col_num + 2 -- Account for the added '{[' characters
|
||||
vim.api.nvim_win_set_cursor(0, { line_num, new_col - 1 }) -- Convert back to 0-indexed
|
||||
else
|
||||
print("No quotes found at cursor position")
|
||||
end
|
||||
end, {
|
||||
desc = "Wrap double quotes at cursor with {[]}",
|
||||
})
|
||||
|
||||
-- require("mini.pairs").setup({
|
||||
-- -- In which modes mappings from this `config` should be created
|
||||
-- modes = { insert = true, command = false, terminal = false },
|
||||
--
|
||||
-- -- Global mappings. Each right hand side should be a pair information, a
|
||||
-- -- table with at least these fields (see more in |MiniPairs.map|):
|
||||
-- -- - <action> - one of 'open', 'close', 'closeopen'.
|
||||
-- -- - <pair> - two character string for pair to be used.
|
||||
-- -- By default pair is not inserted after `\`, quotes are not recognized by
|
||||
-- -- `<CR>`, `'` does not insert pair after a letter.
|
||||
-- -- Only parts of tables can be tweaked (others will use these defaults).
|
||||
-- mappings = {
|
||||
-- ["("] = { action = "open", pair = "()", neigh_pattern = "[^\\]." },
|
||||
-- ["["] = { action = "open", pair = "[]", neigh_pattern = "[^\\]." },
|
||||
-- ["{"] = { action = "open", pair = "{}", neigh_pattern = "[^\\]." },
|
||||
-- ["<"] = { action = "open", pair = "<>", neigh_pattern = "[^\\]." },
|
||||
--
|
||||
-- [")"] = { action = "close", pair = "()", neigh_pattern = "[^\\]." },
|
||||
-- ["]"] = { action = "close", pair = "[]", neigh_pattern = "[^\\]." },
|
||||
-- ["}"] = { action = "close", pair = "{}", neigh_pattern = "[^\\]." },
|
||||
-- [">"] = { action = "close", pair = "<>", neigh_pattern = "[^\\]." },
|
||||
--
|
||||
-- ['"'] = { action = "closeopen", pair = '""', neigh_pattern = "[^\\].", register = { cr = false } },
|
||||
-- ["'"] = { action = "closeopen", pair = "''", neigh_pattern = "[^%a\\].", register = { cr = false } },
|
||||
-- ["`"] = { action = "closeopen", pair = "``", neigh_pattern = "[^\\].", register = { cr = false } },
|
||||
-- },
|
||||
-- })
|
||||
|
||||
require("mini.comment").setup({
|
||||
-- Options which control module behavior
|
||||
options = {
|
||||
-- Function to compute custom 'commentstring' (optional)
|
||||
custom_commentstring = nil,
|
||||
|
||||
-- Whether to ignore blank lines when commenting
|
||||
ignore_blank_line = false,
|
||||
|
||||
-- Whether to recognize as comment only lines without indent
|
||||
start_of_line = false,
|
||||
|
||||
-- Whether to force single space inner padding for comment parts
|
||||
pad_comment_parts = true,
|
||||
},
|
||||
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
-- Toggle comment (like `gcip` - comment inner paragraph) for both
|
||||
-- Normal and Visual modes
|
||||
comment = "gc",
|
||||
|
||||
-- Toggle comment on current line
|
||||
comment_line = "gcc",
|
||||
|
||||
-- Toggle comment on visual selection
|
||||
comment_visual = "gc",
|
||||
|
||||
-- Define 'comment' textobject (like `dgc` - delete whole comment block)
|
||||
-- Works also in Visual mode if mapping differs from `comment_visual`
|
||||
textobject = "gc",
|
||||
},
|
||||
|
||||
-- Hook functions to be executed at certain stage of commenting
|
||||
hooks = {
|
||||
-- Before successful commenting. Does nothing by default.
|
||||
pre = function() end,
|
||||
-- After successful commenting. Does nothing by default.
|
||||
post = function() end,
|
||||
},
|
||||
})
|
||||
|
||||
local miniclue = require("mini.clue")
|
||||
miniclue.setup({
|
||||
triggers = {
|
||||
-- Leader triggers
|
||||
{ mode = "n", keys = "<Leader>" },
|
||||
{ mode = "x", keys = "<Leader>" },
|
||||
|
||||
-- Built-in completion
|
||||
{ mode = "i", keys = "<C-x>" },
|
||||
|
||||
-- `g` key
|
||||
{ mode = "n", keys = "g" },
|
||||
{ mode = "x", keys = "g" },
|
||||
|
||||
-- Marks
|
||||
{ mode = "n", keys = "'" },
|
||||
{ mode = "n", keys = "`" },
|
||||
{ mode = "x", keys = "'" },
|
||||
{ mode = "x", keys = "`" },
|
||||
|
||||
-- Registers
|
||||
{ mode = "n", keys = '"' },
|
||||
{ mode = "x", keys = '"' },
|
||||
{ mode = "i", keys = "<C-r>" },
|
||||
{ mode = "c", keys = "<C-r>" },
|
||||
|
||||
-- Window commands
|
||||
{ mode = "n", keys = "<C-w>" },
|
||||
|
||||
-- `z` key
|
||||
{ mode = "n", keys = "z" },
|
||||
{ mode = "x", keys = "z" },
|
||||
},
|
||||
|
||||
clues = {
|
||||
-- Enhance this by adding descriptions for <Leader> mapping groups
|
||||
miniclue.gen_clues.builtin_completion(),
|
||||
miniclue.gen_clues.g(),
|
||||
miniclue.gen_clues.marks(),
|
||||
miniclue.gen_clues.registers(),
|
||||
miniclue.gen_clues.windows(),
|
||||
miniclue.gen_clues.z(),
|
||||
},
|
||||
})
|
||||
|
||||
-- local starter = require("mini.starter")
|
||||
-- starter.setup({
|
||||
-- evaluate_single = true,
|
||||
-- header = "hi",
|
||||
-- items = {
|
||||
-- starter.sections.builtin_actions(),
|
||||
-- starter.sections.telescope(),
|
||||
-- starter.sections.sessions(5, true),
|
||||
-- },
|
||||
-- })
|
||||
|
||||
-- local sessions = require("mini.sessions")
|
||||
-- sessions.setup({
|
||||
-- autoread = true,
|
||||
-- })
|
||||
|
||||
require("mini.move").setup({
|
||||
-- Module mappings. Use `''` (empty string) to disable one.
|
||||
mappings = {
|
||||
-- Move visual selection in Visual mode. Defaults are Alt (Meta) + hjkl.
|
||||
left = "<C-S-Left>",
|
||||
right = "<C-S-Right>",
|
||||
down = "<C-S-Down>",
|
||||
up = "<C-S-Up>",
|
||||
|
||||
-- Move current line in Normal mode
|
||||
line_left = "<C-S-Left>",
|
||||
line_right = "<C-S-Right>",
|
||||
line_down = "<C-S-Down>",
|
||||
line_up = "<C-S-Up>",
|
||||
},
|
||||
|
||||
-- Options which control moving behavior
|
||||
options = {
|
||||
-- Automatically reindent selection during linewise vertical move
|
||||
reindent_linewise = true,
|
||||
},
|
||||
})
|
||||
|
||||
require("mini.icons").setup({
|
||||
extension = {
|
||||
["spec.ts"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["test.ts"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["spec.svelte.ts"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["test.svelte.ts"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
["svelte.ts"] = { glyph = "", hl = "MiniIconsAzure" },
|
||||
},
|
||||
})
|
||||
|
||||
require("mini.files").setup({
|
||||
-- Customization of shown content
|
||||
content = {
|
||||
-- Predicate for which file system entries to show
|
||||
filter = nil,
|
||||
-- What prefix to show to the left of file system entry
|
||||
prefix = nil,
|
||||
-- In which order to show file system entries
|
||||
sort = nil,
|
||||
},
|
||||
-- Module mappings created only inside explorer.
|
||||
-- Use `''` (empty string) to not create one.
|
||||
mappings = {
|
||||
close = "q",
|
||||
go_in = "<Right>",
|
||||
go_in_plus = "L",
|
||||
go_out = "<Left>",
|
||||
go_out_plus = "H",
|
||||
mark_goto = "'",
|
||||
mark_set = "m",
|
||||
reset = "<BS>",
|
||||
reveal_cwd = "@",
|
||||
show_help = "g?",
|
||||
synchronize = "=",
|
||||
trim_left = "<",
|
||||
trim_right = ">",
|
||||
},
|
||||
-- General options
|
||||
options = {
|
||||
-- Whether to delete permanently or move into module-specific trash
|
||||
permanent_delete = true,
|
||||
-- Whether to use for editing directories
|
||||
use_as_default_explorer = false,
|
||||
},
|
||||
-- Customization of explorer windows
|
||||
windows = {
|
||||
-- Maximum number of windows to show side by side
|
||||
max_number = math.huge,
|
||||
-- Whether to show preview of file/directory under cursor
|
||||
preview = false,
|
||||
-- Width of focused window
|
||||
width_focus = 50,
|
||||
-- Width of other windows
|
||||
width_nofocus = 15,
|
||||
},
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("User", {
|
||||
pattern = "MiniFilesActionRename",
|
||||
callback = function(event)
|
||||
Snacks.rename.on_rename_file(event.data.from, event.data.to)
|
||||
end,
|
||||
})
|
||||
|
||||
-- local MiniPick = require("mini.pick")
|
||||
-- MiniPick.setup({
|
||||
-- -- Delays (in ms; should be at least 1)
|
||||
-- delay = {
|
||||
-- -- Delay between forcing asynchronous behavior
|
||||
-- async = 10,
|
||||
--
|
||||
-- -- Delay between computation start and visual feedback about it
|
||||
-- busy = 50,
|
||||
-- },
|
||||
--
|
||||
-- -- Keys for performing actions. See `:h MiniPick-actions`.
|
||||
-- mappings = {
|
||||
-- caret_left = "<Left>",
|
||||
-- caret_right = "<Right>",
|
||||
--
|
||||
-- choose = "<CR>",
|
||||
-- choose_in_split = "<C-s>",
|
||||
-- choose_in_tabpage = "<C-t>",
|
||||
-- choose_in_vsplit = "<C-v>",
|
||||
-- choose_marked = "<M-CR>",
|
||||
--
|
||||
-- delete_char = "<BS>",
|
||||
-- delete_char_right = "<Del>",
|
||||
-- delete_left = "<C-u>",
|
||||
-- delete_word = "<C-w>",
|
||||
--
|
||||
-- mark = "<C-x>",
|
||||
-- mark_all = "<C-a>",
|
||||
--
|
||||
-- move_down = "<C-n>",
|
||||
-- move_start = "<C-g>",
|
||||
-- move_up = "<C-p>",
|
||||
--
|
||||
-- paste = "<C-r>",
|
||||
--
|
||||
-- refine = "<C-Space>",
|
||||
-- refine_marked = "<M-Space>",
|
||||
--
|
||||
-- scroll_down = "<C-f>",
|
||||
-- scroll_left = "<C-h>",
|
||||
-- scroll_right = "<C-l>",
|
||||
-- scroll_up = "<C-b>",
|
||||
--
|
||||
-- stop = "<Esc>",
|
||||
--
|
||||
-- toggle_info = "<S-Tab>",
|
||||
-- toggle_preview = "<Tab>",
|
||||
-- },
|
||||
--
|
||||
-- -- General options
|
||||
-- options = {
|
||||
-- -- Whether to show content from bottom to top
|
||||
-- content_from_bottom = false,
|
||||
--
|
||||
-- -- Whether to cache matches (more speed and memory on repeated prompts)
|
||||
-- use_cache = false,
|
||||
-- },
|
||||
--
|
||||
-- -- Source definition. See `:h MiniPick-source`.
|
||||
-- source = {
|
||||
-- items = nil,
|
||||
-- name = nil,
|
||||
-- cwd = nil,
|
||||
--
|
||||
-- match = nil,
|
||||
-- show = nil,
|
||||
-- preview = nil,
|
||||
--
|
||||
-- choose = nil,
|
||||
-- choose_marked = nil,
|
||||
-- },
|
||||
--
|
||||
-- -- Window related options
|
||||
-- window = {
|
||||
-- -- Float window config (table or callable returning it)
|
||||
-- config = nil,
|
||||
--
|
||||
-- -- String to use as caret in prompt
|
||||
-- prompt_caret = "▏",
|
||||
--
|
||||
-- -- String to use as prefix in prompt
|
||||
-- prompt_prefix = "> ",
|
||||
-- },
|
||||
-- })
|
||||
--
|
||||
-- vim.keymap.set("n", "<leader>pf", function()
|
||||
-- MiniPick.builtin.files({ tool = "git" })
|
||||
-- end, { desc = "Find [F]iles" })
|
||||
end,
|
||||
}
|
||||
Reference in New Issue
Block a user