summaryrefslogtreecommitdiffstats
path: root/autoload/vimtex/fold/cmd_multi.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/vimtex/fold/cmd_multi.vim')
-rw-r--r--autoload/vimtex/fold/cmd_multi.vim51
1 files changed, 51 insertions, 0 deletions
diff --git a/autoload/vimtex/fold/cmd_multi.vim b/autoload/vimtex/fold/cmd_multi.vim
new file mode 100644
index 00000000..cb84d09e
--- /dev/null
+++ b/autoload/vimtex/fold/cmd_multi.vim
@@ -0,0 +1,51 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'latex') == -1
+
+" vimtex - LaTeX plugin for Vim
+"
+" Maintainer: Karl Yngve LervÄg
+" Email: karl.yngve@gmail.com
+"
+
+function! vimtex#fold#cmd_multi#new(config) abort " {{{1
+ return extend(deepcopy(s:folder), a:config).init()
+endfunction
+
+" }}}1
+
+
+let s:folder = {
+ \ 'name' : 'cmd_multi',
+ \ 're' : {},
+ \ 'opened' : 0,
+ \ 'cmds' : [],
+ \}
+function! s:folder.init() abort dict " {{{1
+ let l:re = '\v^\s*\\%(' . join(self.cmds, '|') . ')\*?'
+
+ let self.re.start = l:re . '.*(\{|\[)\s*(\%.*)?$'
+ let self.re.end = '\v^\s*%(\}\s*\{)*\}\s*%(\%|$)'
+ let self.re.text = l:re . '\{[^}]*\}'
+ let self.re.fold_re = '\\%(' . join(self.cmds, '|') . ')'
+
+ return self
+endfunction
+
+" }}}1
+function! s:folder.level(line, lnum) abort dict " {{{1
+ if a:line =~# self.re.start
+ let self.opened += 1
+ return 'a1'
+ elseif self.opened > 0 && a:line =~# self.re.end
+ let self.opened -= 1
+ return 's1'
+ endif
+endfunction
+
+" }}}1
+function! s:folder.text(line, level) abort dict " {{{1
+ return a:line
+endfunction
+
+" }}}1
+
+endif