pkg(nixvim): Add blink-cmp, lazydev, mini-ai, mini-pairs and ts-comments plugins to improve coding UX
This commit is contained in:
parent
7477166d9e
commit
cfdd89c080
6 changed files with 265 additions and 16 deletions
71
pkgs/nixvim/coding/mini-pairs.nix
Normal file
71
pkgs/nixvim/coding/mini-pairs.nix
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
{...}: {
|
||||
youthlic.plugins.mini-pairs = {
|
||||
enable = true;
|
||||
settings = {
|
||||
modes = {
|
||||
insert = true;
|
||||
command = true;
|
||||
terminal = false;
|
||||
};
|
||||
};
|
||||
luaConfig.post =
|
||||
#lua
|
||||
''
|
||||
do
|
||||
local opts = {
|
||||
skip_next = [=[[%w%%'%[%"%.%`%$]]=],
|
||||
skip_ts = { "string" },
|
||||
skip_unbalanced = true,
|
||||
markdown = true,
|
||||
}
|
||||
_M.on_load("snacks", function()
|
||||
vim.schedule(function()
|
||||
Snacks.toggle({
|
||||
name = "Mini Pairs",
|
||||
get = function()
|
||||
return not vim.g.minipairs_disable
|
||||
end,
|
||||
set = function(state)
|
||||
vim.g.minipairs_disable = not state
|
||||
end,
|
||||
}):map("<leader>up")
|
||||
end)
|
||||
end)
|
||||
local pairs = require("mini.pairs")
|
||||
local open = pairs.open
|
||||
pairs.open = function(pair, neigh_pattern)
|
||||
if vim.fn.getcmdline() ~= "" then
|
||||
return open(pair, neigh_pattern)
|
||||
end
|
||||
local o, c = pair:sub(1, 1), pair:sub(2, 2)
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||
local next = line:sub(cursor[2] + 1, cursor[2] + 1)
|
||||
local before = line:sub(1, cursor[2])
|
||||
if opts.markdown and o == "`" and vim.bo.filetype == "markdown" and before:match("^%s*``") then
|
||||
return "`\n``" .. vim.api.nvim_replace_termcodes("<up>", true, true, true)
|
||||
end
|
||||
if opts.skip_next and next ~= "" and next:match(opts.skip_next) then
|
||||
return o
|
||||
end
|
||||
if opts.skip_ts and #opts.skip_ts > 0 then
|
||||
local ok, captures = pcall(vim.treesitter.get_captures_at_pos, 0, cursor[1] - 1, math.max(cursor[2] - 1, 0))
|
||||
for _, capture in ipairs(ok and captures or {}) do
|
||||
if vim.tbl_contains(opts.skip_ts, capture.capture) then
|
||||
return o
|
||||
end
|
||||
end
|
||||
end
|
||||
if opts.skip_unbalanced and next == c and c ~= o then
|
||||
local _, count_open = line:gsub(vim.pesc(pair:sub(1, 1)), "")
|
||||
local _, count_close = line:gsub(vim.pesc(pair:sub(2, 2)), "")
|
||||
if count_close > count_open then
|
||||
return o
|
||||
end
|
||||
end
|
||||
return open(pair, neigh_pattern)
|
||||
end
|
||||
end
|
||||
'';
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue