Вы можете получить доступ к содержимому опции, используя &
. Так что в этом случае вы можете проверить, является ли опция «пустой», например:
if &makeprg == ""
set makeprg=new_value
endif
--- РЕДАКТИРОВАТЬ ---
Ксавье отмечает, что значение по умолчанию makeprg
не является пустой строкой. Вы можете использовать set {option}&
, чтобы установить для параметра значение по умолчанию, поэтому для изменения значения можно использовать только следующее, если текущее значение является значением по умолчанию:
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
Таким образом, вызов call SetMakePrg("my_make")
изменит эту опцию, только если она не является значением по умолчанию.