3

Emacs パッケージにカスタム変数を入れたいのですが、その変数の有効な値は正の整数だけです。Mx カスタマイズがこの変数の正の整数のみを受け入れ、他の変数を拒否するようにする方法はありますか?

4

2 に答える 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 に答える