2011-09-05 12 views

Respuesta

4

Puede acceder al contenido de una opción usando &. Así que en este caso podrías comprobar si la opción está "vacía" de esta manera:

if &makeprg == "" 
    set makeprg=new_value 
endif 

--- --- EDITAR

Xavier hace que el buen punto de que el valor por defecto de makeprg no es una cadena vacía Puede utilizar set {option}& a establecer una opción a su valor predeterminado, por lo que la siguiente se puede utilizar para cambiar el valor sólo si el valor actual es el valor por defecto:

function! SetMakePrg(new_value) 
    let cur_value=&makeprg 
    " let new_val=a:new_value 
    set makeprg& 
    if &makeprg == cur_value 
     " cur_value is default: set to new value 
     exe "set makeprg=" . a:new_value 
    else 
     " cur_value is not default: change it back 
     exe "set makeprg=" . cur_value 
    endif 
endfunction 

Así llamando call SetMakePrg("my_make") modificará la opción sólo si no es actualmente el predeterminado.

+2

No estoy seguro de que el valor predeterminado de makeprg esté vacío, supongo que el valor predeterminado es 'make' (pero puede variar según el sistema operativo, etc.) .': verbose set makeprg? 'Returns makeprg = make sin nombre de archivo Supongo que esto significa que es el valor predeterminado. –

Cuestiones relacionadas