Вы можете setq
что угодно для чего угодно (разумного или нет), но вы, безусловно, можете добавить проверку в интерфейс customize
.Например:
(define-widget 'integer-positive 'integer
"Value must be a positive integer."
:validate (lambda (widget)
(let ((value (widget-value widget)))
(when (or (not (integerp value)) (<= value 0))
(widget-put widget :error "Must be a positive integer")
widget))))
(defcustom foo 1 "Positive int"
:type 'integer-positive)
Вы можете добавить обработку ошибок к timer-faster
и timer-slower
- но в этом случае я думаю, что я бы просто поверил, что пользователь знает, что он делает, если он устанавливаетзначения в elisp.
Для полноты: в Emacs 26.1 введено add-variable-watcher
, которое можно использовать для обнаружения 'недействительного' setq
, но я, честно говоря, не думаю, что разумно использовать это для такой тривиальной цели.Пользовательский интерфейс customize
является правильным местом для утверждения таких вещей.