This commit is contained in:
sankalp committed 2025-06-02 15:43:05 +05:45
1 parent 2c6982ecdd
commit b6e0e9f63c
35 files changed
+1155 -1236

No files matched your search

-35
View File
@@ -1,35 +0,0 @@
local ai = require('mini.ai')
ai.setup({
custom_textobjects = {
o = ai.gen_spec.treesitter({
a = { '@block.outer', '@conditional.outer', '@loop.outer' },
i = { '@block.inner', '@conditional.inner', '@loop.inner' },
}, {}),
f = ai.gen_spec.treesitter({ a = '@function.outer', i = '@function.inner' }, {}),
c = ai.gen_spec.treesitter({ a = '@class.outer', i = '@class.inner' }, {}),
t = { '<([%p%w]-)%f[^<%w][^<>]->.-</%1>', '^<.->().*()</[^/]->$' },
},
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]',
},
-- How to search for object
-- 'cover', 'cover_or_next', 'cover_or_prev','cover_or_nearest', 'next', 'previous', 'nearest'.
search_method = 'cover_or_next',
n_lines = 500,
silent = false,
})
-22
View File
@@ -1,22 +0,0 @@
local npairs = require('nvim-autopairs')
npairs.setup({
check_ts = true,
ts_config = {
lua = { 'string', 'source' },
javascript = { 'string', 'template_string' },
java = false,
},
disable_filetype = { 'TelescopePrompt', 'spectre_panel' },
fast_wrap = {
map = '<M-s>',
chars = { '{', '[', '(', '"', "'" },
pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], '%s+', ''),
offset = 0,
end_key = '$',
keys = 'qwertyuiopzxcvbnmasdfghjkl',
check_comma = true,
highlight = 'PmenuSel',
highlight_grey = 'LineNr',
},
})
+28 -2
View File
@@ -10,8 +10,14 @@ blink.setup({
['<C-space>'] = { 'show', 'hide' },
['<C-y>'] = { 'show_documentation', 'hide_documentation' },
},
snippets = { preset = 'luasnip' },
completion = {
list = { selection = { preselect = false, auto_insert = true } },
list = {
selection = {
auto_insert = true,
preselect = true,
},
},
menu = { border = 'rounded' },
documentation = { window = { border = 'rounded' } },
},
@@ -24,8 +30,28 @@ blink.setup({
kind_icons = icons.kind,
},
sources = {
default = { 'lazydev', 'lsp', 'path', 'snippets', 'buffer' },
default = { 'avante', 'lazydev', 'lsp', 'path', 'snippets', 'buffer', 'copilot' },
providers = {
avante = {
module = 'blink-cmp-avante',
name = 'Avante',
opts = {},
},
copilot = {
name = 'copilot',
module = 'blink-cmp-copilot',
score_offset = 90,
async = true,
transform_items = function(_, items)
local CompletionItemKind = require('blink.cmp.types').CompletionItemKind
local kind_idx = #CompletionItemKind + 1
CompletionItemKind[kind_idx] = 'Copilot'
for _, item in ipairs(items) do
item.kind = kind_idx
end
return items
end,
},
lazydev = {
name = 'LazyDev',
module = 'lazydev.integrations.blink',
-18
View File
@@ -1,18 +0,0 @@
local bracketed = require('mini.bracketed')
bracketed.setup({
buffer = { suffix = 'b', options = {} },
comment = { suffix = 'c', options = {} },
conflict = { suffix = 'x', options = {} },
diagnostic = { suffix = 'd', options = {} },
file = { suffix = 'f', options = {} },
indent = { suffix = 'i', options = {} },
jump = { suffix = 'j', options = {} },
location = { suffix = 'l', options = {} },
oldfile = { suffix = 'r', options = {} },
quickfix = { suffix = 'q', options = {} },
treesitter = { suffix = 'n', options = {} },
undo = { suffix = 'u', options = {} },
window = { suffix = 'w', options = {} },
yank = { suffix = 'y', options = {} },
})
+39 -30
View File
@@ -7,40 +7,49 @@ if auto_install then
installed_servers = require('plugins.list').lsp_servers
end
local capabilities = require('blink.cmp').get_lsp_capabilities()
local default_setup = function(server)
lspconfig[server].setup({
capabilities = require('blink.cmp').get_lsp_capabilities(),
})
end
local signs = { Error = icons.Error, Warn = icons.Warning, Hint = icons.Hint, Info = icons.Information }
for type, icon in pairs(signs) do
local hl = 'DiagnosticSign' .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = '' })
if server == 'tailwindcss' then
lspconfig[server].setup({
capabilities = capabilities,
filetypes = {
'html', 'css', 'scss', 'javascript', 'javascriptreact',
'typescript', 'typescriptreact', 'vue', 'svelte'
},
init_options = {
userLanguages = {
['javascript'] = 'javascript',
['javascriptreact'] = 'javascript',
['typescript'] = 'typescript',
['typescriptreact'] = 'typescript',
},
},
})
else
lspconfig[server].setup({
capabilities = capabilities,
})
end
end
require('mason-lspconfig').setup({
ensure_installed = installed_servers,
handlers = {
default_setup,
lua_ls = function()
lspconfig.lua_ls.setup({
settings = {
Lua = {
runtime = { version = 'LuaJIT' },
diagnostics = { globals = { 'vim' } },
workspace = { library = { vim.env.VIMRUNTIME } },
format = {
enable = true,
defaultConfig = {
align_continuous_assign_statement = false,
align_continuous_rect_table_field = false,
align_array_table = false,
},
},
},
},
})
end,
handlers = { default_setup },
})
local signs = { Error = icons.Error, Warn = icons.Warning, Hint = icons.Hint, Info = icons.Information }
vim.diagnostic.config({
underline = true,
update_in_insert = true,
severity_sort = true,
virtual_text = true,
float = true,
signs = {
text = {
[vim.diagnostic.severity.ERROR] = signs.Error,
[vim.diagnostic.severity.WARN] = signs.Warn,
[vim.diagnostic.severity.INFO] = signs.Info,
[vim.diagnostic.severity.HINT] = signs.Hint,
},
},
})
-3
View File
@@ -14,7 +14,6 @@ null_ls.setup({
diagnostics_format = '#{c} #{m} (#{s})',
sources = {
action.proselint, -- markdown actions
action.refactoring,
-- action.ts_node_action, -- treesitter node actions, buggy, causes repeated notifications
comp.spell, -- spell completion
comp.tags, -- tags completion
@@ -31,8 +30,6 @@ null_ls.setup({
diag.write_good, -- english writing style
format.mix, -- elixir formatter
format.prettier, -- js, md, css, etc formatter
format.prettierd,
format.djlint, -- django, jinja formatter
-- format.rubocop, -- ruby formatter
format.shfmt, -- shell formatter
format.stylua, -- lua formatter
-18
View File
@@ -1,18 +0,0 @@
local pairs = require('mini.pairs')
pairs.setup({
modes = { insert = true, command = true, terminal = false },
mappings = {
['('] = { 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 = 'closeopen', pair = '""', neigh_pattern = '[^\\].', register = { cr = false } },
["'"] = { action = 'closeopen', pair = "''", neigh_pattern = '[^%a\\].', register = { cr = false } },
['`'] = { action = 'closeopen', pair = '``', neigh_pattern = '[^\\].', register = { cr = false } },
},
})
-25
View File
@@ -1,25 +0,0 @@
local refactoring = require('refactoring')
refactoring.setup({
prompt_func_return_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
prompt_func_param_type = {
go = false,
java = false,
cpp = false,
c = false,
h = false,
hpp = false,
cxx = false,
},
printf_statements = {},
print_var_statements = {},
})
-27
View File
@@ -1,27 +0,0 @@
local sniprun = require('sniprun')
local sniprun_api = require('sniprun.api')
sniprun.setup({
display = { 'Api' },
show_no_output = { 'Classic', 'TempFloatingWindow' },
display_options = {
terminal_width = 45,
notification_timeout = 5,
},
inline_messages = 0,
borders = 'single',
})
local api_listener = function(d)
if d.status == 'ok' then
vim.notify('Output: \n' .. d.message, vim.log.levels.INFO)
elseif d.status == 'error' then
vim.notify('Error: \n' .. d.message, vim.log.levels.ERROR)
else
vim.notify('Sniprun: ' .. d.message, vim.log.levels.INFO)
end
end
sniprun_api.register_listener(api_listener)
-10
View File
@@ -1,10 +0,0 @@
local spider = require('spider')
spider.setup({
skipInsignificantPunctuation = true,
})
vim.keymap.set({ 'n', 'o', 'x' }, 'w', ":lua require('spider').motion('w')<CR>", { desc = 'Spider-w' })
vim.keymap.set({ 'n', 'o', 'x' }, 'e', ":lua require('spider').motion('e')<CR>", { desc = 'Spider-e' })
vim.keymap.set({ 'n', 'o', 'x' }, 'b', ":lua require('spider').motion('b')<CR>", { desc = 'Spider-b' })
vim.keymap.set({ 'n', 'o', 'x' }, 'ge', ":lua require('spider').motion('ge')<CR>", { desc = 'Spider-ge' })
-25
View File
@@ -1,25 +0,0 @@
local surround = require('mini.surround')
surround.setup({
custom_surroundings = nil,
mappings = {
add = 'gsa',
delete = 'gsd',
find = 'gsf',
find_left = 'gsF',
highlight = 'gsh',
replace = 'gsr',
update_n_lines = 'gsn',
suffix_last = 'l', -- Suffix to search with "prev" method
suffix_next = 'n', -- Suffix to search with "next" method
},
-- How to search for surrounding
-- 'cover', 'cover_or_next', 'cover_or_prev','cover_or_nearest', 'next', 'previous', 'nearest'.
search_method = 'cover_or_nearest',
highlight_duration = 500,
n_lines = 20,
respect_selection_type = false,
silent = false,
})
-117
View File
@@ -1,117 +0,0 @@
local textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
['a='] = { query = '@assignment.outer', desc = 'Select outer part of an assignment' },
['i='] = { query = '@assignment.inner', desc = 'Select inner part of an assignment' },
['al='] = { query = '@assignment.lhs', desc = 'Select left hand side of an assignment' },
['ar='] = {
query = '@assignment.rhs',
desc = 'Select right hand side of an assignment',
},
['a:'] = { query = '@property.outer', desc = 'Select outer part of an object property' },
['i:'] = { query = '@property.inner', desc = 'Select inner part of an object property' },
['l:'] = { query = '@property.lhs', desc = 'Select left part of an object property' },
['r:'] = { query = '@property.rhs', desc = 'Select right part of an object property' },
['aa'] = {
query = '@parameter.outer',
desc = 'Select outer part of a parameter/argument',
},
['ia'] = {
query = '@parameter.inner',
desc = 'Select inner part of a parameter/argument',
},
['ai'] = { query = '@conditional.outer', desc = 'Select outer part of a conditional' },
['ii'] = { query = '@conditional.inner', desc = 'Select inner part of a conditional' },
['al'] = { query = '@loop.outer', desc = 'Select outer part of a loop' },
['il'] = { query = '@loop.inner', desc = 'Select inner part of a loop' },
['af'] = { query = '@call.outer', desc = 'Select outer part of a function call' },
['if'] = { query = '@call.inner', desc = 'Select inner part of a function call' },
['am'] = {
query = '@function.outer',
desc = 'Select outer part of a method/function definition',
},
['im'] = {
query = '@function.inner',
desc = 'Select inner part of a method/function definition',
},
['ac'] = { query = '@class.outer', desc = 'Select outer part of a class' },
['ic'] = { query = '@class.inner', desc = 'Select inner part of a class' },
},
},
swap = {
enable = true,
swap_next = {
['<leader>rna'] = '@parameter.inner', -- swap object property with next
['<leader>rn:'] = '@property.outer', -- swap parameters/argument with next
['<leader>rnm'] = '@function.outer', -- swap function with next
},
swap_previous = {
['<leader>rpa'] = '@parameter.inner', -- swap parameters/argument with prev
['<leader>rp:'] = '@property.outer', -- swap object property with prev
['<leader>rpm'] = '@function.outer', -- swap function with previous
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_previous_start = {
['[oc'] = { query = '@class.outer', desc = 'Prev class start' },
['[of'] = { query = '@call.outer', desc = 'Prev function call start' },
['[oi'] = { query = '@conditional.outer', desc = 'Prev conditional start' },
['[ol'] = { query = '@loop.outer', desc = 'Prev loop start' },
['[om'] = { query = '@function.outer', desc = 'Prev method def start' },
['[z'] = { query = '@fold', query_group = 'folds', desc = 'Prev fold' },
-- You can pass a query group to use query from `queries/<lang>/<query_group>.scm file in your runtime path.
-- Above example nvim-treesitter's folds.scm`. They also provide locals.scm, highlights.scm and indent.scm.
},
goto_previous_end = {
['[oC'] = { query = '@class.outer', desc = 'Prev class end' },
['[oF'] = { query = '@call.outer', desc = 'Prev function call end' },
['[oI'] = { query = '@conditional.outer', desc = 'Prev conditional end' },
['[oL'] = { query = '@loop.outer', desc = 'Prev loop end' },
['[oM'] = { query = '@function.outer', desc = 'Prev method def end' },
['[Z'] = { query = '@fold', query_group = 'folds', desc = 'Prev fold end' },
},
goto_next_start = {
[']oc'] = { query = '@class.outer', desc = 'Next class start' },
[']of'] = { query = '@call.outer', desc = 'Next function call start' },
[']oi'] = { query = '@conditional.outer', desc = 'Next conditional start' },
[']ol'] = { query = '@loop.outer', desc = 'Next loop start' },
[']om'] = { query = '@function.outer', desc = 'Next method def start' },
[']z'] = { query = '@fold', query_group = 'folds', desc = 'Next fold' },
},
goto_next_end = {
[']oC'] = { query = '@class.outer', desc = 'Next class end' },
[']oF'] = { query = '@call.outer', desc = 'Next function call end' },
[']oI'] = { query = '@conditional.outer', desc = 'Next conditional end' },
[']oL'] = { query = '@loop.outer', desc = 'Next loop end' },
[']oM'] = { query = '@function.outer', desc = 'Next method def end' },
[']Z'] = { query = '@fold', query_group = 'folds', desc = 'Next fold end' },
},
},
}
local ts_repeat_move = require('nvim-treesitter.textobjects.repeatable_move')
-- vim way: ; goes to the direction you were moving.
vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)
vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_opposite)
-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
vim.keymap.set({ 'n', 'x', 'o' }, 'f', ts_repeat_move.builtin_f)
vim.keymap.set({ 'n', 'x', 'o' }, 'F', ts_repeat_move.builtin_F)
vim.keymap.set({ 'n', 'x', 'o' }, 't', ts_repeat_move.builtin_t)
vim.keymap.set({ 'n', 'x', 'o' }, 'T', ts_repeat_move.builtin_T)
return textobjects
-82
View File
@@ -1,82 +0,0 @@
local treesitter = require('nvim-treesitter.configs')
local textobjects = require('plugins.lang.textobjects')
local auto_install = require('lib.util').get_user_config('auto_install', true)
local installed_parsers = {}
if auto_install then
installed_parsers = require('plugins.list').ts_parsers
end
treesitter.setup({
ensure_installed = installed_parsers,
sync_install = false,
ignore_install = {},
auto_install = true,
textobjects = textobjects,
matchup = { enable = true },
indent = { enable = true },
highlight = {
enable = true,
disable = function(lang, buf)
local max_filesize = 100 * 1024 -- 100 KB
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > max_filesize then
return true
end
end,
additional_vim_regex_highlighting = false,
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<c-space>',
node_incremental = '<c-space>',
scope_incremental = false,
node_decremental = '<bs>',
},
},
textsubjects = {
enable = true,
prev_selection = ',',
keymaps = {
['.'] = { 'textsubjects-smart', desc = 'Select the current text subject' },
['a;'] = {
'textsubjects-container-outer',
desc = 'Select outer container (class, function, etc.)',
},
['i;'] = {
'textsubjects-container-inner',
desc = 'Select inside containers (classes, functions, etc.)',
},
},
},
refactor = {
highlight_definitions = {
enable = true,
clear_on_cursor_move = true,
},
highlight_current_scope = { enable = true },
smart_rename = {
enable = true,
keymaps = {
smart_rename = '<leader>rr',
},
},
navigation = {
enable = true,
keymaps = {
goto_definition = '<leader>rd',
list_definitions = '<leader>rl',
list_definitions_toc = '<leader>rh',
goto_next_usage = '<leader>rj',
goto_previous_usage = '<leader>rk',
},
},
},
})