Для такого рода вещей вы можете захотеть использовать функцию вместо переменной (напрямую).В частности, используйте функцию получения и установки.
Весь ваш код проекта может вызывать функцию получения, чтобы получить значение (которое может быть кэшировано в переменной).И весь ваш код может вызывать функцию установки для изменения значения (которое, опять же, может кэшироваться в переменной).
Эти функции могут быть видны глобально для вашего проекта.Переменная кеша будет доступна только функциям getter и setter.
Но что касается кода везде в вашем проекте, получает информацию , когда значение обновляется и делает то, что нужно сновое значение всякий раз, когда это происходит, см. @ Phil's comment по поводу использования переменной - применимы те же соображения.
Вы можете перехватить функцию setter (или посоветовать ее), чтобы она сделала что-то дополнительное (например, сообщает заинтересованному / подписанному коду) всякий раз, когда он обновляет значение.
Для переменной вы можете сделать что-то подобное, используя, как сказал @Phils в комментарии, команду add-variable-watcher
.
* 1017.* Для переменной пользовательской опции вы можете сделать нечто подобное, используя функции
:set
и
:get
в
defcustom
.(Но они вступают в силу только в случае внесения изменений с использованием соответствующих функций настройки или пользовательского интерфейса настройки.)