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+ local ts = require (' nvim-treesitter' )
14+ ts .setup ({})
15+ require (' nvim-treesitter' ).install ({ ' python' }):wait (300000 ) -- wait max. 5 minutes
16+
17+ local tsstart = vim .api .nvim_create_augroup (' tsstart' , { clear = true })
18+ vim .api .nvim_create_autocmd (' FileType' , {
19+ pattern = ' *' ,
20+ callback = function (args )
21+ -- Try to start Tree-sitter, but don’t error if there’s no parser
22+ vim .treesitter .start (args .buf )
23+ -- Important: ensure the parser is actually parsed.
24+ -- without this, the textobject may not do anything in headless mode
25+ vim .treesitter .get_parser (0 , vim .bo [args .buf ].filetype ):parse ()
26+ end ,
27+ group = tsstart ,
28+ })
429
530require (' nvim-treesitter-textobjects' ).setup ({
631 select = {
@@ -17,77 +42,76 @@ require('nvim-treesitter-textobjects').setup({
1742
1843local select = require (' nvim-treesitter-textobjects.select' )
1944
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
45+ local mode = { ' x' , ' o' }
46+ vim .keymap .set (mode , ' am' , function ()
47+ select .select_textobject (' @function.outer' , ' textobjects' )
48+ end )
49+ vim .keymap .set (mode , ' im' , function ()
50+ select .select_textobject (' @function.inner' , ' textobjects' )
51+ end )
52+ vim .keymap .set (mode , ' al' , function ()
53+ select .select_textobject (' @class.outer' , ' textobjects' )
54+ end )
55+ vim .keymap .set (mode , ' il' , function ()
56+ select .select_textobject (' @class.inner' , ' textobjects' )
57+ end )
58+ vim .keymap .set (mode , ' ab' , function ()
59+ select .select_textobject (' @block.outer' , ' textobjects' )
60+ end )
61+ vim .keymap .set (mode , ' ib' , function ()
62+ select .select_textobject (' @block.inner' , ' textobjects' )
63+ end )
64+ vim .keymap .set (mode , ' ad' , function ()
65+ select .select_textobject (' @conditional.outer' , ' textobjects' )
66+ end )
67+ vim .keymap .set (mode , ' id' , function ()
68+ select .select_textobject (' @conditional.inner' , ' textobjects' )
69+ end )
70+ vim .keymap .set (mode , ' ao' , function ()
71+ select .select_textobject (' @loop.outer' , ' textobjects' )
72+ end )
73+ vim .keymap .set (mode , ' io' , function ()
74+ select .select_textobject (' @loop.inner' , ' textobjects' )
75+ end )
76+ vim .keymap .set (mode , ' aa' , function ()
77+ select .select_textobject (' @parameter.outer' , ' textobjects' )
78+ end )
79+ vim .keymap .set (mode , ' ia' , function ()
80+ select .select_textobject (' @parameter.inner' , ' textobjects' )
81+ end )
82+ vim .keymap .set (mode , ' af' , function ()
83+ select .select_textobject (' @call.outer' , ' textobjects' )
84+ end )
85+ vim .keymap .set (mode , ' if' , function ()
86+ select .select_textobject (' @call.inner' , ' textobjects' )
87+ end )
88+ vim .keymap .set (mode , ' ac' , function ()
89+ select .select_textobject (' @comment.outer' , ' textobjects' )
90+ end )
91+ vim .keymap .set (mode , ' ar' , function ()
92+ select .select_textobject (' @frame.outer' , ' textobjects' )
93+ end )
94+ vim .keymap .set (mode , ' ir' , function ()
95+ select .select_textobject (' @frame.inner' , ' textobjects' )
96+ end )
97+ vim .keymap .set (mode , ' at' , function ()
98+ select .select_textobject (' @attribute.outer' , ' textobjects' )
99+ end )
100+ vim .keymap .set (mode , ' it' , function ()
101+ select .select_textobject (' @attribute.inner' , ' textobjects' )
102+ end )
103+ vim .keymap .set (mode , ' ae' , function ()
104+ select .select_textobject (' @scopename.inner' , ' textobjects' )
105+ end )
106+ vim .keymap .set (mode , ' ie' , function ()
107+ select .select_textobject (' @scopename.inner' , ' textobjects' )
108+ end )
109+ vim .keymap .set (mode , ' as' , function ()
110+ select .select_textobject (' @statement.outer' , ' textobjects' )
111+ end )
112+ vim .keymap .set (mode , ' is' , function ()
113+ select .select_textobject (' @statement.outer' , ' textobjects' )
114+ end )
91115
92116-- swap
93117local swap = require (' nvim-treesitter-textobjects.swap' )
@@ -400,12 +424,12 @@ local ts_repeat_move = require('nvim-treesitter-textobjects.repeatable_move')
400424
401425-- Repeat movement with ; and ,
402426-- 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 )
427+ -- vim.keymap.set({ 'n', 'x', 'o' }, ';', ts_repeat_move.repeat_last_move_next)
428+ -- vim.keymap.set({ 'n', 'x', 'o' }, ',', ts_repeat_move.repeat_last_move_previous)
405429
406430-- 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)
431+ vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ;' , ts_repeat_move .repeat_last_move )
432+ vim .keymap .set ({ ' n' , ' x' , ' o' }, ' ,' , ts_repeat_move .repeat_last_move_opposite )
409433
410434-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
411435vim .keymap .set ({ ' n' , ' x' , ' o' }, ' f' , ts_repeat_move .builtin_f_expr , { expr = true })
0 commit comments