mirror of
https://github.com/iofq/nvim.nix.git
synced 2026-01-23 08:55:16 -06:00
even more jj mini/snacks rice
This commit is contained in:
parent
83f9f90f1f
commit
75c09a73ff
15 changed files with 345 additions and 337 deletions
|
|
@ -2,7 +2,7 @@ vim.opt.autowrite = true
|
|||
vim.opt.backspace = 'indent,eol,start'
|
||||
vim.opt.confirm = true
|
||||
vim.opt.completeopt = { 'menu', 'menuone', 'noselect' }
|
||||
vim.opt.cmdheight = 0
|
||||
vim.opt.cmdheight = 1
|
||||
vim.opt.diffopt = 'internal,filler,closeoff,inline:char'
|
||||
vim.opt.expandtab = true -- insert tabs as spaces
|
||||
vim.opt.inccommand = 'split' -- incremental live completion
|
||||
|
|
@ -28,7 +28,7 @@ end, { silent = true, desc = 'toggle tabstop' })
|
|||
|
||||
-- autocmd
|
||||
----------------------------------------
|
||||
local undopath = '~/.local/share/nvim/undo'
|
||||
local undopath = vim.fn.stdpath('data') .. 'undo'
|
||||
vim.api.nvim_create_autocmd('VimEnter', {
|
||||
command = 'silent !mkdir -p ' .. undopath,
|
||||
group = vim.api.nvim_create_augroup('Init', {}),
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ return {
|
|||
'fang2hou/blink-copilot',
|
||||
},
|
||||
opts = {
|
||||
enabled = function()
|
||||
return not vim.tbl_contains({ 'snacks_picker_input', 'oil' }, vim.bo.filetype)
|
||||
end,
|
||||
fuzzy = {
|
||||
sorts = {
|
||||
'exact',
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ end
|
|||
|
||||
JJ.jj_start_watching_tree_state = function(buf_id, path)
|
||||
local stdout = vim.loop.new_pipe()
|
||||
local args = { 'workspace', 'root' }
|
||||
local args = { 'workspace', 'root', '--ignore-working-copy' }
|
||||
local spawn_opts = {
|
||||
args = args,
|
||||
cwd = vim.fn.fnamemodify(path, ':h'),
|
||||
|
|
@ -86,7 +86,7 @@ JJ.jj_set_ref_text = vim.schedule_wrap(function(buf_id)
|
|||
-- Set
|
||||
local stdout = vim.loop.new_pipe()
|
||||
local spawn_opts = {
|
||||
args = { 'file', 'show', '-r', '@-', './' .. basename },
|
||||
args = { 'file', 'show', '--ignore-working-copy', '-r', '@-', './' .. basename },
|
||||
cwd = cwd,
|
||||
stdio = { nil, stdout, nil },
|
||||
}
|
||||
|
|
|
|||
48
nvim/lua/plugins/lib/session_jj.lua
Normal file
48
nvim/lua/plugins/lib/session_jj.lua
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
local M = {}
|
||||
M.load = function()
|
||||
local jj_root = vim.system({ 'jj', 'workspace', 'root' }):wait()
|
||||
local sessions = require('mini.sessions')
|
||||
|
||||
if jj_root.code ~= 0 then
|
||||
return
|
||||
end
|
||||
|
||||
local result = vim
|
||||
.system({
|
||||
'jj',
|
||||
'log',
|
||||
'-r',
|
||||
'latest(heads(::@ & bookmarks()))',
|
||||
'--template',
|
||||
'bookmarks',
|
||||
'--no-pager',
|
||||
'--no-graph',
|
||||
})
|
||||
:wait()
|
||||
local branch = vim.trim(string.gsub(result.stdout, '[\n*]', ''))
|
||||
local root = vim.trim(string.gsub(jj_root.stdout, '\n', ''))
|
||||
local jj_sesh = string.gsub(string.format('jj:%s:%s', root, branch), '[./]', '-')
|
||||
if jj_sesh ~= '' then
|
||||
vim.opt.shadafile = vim.fn.stdpath('data') .. '/myshada/' .. jj_sesh .. '.shada'
|
||||
for name, _ in pairs(sessions.detected) do
|
||||
if name == jj_sesh then
|
||||
vim.ui.select({
|
||||
'No',
|
||||
'Yes',
|
||||
}, { prompt = 'Session found at ' .. jj_sesh .. ', load it?' }, function(c)
|
||||
if c == 'Yes' then
|
||||
-- load session (buffers, etc) as well as shada (marks)
|
||||
sessions.read(jj_sesh)
|
||||
vim.cmd('rshada')
|
||||
vim.notify('loaded jj session: ' .. jj_sesh)
|
||||
end
|
||||
end)
|
||||
return
|
||||
end
|
||||
end
|
||||
vim.cmd('wshada')
|
||||
sessions.write(jj_sesh)
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
||||
|
|
@ -23,7 +23,7 @@ function M.status()
|
|||
file = string.match(text, '{.-=>%s*(.-)}')
|
||||
end
|
||||
|
||||
local diff = vim.fn.system('jj diff ' .. file .. ' --no-pager --stat --git')
|
||||
local diff = vim.fn.system('jj diff ' .. file .. ' --ignore-working-copy --no-pager --stat --git')
|
||||
table.insert(files, {
|
||||
text = text,
|
||||
file = file,
|
||||
|
|
@ -56,77 +56,64 @@ function M.status()
|
|||
end
|
||||
|
||||
function M.revs()
|
||||
local function jj_new()
|
||||
return function(picker, item)
|
||||
picker:close()
|
||||
if item then
|
||||
if not item.rev then
|
||||
Snacks.notify.warn('No branch or commit found', { title = 'Snacks Picker' })
|
||||
return
|
||||
end
|
||||
local cmd = { 'jj', 'new', '-r', item.rev }
|
||||
Snacks.picker.util.cmd(cmd, function()
|
||||
Snacks.notify('Checking out revision: ' .. item.rev, { title = 'Snacks Picker' })
|
||||
vim.cmd.checktime()
|
||||
end, { cwd = item.cwd })
|
||||
local function jj_new(picker, item)
|
||||
picker:close()
|
||||
if item then
|
||||
if not item.rev then
|
||||
Snacks.notify.warn('No branch or commit found', { title = 'Snacks Picker' })
|
||||
return
|
||||
end
|
||||
local cmd = { 'jj', 'new', '-r', item.rev }
|
||||
Snacks.picker.util.cmd(cmd, function()
|
||||
Snacks.notify('Checking out revision: ' .. item.rev, { title = 'Snacks Picker' })
|
||||
vim.cmd.checktime()
|
||||
end, { cwd = item.cwd })
|
||||
end
|
||||
end
|
||||
|
||||
local function jj_rev_cmd(rev)
|
||||
if rev ~= nil then
|
||||
return vim.fn.system { 'jj', 'show', '--git', '-r', rev }
|
||||
local function jj_rev_cmd(ctx)
|
||||
if ctx.item.rev then
|
||||
Snacks.picker.preview.cmd({ 'jj', 'show', '--ignore-working-copy', '--git', '-r', ctx.item.rev }, ctx)
|
||||
else
|
||||
ctx.preview:reset()
|
||||
return 'No preview available.'
|
||||
end
|
||||
end
|
||||
|
||||
local function jj_log(revset)
|
||||
if revset == nil then
|
||||
revset = '-r @'
|
||||
revset = '-r "ancestors(@,25)"'
|
||||
else
|
||||
revset = '-r ' .. revset
|
||||
end
|
||||
local status_raw = vim.fn.system(
|
||||
'jj log '
|
||||
'jj log --ignore-working-copy '
|
||||
.. revset
|
||||
..
|
||||
' --template \'if(root, format_root_commit(self), label(if(current_working_copy, "working_copy"), concat( format_short_commit_header(self) ++ " ", separate(" ", if(empty, label("empty", "(empty)")), if(description, description.first_line(), label(if(empty, "empty"), description_placeholder),),) ++ "\n",),))\''
|
||||
' --template \'if(root, format_root_commit(self), label(if(current_working_copy, "working_copy"), concat(separate(" ", self.change_id().shortest(8), self.bookmarks()), " | ", if(empty, label("empty", "(empty)")), if(description, description.first_line(), label(if(empty, "empty"), description_placeholder),),) ++ "\n",),)\''
|
||||
)
|
||||
local lines = {}
|
||||
|
||||
for line in status_raw:gmatch('[^\r\n]+') do
|
||||
local sign, rev, description = string.match(line, '(.)%s*(%a+)(.*)')
|
||||
local sign, rev = string.match(line, '(.)%s(%a+)%s.*')
|
||||
table.insert(lines, {
|
||||
text = line,
|
||||
file = line,
|
||||
sign = sign,
|
||||
rev = rev,
|
||||
hl = 'SnacksPickerGitMsg',
|
||||
description = description,
|
||||
diff = jj_rev_cmd(rev),
|
||||
})
|
||||
end
|
||||
|
||||
return lines
|
||||
end
|
||||
|
||||
local lines = jj_log('::@')
|
||||
|
||||
Snacks.picker.pick {
|
||||
source = 'jj_revs',
|
||||
items = lines,
|
||||
layout = 'ivy',
|
||||
format = 'text',
|
||||
title = 'jj log',
|
||||
confirm = jj_new(),
|
||||
preview = function(ctx)
|
||||
if ctx.item.file then
|
||||
Snacks.picker.preview.diff(ctx)
|
||||
else
|
||||
ctx.preview:reset()
|
||||
ctx.preview:set_title('No rev found')
|
||||
end
|
||||
end,
|
||||
items = jj_log(),
|
||||
confirm = jj_new,
|
||||
preview = jj_rev_cmd,
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ return {
|
|||
{
|
||||
'echasnovski/mini.nvim',
|
||||
lazy = false,
|
||||
dependencies = { 'folke/snacks.nvim' },
|
||||
keys = {
|
||||
{
|
||||
'<leader>gp',
|
||||
|
|
@ -52,7 +51,7 @@ return {
|
|||
desc = 'git diff overlay',
|
||||
},
|
||||
{
|
||||
'<leader>gd',
|
||||
'<leader>go',
|
||||
function()
|
||||
return MiniGit.show_at_cursor()
|
||||
end,
|
||||
|
|
@ -61,7 +60,7 @@ return {
|
|||
},
|
||||
{
|
||||
'<leader>gb',
|
||||
'<Cmd>vertical Git blame -- %<CR>',
|
||||
'<Cmd>Git blame -- %<CR>',
|
||||
noremap = true,
|
||||
desc = 'git blame',
|
||||
},
|
||||
|
|
@ -72,12 +71,12 @@ return {
|
|||
desc = 'git command',
|
||||
},
|
||||
{
|
||||
'S',
|
||||
'<leader>fs',
|
||||
function()
|
||||
MiniJump2d.start { spotter = MiniJump2d.gen_spotter.vimpattern() }
|
||||
require('plugins.lib.session_jj').load()
|
||||
end,
|
||||
noremap = true,
|
||||
desc = 'mini jump',
|
||||
desc = 'mini session select',
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
|
|
@ -91,18 +90,17 @@ return {
|
|||
active = function()
|
||||
local mode, mode_hl = MiniStatusline.section_mode {}
|
||||
local filename = MiniStatusline.section_filename { trunc_width = 140 }
|
||||
local diff = MiniStatusline.section_diff { trunc_width = 75, icon = '' }
|
||||
local diagnostics = MiniStatusline.section_diagnostics { trunc_width = 75 }
|
||||
local lsp = MiniStatusline.section_lsp { trunc_width = 75 }
|
||||
local search = MiniStatusline.section_searchcount { trunc_width = 75 }
|
||||
|
||||
return MiniStatusline.combine_groups {
|
||||
'%<', -- Mark general truncate point
|
||||
{ hl = 'MiniStatuslineFilename', strings = { '' } },
|
||||
-- { hl = 'MiniStatuslineFilename', strings = { filename } },
|
||||
'%=', -- End left alignment
|
||||
{ hl = 'MiniStatusDevinfo', strings = { diagnostics, lsp } },
|
||||
{ hl = 'MiniStatuslineFilename', strings = { search } },
|
||||
{ hl = mode_hl, strings = { mode } },
|
||||
{ hl = 'MiniStatuslineDevinfo', strings = { rec, diagnostics, lsp } },
|
||||
{ hl = 'MiniStatuslineDevinfo', strings = { search } },
|
||||
{ hl = mode_hl, strings = { mode } },
|
||||
}
|
||||
end,
|
||||
inactive = function()
|
||||
|
|
@ -118,24 +116,28 @@ return {
|
|||
require('mini.align').setup()
|
||||
require('mini.bracketed').setup()
|
||||
require('mini.icons').setup()
|
||||
require('mini.jump2d').setup {
|
||||
view = { n_steps_ahead = 1, dim = true },
|
||||
require('mini.git').setup()
|
||||
require('mini.surround').setup()
|
||||
require('mini.splitjoin').setup { detect = { separator = '[,;\n]' } }
|
||||
|
||||
local sessions = require('mini.sessions')
|
||||
sessions.setup {
|
||||
file = '',
|
||||
autowrite = true,
|
||||
verbose = {
|
||||
write = false,
|
||||
},
|
||||
}
|
||||
require('mini.git').setup { command = { split = 'vertical' } }
|
||||
-- Bind both windows so that they scroll together
|
||||
local align_blame = function(au_data)
|
||||
if au_data.data.git_subcommand ~= 'blame' then
|
||||
return
|
||||
end
|
||||
local win_src = au_data.data.win_source
|
||||
vim.wo.wrap = false
|
||||
vim.fn.winrestview { topline = vim.fn.line('w0', win_src) }
|
||||
vim.api.nvim_win_set_cursor(0, { vim.fn.line('.', win_src), 0 })
|
||||
vim.wo[win_src].scrollbind, vim.wo.scrollbind = true, true
|
||||
if #vim.fn.argv() == 0 then
|
||||
require('plugins.lib.session_jj').load()
|
||||
end
|
||||
|
||||
local au_opts = { pattern = 'MiniGitCommandSplit', callback = align_blame }
|
||||
vim.api.nvim_create_autocmd('User', au_opts)
|
||||
local jump = require('mini.jump2d')
|
||||
jump.setup {
|
||||
view = { n_steps_ahead = 1, dim = true },
|
||||
spotter = jump.gen_spotter.vimpattern(),
|
||||
}
|
||||
|
||||
setup_pairs {
|
||||
modes = { insert = true, command = true, terminal = false },
|
||||
skip_next = [=[[%w%%%'%[%"%.%`%$]]=],
|
||||
|
|
@ -144,10 +146,7 @@ return {
|
|||
markdown = true,
|
||||
}
|
||||
|
||||
require('mini.surround').setup()
|
||||
require('mini.splitjoin').setup { detect = { separator = '[,;\n]' } }
|
||||
|
||||
local jj = require('nvim.lua.plugins.lib.minidiff_jj')
|
||||
local jj = require('plugins.lib.minidiff_jj')
|
||||
local diff = require('mini.diff')
|
||||
diff.setup {
|
||||
options = { wrap_goto = true },
|
||||
|
|
@ -178,14 +177,6 @@ return {
|
|||
miniclue.gen_clues.registers(),
|
||||
miniclue.gen_clues.windows(),
|
||||
miniclue.gen_clues.z(),
|
||||
{ mode = 'n', keys = '<Leader>wj', postkeys = '<Leader>w', desc = 'TS Down' },
|
||||
{ mode = 'n', keys = '<Leader>wk', postkeys = '<Leader>w', desc = 'TS Up' },
|
||||
{ mode = 'n', keys = '<Leader>wh', postkeys = '<Leader>w', desc = 'TS Left' },
|
||||
{ mode = 'n', keys = '<Leader>wl', postkeys = '<Leader>w', desc = 'TS Right' },
|
||||
{ mode = 'n', keys = '<Leader>w<C-J>', postkeys = '<Leader>w', desc = 'Swap TS Down' },
|
||||
{ mode = 'n', keys = '<Leader>w<C-K>', postkeys = '<Leader>w', desc = 'Swap TS Up' },
|
||||
{ mode = 'n', keys = '<Leader>w<C-H>', postkeys = '<Leader>w', desc = 'Swap TS Left' },
|
||||
{ mode = 'n', keys = '<Leader>w<C-L>', postkeys = '<Leader>w', desc = 'Swap TS Right' },
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ return {
|
|||
function()
|
||||
require('oil').toggle_float()
|
||||
end,
|
||||
{ noremap = true, silent = true },
|
||||
{ noremap = true, silent = true, desc = 'oil' },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -32,7 +32,6 @@ return {
|
|||
vim.api.nvim_set_hl(0, 'EyelinerSecondary', { underline = true, bold = true })
|
||||
end,
|
||||
},
|
||||
{ 'tiagovla/scope.nvim', event = 'VeryLazy', config = true },
|
||||
{
|
||||
'MeanderingProgrammer/render-markdown.nvim',
|
||||
event = 'VeryLazy',
|
||||
|
|
@ -68,7 +67,14 @@ return {
|
|||
{ '<leader>nb', vim.cmd.DiffviewOpen, noremap = true, desc = 'diffview open' },
|
||||
{
|
||||
'<leader>nh',
|
||||
vim.cmd.DiffviewFileHistory,
|
||||
'<cmd>DiffviewFileHistory %<cr>',
|
||||
mode = { 'n', 'v' },
|
||||
noremap = true,
|
||||
desc = 'diffview history',
|
||||
},
|
||||
{
|
||||
'<leader>nH',
|
||||
'<cmd>DiffviewFileHistory<cr>',
|
||||
mode = { 'n', 'v' },
|
||||
noremap = true,
|
||||
desc = 'diffview history',
|
||||
|
|
@ -105,30 +111,6 @@ return {
|
|||
vim.api.nvim_set_hl(0, 'BlinkCmpGhostText', { link = 'String' })
|
||||
end,
|
||||
},
|
||||
{
|
||||
'gbprod/yanky.nvim',
|
||||
opts = {
|
||||
ring = {
|
||||
storage = 'memory',
|
||||
},
|
||||
picker = {
|
||||
select = {
|
||||
action = require('yanky.picker').actions.set_register('+'),
|
||||
},
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
{ 'y', '<Plug>(YankyYank)', mode = { 'n', 'x' } },
|
||||
{
|
||||
'<leader>fp',
|
||||
'<cmd>YankyRingHistory<cr>',
|
||||
mode = { 'n', 'x' },
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = 'Pick history (yanky.nvim)',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'ThePrimeagen/refactoring.nvim',
|
||||
event = 'VeryLazy',
|
||||
|
|
@ -144,5 +126,14 @@ return {
|
|||
},
|
||||
},
|
||||
},
|
||||
{ 'kevinhwang91/nvim-bqf', event = 'VeryLazy', config = true },
|
||||
{
|
||||
'kevinhwang91/nvim-bqf',
|
||||
event = 'VeryLazy',
|
||||
opts = {
|
||||
auto_resize_height = true,
|
||||
preview = {
|
||||
winblend = 0,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
return {
|
||||
{
|
||||
'folke/snacks.nvim',
|
||||
dependencies = { 'folke/trouble.nvim' },
|
||||
dependencies = {
|
||||
'folke/trouble.nvim',
|
||||
},
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {
|
||||
|
|
@ -10,7 +12,6 @@ return {
|
|||
dim = { enabled = true },
|
||||
quickfile = { enabled = true },
|
||||
notifier = { enabled = true },
|
||||
scope = { enabled = true },
|
||||
terminal = { enabled = true },
|
||||
indent = { enabled = true },
|
||||
input = { enabled = true },
|
||||
|
|
@ -135,15 +136,6 @@ return {
|
|||
noremap = true,
|
||||
desc = 'snacks explorer',
|
||||
},
|
||||
{
|
||||
'<leader>fE',
|
||||
function()
|
||||
Snacks.explorer.reveal()
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = 'snacks explorer open current file',
|
||||
},
|
||||
{
|
||||
'<leader>fg',
|
||||
function()
|
||||
|
|
@ -180,15 +172,6 @@ return {
|
|||
silent = true,
|
||||
desc = 'See all pickers',
|
||||
},
|
||||
{
|
||||
"<leader>f'",
|
||||
function()
|
||||
Snacks.picker.marks()
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = 'Pick marks',
|
||||
},
|
||||
{
|
||||
'<leader>fu',
|
||||
function()
|
||||
|
|
@ -235,18 +218,54 @@ return {
|
|||
desc = 'pick notifications',
|
||||
},
|
||||
{
|
||||
'<leader>fj',
|
||||
'<leader>fm',
|
||||
function()
|
||||
require('nvim.lua.plugins.lib.snacks_jj').status()
|
||||
vim.cmd.delmarks { args = { '0-9' } }
|
||||
Snacks.picker.pick {
|
||||
finder = 'vim_marks',
|
||||
format = 'file',
|
||||
['local'] = false,
|
||||
global = true,
|
||||
actions = {
|
||||
markdel = function(picker)
|
||||
for _, item in ipairs(picker:selected()) do
|
||||
vim.cmd.delmarks { args = { item.label } }
|
||||
end
|
||||
vim.cmd('wshada')
|
||||
picker.list:set_selected()
|
||||
picker.list:set_target()
|
||||
picker:find()
|
||||
end,
|
||||
},
|
||||
win = {
|
||||
input = {
|
||||
keys = {
|
||||
['<c-x>'] = { 'markdel', mode = { 'n', 'i' } },
|
||||
},
|
||||
},
|
||||
list = {
|
||||
keys = { ['dd'] = 'markdel' },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = 'pick global marks',
|
||||
},
|
||||
{
|
||||
'<leader>jf',
|
||||
function()
|
||||
require('plugins.lib.snacks_jj').status()
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
desc = 'pick notifications',
|
||||
},
|
||||
{
|
||||
'<leader>fr',
|
||||
'<leader>jj',
|
||||
function()
|
||||
require('nvim.lua.plugins.lib.snacks_jj').revs()
|
||||
require('plugins.lib.snacks_jj').revs()
|
||||
end,
|
||||
noremap = true,
|
||||
silent = true,
|
||||
|
|
|
|||
|
|
@ -11,19 +11,6 @@ return {
|
|||
},
|
||||
},
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
{
|
||||
'aaronik/treewalker.nvim',
|
||||
keys = {
|
||||
{ '<leader>wj', '<cmd>Treewalker Down<cr>', silent = true, desc = 'Down (Treewalker)' },
|
||||
{ '<leader>wk', '<cmd>Treewalker Up<cr>', silent = true, desc = 'Up (Treewalker)' },
|
||||
{ '<leader>wh', '<cmd>Treewalker Left<cr>', silent = true, desc = 'Left (Treewalker)' },
|
||||
{ '<leader>wl', '<cmd>Treewalker Right<cr>', silent = true, desc = 'Right (Treewalker)' },
|
||||
{ '<leader>w<C-J>', '<cmd>Treewalker SwapDown<cr>', silent = true, desc = 'SwapDown (Treewalker)' },
|
||||
{ '<leader>w<C-K>', '<cmd>Treewalker SwapUp<cr>', silent = true, desc = 'SwapUp (Treewalker)' },
|
||||
{ '<leader>w<C-H>', '<cmd>Treewalker SwapLeft<cr>', silent = true, desc = 'SwapLeft (Treewalker)' },
|
||||
{ '<leader>w<C-L>', '<cmd>Treewalker SwapRight<cr>', silent = true, desc = 'SwapRight (Treewalker)' },
|
||||
},
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
require('nvim-treesitter.configs').setup {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue