Update latex complete.vim

This commit is contained in:
Adam Stankiewicz
2013-10-08 12:04:23 +02:00
parent e108a087b4
commit 085aad28a4

View File

@@ -196,37 +196,42 @@ function! s:FindBibData(...)
endif endif
if !filereadable(file) if !filereadable(file)
return '' return []
endif endif
let lines = readfile(file)
let bibdata_list = []
"
" Search for added bibliographies
"
let bibliography_cmds = [ let bibliography_cmds = [
\ '\\bibliography', \ '\\bibliography',
\ '\\addbibresource', \ '\\addbibresource',
\ '\\addglobalbib', \ '\\addglobalbib',
\ '\\addsectionbib', \ '\\addsectionbib',
\ ] \ ]
let lines = readfile(file)
let bibdata_list = []
for cmd in bibliography_cmds for cmd in bibliography_cmds
let bibdata_list += map(filter(copy(lines), let filtered = filter(copy(lines),
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}'''), \ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}''')
let files = map(filtered,
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')') \ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
for file in files
let bibdata_list += map(split(file, ','),
\ 'fnamemodify(v:val, '':r'')')
endfor
endfor endfor
let bibdata_list += map(filter(copy(lines), "
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}'''), " Also search included files
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,' "
\ . '''\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}'')))') for input in filter(lines,
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}''')
let bibdata_list += s:FindBibData(LatexBox_kpsewhich(
\ matchstr(input,
\ '\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}')))
endfor
let bibdata_list += map(filter(copy(lines), return bibdata_list
\ 'v:val =~ ''\C\\\%(input\|include\)\s\+\S\+'''),
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
\ . '''\C\\\%(input\|include\)\s\+\zs\S\+\ze'')))')
return join(bibdata_list, ',')
endfunction endfunction
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete' let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
@@ -235,7 +240,7 @@ function! LatexBox_BibSearch(regexp)
let res = [] let res = []
" Find data from bib files " Find data from bib files
let bibdata = s:FindBibData() let bibdata = join(s:FindBibData(), ',')
if bibdata != '' if bibdata != ''
" write temporary aux file " write temporary aux file
@@ -247,9 +252,15 @@ function! LatexBox_BibSearch(regexp)
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}', call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
\ '\bibdata{' . bibdata . '}'], auxfile) \ '\bibdata{' . bibdata . '}'], auxfile)
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) . if has('win32')
\ ' ; bibtex -terse ' silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
\ . fnamemodify(auxfile, ':t') . ' >/dev/null' \ ' & bibtex -terse '
\ . fnamemodify(auxfile, ':t') . ' >nul'
else
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
\ ' ; bibtex -terse '
\ . fnamemodify(auxfile, ':t') . ' >/dev/null'
endif
let lines = split(substitute(join(readfile(bblfile), "\n"), let lines = split(substitute(join(readfile(bblfile), "\n"),
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n") \ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")