Skip to content

Commit a2bccad

Browse files
Use Treesitter for folding (#523)
1 parent 313ce5a commit a2bccad

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

ftplugin/org.vim

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
lua require('orgmode.config'):setup_mappings('org')
22
lua require('orgmode.config'):setup_mappings('text_objects')
33

4-
function! OrgmodeFoldExpr()
5-
return luaeval('require("orgmode.org.indent").foldexpr()')
6-
endfunction
7-
84
function! OrgmodeFoldText()
95
return luaeval('require("orgmode.org.indent").foldtext()')
106
endfunction
@@ -20,7 +16,7 @@ endfunction
2016
setlocal nomodeline
2117
setlocal fillchars+=fold:\
2218
setlocal foldmethod=expr
23-
setlocal foldexpr=OrgmodeFoldExpr()
19+
setlocal foldexpr=nvim_treesitter#foldexpr()
2420
setlocal foldtext=OrgmodeFoldText()
2521
setlocal formatexpr=OrgmodeFormatExpr()
2622
setlocal foldlevel=0

lua/orgmode/utils/treesitter.lua

+4-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ function M.get_node_at_cursor(cursor, winnr, ignore_injected_langs)
3939
winnr = winnr or 0
4040
local buf = vim.api.nvim_win_get_buf(winnr)
4141
-- TODO: Use only this function when 0.8 is released
42-
if vim.treesitter.get_node_at_pos then
43-
return vim.treesitter.get_node_at_pos(buf, cursor[1] - 1, cursor[2], {
42+
if vim.treesitter.get_node then
43+
return vim.treesitter.get_node({
44+
bufrn = buf,
45+
pos = { cursor[1] - 1, cursor[2] },
4446
ignore_injections = ignore_injected_langs,
4547
})
4648
end

queries/org/folds.scm

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
([
2+
(section)
3+
(table)
4+
(drawer)
5+
(property_drawer)
6+
(block)
7+
] @fold
8+
(#trim! @fold))

0 commit comments

Comments
 (0)