1- vim .opt .runtimepath :append (os.getenv (' PLENARY' ))
1+ --- Usage:
2+ --- 1. Put plenary.nvim and nvim-treesitter in {repo_root}/.test-deps/
3+ --- 2. in repo root, run `nvim -u scripts/minimal_init.lua`
4+ --- or, just run `make tests`
5+ local test_root = ' .test-deps'
6+ for _ , name in ipairs ({ ' config' , ' data' , ' state' , ' cache' }) do
7+ vim .env [(' XDG_%s_HOME' ):format (name :upper ())] = test_root .. ' /' .. name
8+ end
9+ vim .opt .runtimepath :append (os.getenv (' PLENARY' ) or (test_root .. ' /plenary.nvim' ))
10+ vim .opt .runtimepath :append (os.getenv (' NVIM_TS' ) or (test_root .. ' /nvim-treesitter' ))
211vim .opt .runtimepath :append (' .' )
3- vim .cmd .runtime ({ ' plugin/query_predicates.lua' , bang = true })
12+
13+ require (' nvim-treesitter' ).install ({ ' python' }):wait (300000 ) -- wait max. 5 minutes
14+
15+ local tsstart = vim .api .nvim_create_augroup (' tsstart' , { clear = true })
16+ vim .api .nvim_create_autocmd (' FileType' , {
17+ pattern = ' *' ,
18+ callback = function (args )
19+ -- Try to start Tree-sitter, but don’t error if there’s no parser
20+ vim .treesitter .start (args .buf )
21+ -- Important: ensure the parser is actually parsed.
22+ -- without this, the textobject may not do anything in headless mode
23+ vim .treesitter .get_parser (0 , vim .bo [args .buf ].filetype ):parse ()
24+ end ,
25+ group = tsstart ,
26+ })
427
528require (' nvim-treesitter-textobjects' ).setup ({
629 select = {
@@ -17,77 +40,76 @@ require('nvim-treesitter-textobjects').setup({
1740
1841local select = require (' nvim-treesitter-textobjects.select' )
1942
20- for _ , mode in ipairs ({ ' x' , ' o' }) do
21- vim .keymap .set (mode , ' am' , function ()
22- select .select_textobject (' @function.outer' , ' textobjects' )
23- end )
24- vim .keymap .set (mode , ' im' , function ()
25- select .select_textobject (' @function.inner' , ' textobjects' )
26- end )
27- vim .keymap .set (mode , ' al' , function ()
28- select .select_textobject (' @class.outer' , ' textobjects' )
29- end )
30- vim .keymap .set (mode , ' il' , function ()
31- select .select_textobject (' @class.inner' , ' textobjects' )
32- end )
33- vim .keymap .set (mode , ' ab' , function ()
34- select .select_textobject (' @block.outer' , ' textobjects' )
35- end )
36- vim .keymap .set (mode , ' ib' , function ()
37- select .select_textobject (' @block.inner' , ' textobjects' )
38- end )
39- vim .keymap .set (mode , ' ad' , function ()
40- select .select_textobject (' @conditional.outer' , ' textobjects' )
41- end )
42- vim .keymap .set (mode , ' id' , function ()
43- select .select_textobject (' @conditional.inner' , ' textobjects' )
44- end )
45- vim .keymap .set (mode , ' ao' , function ()
46- select .select_textobject (' @loop.outer' , ' textobjects' )
47- end )
48- vim .keymap .set (mode , ' io' , function ()
49- select .select_textobject (' @loop.inner' , ' textobjects' )
50- end )
51- vim .keymap .set (mode , ' aa' , function ()
52- select .select_textobject (' @parameter.outer' , ' textobjects' )
53- end )
54- vim .keymap .set (mode , ' ia' , function ()
55- select .select_textobject (' @parameter.inner' , ' textobjects' )
56- end )
57- vim .keymap .set (mode , ' af' , function ()
58- select .select_textobject (' @call.outer' , ' textobjects' )
59- end )
60- vim .keymap .set (mode , ' if' , function ()
61- select .select_textobject (' @call.inner' , ' textobjects' )
62- end )
63- vim .keymap .set (mode , ' ac' , function ()
64- select .select_textobject (' @comment.outer' , ' textobjects' )
65- end )
66- vim .keymap .set (mode , ' ar' , function ()
67- select .select_textobject (' @frame.outer' , ' textobjects' )
68- end )
69- vim .keymap .set (mode , ' ir' , function ()
70- select .select_textobject (' @frame.inner' , ' textobjects' )
71- end )
72- vim .keymap .set (mode , ' at' , function ()
73- select .select_textobject (' @attribute.outer' , ' textobjects' )
74- end )
75- vim .keymap .set (mode , ' it' , function ()
76- select .select_textobject (' @attribute.inner' , ' textobjects' )
77- end )
78- vim .keymap .set (mode , ' ae' , function ()
79- select .select_textobject (' @scopename.inner' , ' textobjects' )
80- end )
81- vim .keymap .set (mode , ' ie' , function ()
82- select .select_textobject (' @scopename.inner' , ' textobjects' )
83- end )
84- vim .keymap .set (mode , ' as' , function ()
85- select .select_textobject (' @statement.outer' , ' textobjects' )
86- end )
87- vim .keymap .set (mode , ' is' , function ()
88- select .select_textobject (' @statement.outer' , ' textobjects' )
89- end )
90- end
43+ local mode = { ' x' , ' o' }
44+ vim .keymap .set (mode , ' am' , function ()
45+ select .select_textobject (' @function.outer' , ' textobjects' )
46+ end )
47+ vim .keymap .set (mode , ' im' , function ()
48+ select .select_textobject (' @function.inner' , ' textobjects' )
49+ end )
50+ vim .keymap .set (mode , ' al' , function ()
51+ select .select_textobject (' @class.outer' , ' textobjects' )
52+ end )
53+ vim .keymap .set (mode , ' il' , function ()
54+ select .select_textobject (' @class.inner' , ' textobjects' )
55+ end )
56+ vim .keymap .set (mode , ' ab' , function ()
57+ select .select_textobject (' @block.outer' , ' textobjects' )
58+ end )
59+ vim .keymap .set (mode , ' ib' , function ()
60+ select .select_textobject (' @block.inner' , ' textobjects' )
61+ end )
62+ vim .keymap .set (mode , ' ad' , function ()
63+ select .select_textobject (' @conditional.outer' , ' textobjects' )
64+ end )
65+ vim .keymap .set (mode , ' id' , function ()
66+ select .select_textobject (' @conditional.inner' , ' textobjects' )
67+ end )
68+ vim .keymap .set (mode , ' ao' , function ()
69+ select .select_textobject (' @loop.outer' , ' textobjects' )
70+ end )
71+ vim .keymap .set (mode , ' io' , function ()
72+ select .select_textobject (' @loop.inner' , ' textobjects' )
73+ end )
74+ vim .keymap .set (mode , ' aa' , function ()
75+ select .select_textobject (' @parameter.outer' , ' textobjects' )
76+ end )
77+ vim .keymap .set (mode , ' ia' , function ()
78+ select .select_textobject (' @parameter.inner' , ' textobjects' )
79+ end )
80+ vim .keymap .set (mode , ' af' , function ()
81+ select .select_textobject (' @call.outer' , ' textobjects' )
82+ end )
83+ vim .keymap .set (mode , ' if' , function ()
84+ select .select_textobject (' @call.inner' , ' textobjects' )
85+ end )
86+ vim .keymap .set (mode , ' ac' , function ()
87+ select .select_textobject (' @comment.outer' , ' textobjects' )
88+ end )
89+ vim .keymap .set (mode , ' ar' , function ()
90+ select .select_textobject (' @frame.outer' , ' textobjects' )
91+ end )
92+ vim .keymap .set (mode , ' ir' , function ()
93+ select .select_textobject (' @frame.inner' , ' textobjects' )
94+ end )
95+ vim .keymap .set (mode , ' at' , function ()
96+ select .select_textobject (' @attribute.outer' , ' textobjects' )
97+ end )
98+ vim .keymap .set (mode , ' it' , function ()
99+ select .select_textobject (' @attribute.inner' , ' textobjects' )
100+ end )
101+ vim .keymap .set (mode , ' ae' , function ()
102+ select .select_textobject (' @scopename.inner' , ' textobjects' )
103+ end )
104+ vim .keymap .set (mode , ' ie' , function ()
105+ select .select_textobject (' @scopename.inner' , ' textobjects' )
106+ end )
107+ vim .keymap .set (mode , ' as' , function ()
108+ select .select_textobject (' @statement.outer' , ' textobjects' )
109+ end )
110+ vim .keymap .set (mode , ' is' , function ()
111+ select .select_textobject (' @statement.outer' , ' textobjects' )
112+ end )
91113
92114-- swap
93115local swap = require (' nvim-treesitter-textobjects.swap' )
@@ -400,12 +422,12 @@ local ts_repeat_move = require('nvim-treesitter-textobjects.repeatable_move')
400422
401423-- Repeat movement with ; and ,
402424-- ensure ; goes forward and , goes backward regardless of the last direction
403- vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ;' , ts_repeat_move .repeat_last_move_next )
404- vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ,' , ts_repeat_move .repeat_last_move_previous )
425+ -- vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move_next)
426+ -- vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_previous)
405427
406428-- vim way: ; goes to the direction you were moving.
407- -- vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move)
408- -- vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_opposite)
429+ vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ;' , ts_repeat_move .repeat_last_move )
430+ vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ,' , ts_repeat_move .repeat_last_move_opposite )
409431
410432-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
411433vim .keymap .set ({ ' n' , ' x' , ' o' }, ' f' , ts_repeat_move .builtin_f_expr , { expr = true })
0 commit comments