summaryrefslogtreecommitdiffstats
path: root/autoload/unite/sources/vimtex.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/unite/sources/vimtex.vim
parent8ec73a3a8974a62a613680a6b6222a77a7b99546 (diff)
downloadvim-polyglot-d757bfd643cc73c2d495355c153ed0257f5d5b47.tar.gz
vim-polyglot-d757bfd643cc73c2d495355c153ed0257f5d5b47.zip
Change latex provider to luatex, closes #476
Diffstat (limited to 'autoload/unite/sources/vimtex.vim')
-rw-r--r--autoload/unite/sources/vimtex.vim87
1 files changed, 87 insertions, 0 deletions
diff --git a/autoload/unite/sources/vimtex.vim b/autoload/unite/sources/vimtex.vim
new file mode 100644
index 00000000..af13a6e4
--- /dev/null
+++ b/autoload/unite/sources/vimtex.vim
@@ -0,0 +1,87 @@
+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
+"
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+let s:source = {
+ \ 'name' : 'vimtex',
+ \ 'sorters' : 'sorter_nothing',
+ \ 'default_kind' : 'jump_list',
+ \ 'syntax' : 'uniteSource__vimtex',
+ \ 'entries' : [],
+ \ 'maxlevel' : 1,
+ \ 'hooks' : {},
+ \}
+
+function! s:source.gather_candidates(args, context) abort " {{{1
+ if exists('b:vimtex')
+ let s:source.entries = vimtex#parser#toc()
+ let s:source.maxlevel = max(map(copy(s:source.entries), 'v:val.level'))
+ endif
+ return map(copy(s:source.entries),
+ \ 's:create_candidate(v:val, s:source.maxlevel)')
+endfunction
+
+" }}}1
+function! s:source.hooks.on_syntax(args, context) abort " {{{1
+ syntax match VimtexTocSecs /.* @\d$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocSec0 /.* @0$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocSec1 /.* @1$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocSec2 /.* @2$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocSec3 /.* @3$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocSec4 /.* @4$/
+ \ contains=VimtexTocNum,VimtexTocTag,@Tex
+ \ contained containedin=uniteSource__vimtex
+ syntax match VimtexTocNum
+ \ /\%69v\%(\%([A-Z]\+\>\|\d\+\)\%(\.\d\+\)*\)\?\s*@\d$/
+ \ contains=VimtexTocLevel
+ \ contained containedin=VimtexTocSec[0-9*]
+ syntax match VimtexTocTag
+ \ /\[.\]\s*@\d$/
+ \ contains=VimtexTocLevel
+ \ contained containedin=VimtexTocSec[0-9*]
+ syntax match VimtexTocLevel
+ \ /@\d$/ conceal
+ \ contained containedin=VimtexTocNum,VimtexTocTag
+endfunction
+
+" }}}1
+
+function! s:create_candidate(entry, maxlevel) abort " {{{1
+ let level = a:maxlevel - a:entry.level
+ let title = printf('%-65S%-10s',
+ \ strpart(repeat(' ', 2*level) . a:entry.title, 0, 60),
+ \ b:vimtex.toc.print_number(a:entry.number))
+ return {
+ \ 'word' : title,
+ \ 'abbr' : title . ' @' . level,
+ \ 'action__path' : a:entry.file,
+ \ 'action__line' : get(a:entry, 'line', 0),
+ \ }
+endfunction
+
+" }}}1
+
+function! unite#sources#vimtex#define() abort
+ return s:source
+endfunction
+
+let &cpo = s:save_cpo
+
+endif