summaryrefslogtreecommitdiffstats
path: root/vim/after/ftplugin/tex.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/after/ftplugin/tex.vim')
-rw-r--r--vim/after/ftplugin/tex.vim33
1 files changed, 31 insertions, 2 deletions
diff --git a/vim/after/ftplugin/tex.vim b/vim/after/ftplugin/tex.vim
index 91985fa..885a065 100644
--- a/vim/after/ftplugin/tex.vim
+++ b/vim/after/ftplugin/tex.vim
@@ -1,9 +1,38 @@
+function! GetMainLatexFile()
+ let p = expand('%:p:h')
+ while simplify(p) != "/"
+ let main = globpath(p, '*.latexmain')
+ if main != ''
+ return fnamemodify(main, ":p:r")
+ endif
+ let p = globpath(p, '..')
+ endwhile
+
+ " no root document found, use current one
+ return expand('%:p')
+endfunction
+
+function! BuildLatex()
+ let oldcwd = getcwd()
+ let file = GetMainLatexFile()
+ let newcwd = fnamemodify(file, ":p:h")
+ exec "lcd" . newcwd
+ exe "! rubber -d" file
+ exec "lcd" . oldcwd
+endfunction
+
+function! ShowPDF()
+ let texfile = GetMainLatexFile()
+ let pdffile = fnamemodify(texfile, ":p:r") . ".pdf"
+ exe "! evince" pdffile ">/dev/null 2>&1 &"
+endfunction
+
" compile latex via <F6>
-nnoremap \rubber :!rubber -d %<CR>
+nnoremap \rubber :call BuildLatex()<CR>
nmap <buffer> <F6> \rubber
imap <buffer> <F6> <C-O>\rubber
" open pdf via <F10>
-nnoremap \evince :!vim-open-pdf % >/dev/null 2>&1 &<CR><CR>
+nnoremap \evince :call ShowPDF()<CR><CR>
nmap <buffer> <F10> \evince
imap <buffer> <F10> <C-O>\evince