В vim есть ли способ: установить опцию, только если она еще не установлена? - PullRequest
5 голосов
/ 05 сентября 2011

В частности, я хотел бы установить параметр makeprg, только если он еще не был изменен. Есть ли способ сделать это?

1 Ответ

4 голосов
/ 05 сентября 2011

Вы можете получить доступ к содержимому опции, используя &. Так что в этом случае вы можете проверить, является ли опция «пустой», например:

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") изменит эту опцию, только если она не является значением по умолчанию.

...