blob: 65533e28dee09c69f019f6df6a9668067b827300 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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#kpsewhich#find(file) abort " {{{1
return s:find_cached(a:file)
endfunction
" }}}1
function! vimtex#kpsewhich#run(args) abort " {{{1
" kpsewhich should be run at the project root directory
if exists('b:vimtex.root')
call vimtex#paths#pushd(b:vimtex.root)
endif
let l:output = vimtex#process#capture('kpsewhich ' . a:args)
if exists('b:vimtex.root')
call vimtex#paths#popd()
endif
" Remove warning lines from output
call filter(l:output, 'stridx(v:val, "kpsewhich: warning: ") == -1')
return l:output
endfunction
" }}}1
function! s:find(file) abort " {{{1
let l:output = vimtex#kpsewhich#run(fnameescape(a:file))
if empty(l:output) | return '' | endif
let l:filename = l:output[0]
" Ensure absolute path
if !vimtex#paths#is_abs(l:filename) && exists('b:vimtex.root')
let l:filename = simplify(b:vimtex.root . '/' . l:filename)
endif
return l:filename
endfunction
" Use caching if possible (requires 'lambda' feature)
let s:find_cached = has('lambda')
\ ? vimtex#cache#wrap(function('s:find'), 'kpsewhich')
\ : function('s:find')
" }}}1
endif
|