我有这个函数来编译我的tex文件:
function! CompileTex()
silent write!
call setqflist([])
echon "compiling with arara ..."
exec 'lcd %:h'
if expand("%:p") =~# '\(figuras\|figures\)'
let mainfile = fnameescape(expand("%:p"))
else
let mainfile = fnameescape(Tex_GetMainFileName())
endif
let &l:makeprg = 'arara -v ' . mainfile
silent make!
if !empty(getqflist())
copen
wincmd J
else
cclose
redraw
echon "successfully compiled"
endif
endfunction
第一个条件是因为在创建数字时我想编译当前缓冲区,即使有主文件也是如此。但是,当我在包含“数字”的路径中调用该函数时,我得到了
Error detected while processing function CompileTex:
line 4:
E499: Empty file name for '%' or '#', only works with ":p:h": lcd %:h
并且mainfile
变量设置为主tex文件,而不是我想要的当前缓冲区。
答案 0 :(得分:1)
尝试显示错误消息,并将“lcd%:h”更改为“lcd%:p:h”。
此外,您不需要:exec。直接写它,这是一个ex命令:
function! CompileTex()
silent write!
call setqflist([])
echon "compiling with arara ..."
lcd %:p:h
...
etc.