Skip to content

Instantly share code, notes, and snippets.

@andymass
Last active March 13, 2017 20:05
Show Gist options
  • Save andymass/ea7e381d51387e205f44c0c43aca7225 to your computer and use it in GitHub Desktop.
Save andymass/ea7e381d51387e205f44c0c43aca7225 to your computer and use it in GitHub Desktop.
Detect TeX program from %! TeX program= directive
function! DetectTexProgram()
let l:pat = '^\c\s*%\s*!\?\s*tex\s\+\(TS-\)\?program\s*=\s*\zs.*\ze\s*$'
let l:engine_list = {
\ 'pdflatex' : '',
\ 'lualatex' : '-lualatex',
\ 'xelatex' : '-xelatex',
\ 'context (luatex)' : '-pdflatex=context',
\ 'context (xetex)' : '-pdflatex=''texexec --xtx''',
\ 'context (pdftex)' : '-pdflatex=texexec',
\ }
" \ 'pdftex' : 'pdftex',
" \ 'luatex' : 'luatex',
" \ 'xetex' : 'xetex',
for l:line in getline(1, 5)
let l:engine = matchstr(l:line, l:pat)
if len(l:engine) > 0
if has_key(l:engine_list, tolower(l:engine)) > 0
let l:opt = ' '.l:engine_list[tolower(l:engine)].' '
let g:vimtex_latexmk_options .= l:opt
else
echoerr 'Unknown engine '.l:engine
endif
endif
endfor
endfunction
autocmd FileType tex call DetectTexProgram()