summaryrefslogtreecommitdiffstats
path: root/autoload/vimtex/fold/markers.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-04-25 21:30:46 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-04-25 21:30:46 +0200
commitd757bfd643cc73c2d495355c153ed0257f5d5b47 (patch)
treeff210950456938a779d98f6a2ba7321aca512897 /autoload/vimtex/fold/markers.vim
parent8ec73a3a8974a62a613680a6b6222a77a7b99546 (diff)
downloadvim-polyglot-d757bfd643cc73c2d495355c153ed0257f5d5b47.tar.gz
vim-polyglot-d757bfd643cc73c2d495355c153ed0257f5d5b47.zip
Change latex provider to luatex, closes #476
Diffstat (limited to 'autoload/vimtex/fold/markers.vim')
-rw-r--r--autoload/vimtex/fold/markers.vim60
1 files changed, 60 insertions, 0 deletions
diff --git a/autoload/vimtex/fold/markers.vim b/autoload/vimtex/fold/markers.vim
new file mode 100644
index 00000000..00aa1fce
--- /dev/null
+++ b/autoload/vimtex/fold/markers.vim
@@ -0,0 +1,60 @@
+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#markers#new(config) abort " {{{1
+ return extend(deepcopy(s:folder), a:config).init()
+endfunction
+
+" }}}1
+
+
+let s:folder = {
+ \ 'name' : 'markers',
+ \ 'open' : '{{{',
+ \ 'close' : '}}}',
+ \ 're' : {},
+ \ 'opened' : 0,
+ \}
+function! s:folder.init() abort dict " {{{1
+ let self.re.start = '%.*' . self.open
+ let self.re.end = '%.*' . self.close
+ let self.re.text = [
+ \ [self.re.start . '\d\?\s*\zs.*', '% ' . self.open . ' '],
+ \ ['%\s*\zs.*\ze' . self.open, '% ' . self.open . ' '],
+ \ ['^.*\ze\s*%', ''],
+ \]
+
+ let self.re.fold_re = escape(self.open . '|' . self.close, '{}%+*.')
+
+ return self
+endfunction
+
+" }}}1
+function! s:folder.level(line, lnum) abort dict " {{{1
+ if a:line =~# self.re.start
+ let s:self.opened = 1
+ return 'a1'
+ elseif a:line =~# self.re.end
+ let s:self.opened = 0
+ return 's1'
+ endif
+endfunction
+
+" }}}1
+function! s:folder.text(line, level) abort dict " {{{1
+ for [l:re, l:pre] in self.re.text
+ let l:text = matchstr(a:line, l:re)
+ if !empty(l:text) | return l:pre . l:text | endif
+ endfor
+
+ return '% ' . self.open . ' ' . getline(v:foldstart + 1)
+endfunction
+
+" }}}1
+
+endif