summaryrefslogtreecommitdiffstats
path: root/autoload/vimtex/fold/comments.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/vimtex/fold/comments.vim')
-rw-r--r--autoload/vimtex/fold/comments.vim46
1 files changed, 46 insertions, 0 deletions
diff --git a/autoload/vimtex/fold/comments.vim b/autoload/vimtex/fold/comments.vim
new file mode 100644
index 00000000..4a313064
--- /dev/null
+++ b/autoload/vimtex/fold/comments.vim
@@ -0,0 +1,46 @@
+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#comments#new(config) abort " {{{1
+ return extend(deepcopy(s:folder), a:config)
+endfunction
+
+" }}}1
+
+
+let s:folder = {
+ \ 'name' : 'comments',
+ \ 're' : {'start' : '^\s*%'},
+ \ 'opened' : 0,
+ \}
+function! s:folder.level(line, lnum) abort dict " {{{1
+ if exists('b:vimtex.fold_types_dict.markers.opened')
+ \ && b:vimtex.fold_types_dict.markers.opened | return | endif
+
+ if a:line =~# self.re.start
+ let l:next = getline(a:lnum-1) !~# self.re.start
+ let l:prev = getline(a:lnum+1) !~# self.re.start
+ if l:next && !l:prev
+ let self.opened = 1
+ return 'a1'
+ elseif l:prev && !l:next
+ let self.opened = 0
+ return 's1'
+ endif
+ endif
+endfunction
+
+" }}}1
+function! s:folder.text(line, level) abort dict " {{{1
+ let l:lines = map(getline(v:foldstart, v:foldend), 'matchstr(v:val, ''%\s*\zs.*\ze\s*'')')
+ return matchstr(a:line, '^.*\s*%') . join(l:lines, ' ')
+endfunction
+
+" }}}1
+
+endif