diff options
Diffstat (limited to 'autoload/vimtex/fold/cmd_multi.vim')
-rw-r--r-- | autoload/vimtex/fold/cmd_multi.vim | 51 |
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 |