我希望在我的Emacs包中有一个自定义变量,该变量的唯一有效值是正整数。是否有办法使M-x自定义只接受此变量的正整数并拒绝其他变量?
答案 0 :(得分:4)
我想出了如何使用自定义变量的:validate
属性执行此操作:
(defun widget-positive-integer-validate (widget)
(let ((v (widget-value widget)))
(if (natnump v)
;; Valid
nil
;; Invalid
(widget-put widget :error "This field should contain a positive integer")
widget))))
(defcustom positive-integer-var 5000
"This variable must be a positive integer."
:type '(integer :value 5000
:validate widget-positive-integer-validate))
答案 1 :(得分:1)
您可能还希望将限制性别用作:type。
:type `(restricted-sexp
:match-alternatives
(,(lambda (v) (and (natnump v) (/= v 0))))))
muede