Added option to turn of continuous mode (see docs)

This commit is contained in:
Karl Yngve Lervåg 2014-08-24 21:22:24 +02:00
parent d44ecff1cf
commit 0dc505bd58
4 changed files with 88 additions and 57 deletions

View File

@ -232,6 +232,7 @@ function! s:init_options() " {{{1
call latex#util#error_deprecated('g:latex_errorformat_show_warnings')
call latex#util#error_deprecated('g:latex_latexmk_autojump')
call latex#util#error_deprecated('g:latex_latexmk_quickfix')
call latex#util#error_deprecated('g:latex_latexmk_options')
call latex#util#set_default('g:latex_build_dir', '.')
call latex#util#set_default('g:latex_complete_enabled', 1)
@ -264,7 +265,8 @@ function! s:init_options() " {{{1
call latex#util#set_default('g:latex_indent_enabled', 1)
call latex#util#set_default('g:latex_latexmk_enabled', 1)
call latex#util#set_default('g:latex_latexmk_callback', 1)
call latex#util#set_default('g:latex_latexmk_options', '')
call latex#util#set_default('g:latex_latexmk_continuous', 1)
call latex#util#set_default('g:latex_latexmk_background', 0)
call latex#util#set_default('g:latex_latexmk_output', 'pdf')
call latex#util#set_default('g:latex_mappings_enabled', 1)
call latex#util#set_default('g:latex_motion_enabled', 1)

View File

@ -45,6 +45,9 @@ function! latex#latexmk#init(initialized) " {{{1
nnoremap <silent><buffer> <localleader>lo :call latex#latexmk#output()<cr>
endif
" The remaining part is only relevant for continuous mode
if !g:latex_latexmk_continuous | return | endif
"
" Ensure that all latexmk processes are stopped when vim exits
" Note: Only need to define this once, globally.
@ -69,7 +72,7 @@ endfunction
" }}}1
function! latex#latexmk#clean(full) " {{{1
let data = g:latex#data[b:latex.id]
if s:latexmk_check_pid(data.pid)
if data.pid
echomsg "latexmk is already running"
return
endif
@ -106,7 +109,7 @@ endfunction
function! latex#latexmk#compile() " {{{1
let data = g:latex#data[b:latex.id]
if s:latexmk_check_pid(data.pid)
if data.pid
echomsg "latexmk is already running for `" . data.base . "'"
return
endif
@ -114,17 +117,20 @@ function! latex#latexmk#compile() " {{{1
call s:latexmk_set_cmd(data)
" Start latexmk
" Define execute dictionary and latexmk command
let exe = {}
let exe.null = 0
if !g:latex_latexmk_continuous && !g:latex_latexmk_background
let exe.bg = 0
endif
let exe.cmd = data.cmds.compile
call latex#util#execute(exe)
" Save PID
call s:latexmk_set_pid(data)
" Finished
echomsg 'latexmk started successfully'
if g:latex_latexmk_continuous
call s:latexmk_set_pid(data)
echomsg 'latexmk continuous mode started successfully'
else
echomsg 'latexmk compiling'
endif
endfunction
" }}}1
@ -200,7 +206,7 @@ function! latex#latexmk#status(detailed) " {{{1
if a:detailed
let running = 0
for data in g:latex#data
if s:latexmk_check_pid(data.pid)
if data.pid
if !running
echo "latexmk is running"
let running = 1
@ -219,7 +225,7 @@ function! latex#latexmk#status(detailed) " {{{1
echo "latexmk is not running"
endif
else
if s:latexmk_check_pid(g:latex#data[b:latex.id].pid)
if g:latex#data[b:latex.id].pid
echo "latexmk is running"
else
echo "latexmk is not running"
@ -231,7 +237,7 @@ endfunction
function! latex#latexmk#stop() " {{{1
let pid = g:latex#data[b:latex.id].pid
let base = g:latex#data[b:latex.id].base
if s:latexmk_check_pid(pid)
if pid
call s:latexmk_kill_pid(pid)
let g:latex#data[b:latex.id].pid = 0
echo "latexmk stopped for `" . base . "'"
@ -243,7 +249,7 @@ endfunction
" }}}1
function! latex#latexmk#stop_all() " {{{1
for data in g:latex#data
if s:latexmk_check_pid(data.pid)
if data.pid
call s:latexmk_kill_pid(data.pid)
let data.pid = 0
endif
@ -267,30 +273,32 @@ function! s:latexmk_set_cmd(data) " {{{1
endif
let cmd .= ' -' . g:latex_latexmk_output
let cmd .= ' -verbose '
let cmd .= ' -pvc'
let cmd .= ' ' . g:latex_latexmk_options
let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
if g:latex_latexmk_callback && has('clientserver')
let callback = 'vim --servername ' . v:servername
\ . ' --remote-expr \"latex\#latexmk\#errors(0)\"'
if has('win32')
let cmd .= ' -e "$success_cmd .= ''' . callback . '''"'
\ . ' -e "$failure_cmd .= ''' . callback . '''"'
else
let cmd .= ' -e ''$success_cmd .= "' . callback . '"'''
\ . ' -e ''$failure_cmd .= "' . callback . '"'''
if g:latex_latexmk_continuous
let cmd .= ' -pvc'
if g:latex_latexmk_callback && has('clientserver')
let callback = 'vim --servername ' . v:servername
\ . ' --remote-expr \"latex\#latexmk\#errors(0)\"'
if has('win32')
let cmd .= ' -e "$success_cmd .= ''' . callback . '''"'
\ . ' -e "$failure_cmd .= ''' . callback . '''"'
else
let cmd .= ' -e ''$success_cmd .= "' . callback . '"'''
\ . ' -e ''$failure_cmd .= "' . callback . '"'''
endif
endif
endif
let cmd .= ' ' . shellescape(a:data.base)
if has('win32')
let cmd .= ' >' . tmp
let cmd = 'cmd /s /c "' . cmd . '"'
else
let cmd .= ' &>' . tmp
if g:latex_latexmk_continuous || g:latex_latexmk_background
if has('win32')
let cmd .= ' >' . tmp
let cmd = 'cmd /s /c "' . cmd . '"'
else
let cmd .= ' &>' . tmp
endif
endif
let a:data.cmds.compile = cmd
@ -313,18 +321,6 @@ function! s:latexmk_set_pid(data) " {{{1
endif
endfunction
function! s:latexmk_check_pid(pid) " {{{1
if has('win32')
" don't have Windows ==> no change
return a:pid
else
" ps considers a 0 PID out of range and prints and error message
" side effect: will no longer see laxtexmk commands run externally
return a:pid && system('ps -p ' . a:pid . ' -o cmd= | grep "^perl.*latexmk"')
endif
endfunction
" }}}1
function! s:latexmk_kill_pid(pid) " {{{1
let exe = {}
let exe.bg = 0
@ -361,7 +357,7 @@ function! s:stop_buffer() " {{{1
"
" Only stop if latexmk is running
"
if s:latexmk_check_pid(pid)
if pid
"
" Count the number of buffers that point to current latex blob
"

View File

@ -140,7 +140,11 @@ function! latex#util#execute(exe) " {{{1
endif
endif
silent execute cmd
if bg
silent execute cmd
else
execute cmd
endif
" Return to previous working directory
if has_key(a:exe, 'wd')

View File

@ -280,7 +280,8 @@ Overview:~
|g:latex_indent_enabled|
|g:latex_latexmk_callback|
|g:latex_latexmk_enabled|
|g:latex_latexmk_options|
|g:latex_latexmk_continuous|
|g:latex_latexmk_background|
|g:latex_latexmk_output|
|g:latex_mappings_enabled|
|g:latex_motion_enabled|
@ -390,9 +391,17 @@ necessary variables and autocommands will not be defined, and the mappings
will not be created. >
let g:latex_latexmk_enabled = 1
<
*g:latex_latexmk_options*
Set extra options for `latexmk` compilation. >
let g:latex_latexmk_options = ''
*g:latex_latexmk_background*
If continuous mode is disabled, then this option may be used to set
whether single compilations should be run in the foreground or the
background. >
let g:latex_latexmk_background = 0
<
*g:latex_latexmk_continuous*
If enabled, `latexmk` will run in continuous mode. This means that the
document is compiled every time a document file has been changed. Set to 0 to
disable. Note that the callback functions only work if continuous mode is enabled. >
let g:latex_latexmk_continuous = 1
<
*g:latex_latexmk_output*
Set desired output for `latexmk` compilation. >
@ -615,9 +624,9 @@ Associated settings:
==============================================================================
LATEXMK *vim-latex-latexmk*
|vim-latex| provides a basic interface to `latexmk` for background
compilation. The interface may be disabled with |g:latex_latexmk_enabled|.
The default mappings are: >
|vim-latex| provides a basic interface to `latexmk` for compilation. The
interface may be disabled with |g:latex_latexmk_enabled|. The default
mappings are: >
nnoremap <localleader>ll :call latex#latexmk#compile()<cr>
nnoremap <localleader>lk :call latex#latexmk#stop(1)<cr>
@ -629,11 +638,17 @@ The default mappings are: >
nnoremap <localleader>lc :call latex#latexmk#clean(0)<cr>
nnoremap <localleader>lC :call latex#latexmk#clean(1)<cr>
The background compilation is started with |latex#latexmk#compile|. It relies
on the preview continuous mode of `latexmk`. If vim is compiled with the
|+clientserver| option and if |g:latex_latexmk_callback| is enabled, then
compilation errors are parsed automatically. This is done by utilizing the
tricks explained in |vim-latex-latexmk-tricks|.
Compilation is started with |latex#latexmk#compile|. The default behaviour
uses preview continuous mode of `latexmk`, which may be disabled with
|g:latex_latexmk_continuous|. If it is disabled, then the option
|g:latex_latexmk_background| may be used to decide if the single shot
compilation should run in the foreground or the background.
If vim is compiled with the |+clientserver| option and if
|g:latex_latexmk_callback| is enabled, then compilation errors are parsed
automatically. This is done by utilizing the tricks explained in
|vim-latex-latexmk-tricks|. Note however that this only works for continuous
compilation mode.
To check for and view errors in the quickfix window, use
|latex#latexmk#errors|. To check if background compilation is running, use
@ -643,7 +658,8 @@ Associated settings:
|g:latex_latexmk_enabled|
|g:latex_latexmk_callback|
|g:latex_latexmk_autojump|
|g:latex_latexmk_options|
|g:latex_latexmk_continuous|
|g:latex_latexmk_background|
|g:latex_latexmk_output|
Functions:
@ -1017,6 +1033,19 @@ CHANGELOG *vim-latex-changelog*
The following changelog only logs important changes, such as changes that
break backwards compatibility. See the git log for the detailed changelog.
2014-08-24: Made continuous mode optional~
Added option |g:latex_latexmk_continuous| to set whether or not the `latexmk`
process should run in continuous mode. Also added option
|g:latex_latexmk_background| to set whether single compilations should run in
the foreground or the background.
I also deprecated the old variable that sets options for `latexmk`, because
I find that it makes more sense to control `latexmk` through `latexmkrc`
files.
Deprecated option:
*g:latex_latexmk_options*
2014-06-13: Changed some option names~
Some |vim-latex| option names were changed in an attempt to make the names
more consistent. These options are listed here for reference: