Emacs パッケージにカスタム変数を入れたいのですが、その変数の有効な値は正の整数だけです。Mx カスタマイズがこの変数の正の整数のみを受け入れ、他の変数を拒否するようにする方法はありますか?
質問する
92 次
2 に答える
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))
于 2013-09-24T00:30:43.823 に答える
1
:type として limited-sexp を使用することもできます。
:type `(restricted-sexp
:match-alternatives
(,(lambda (v) (and (natnump v) (/= v 0))))))
ムエデ
于 2013-09-24T20:31:14.693 に答える