3
我想在我的Emacs包中有一個自定義變量,並且該變量的唯一有效值是正整數。是否有辦法讓M-x自定義只接受這個變量的正整數並拒絕其他變量?如何定義僅接受正數的Elisp小部件類型?
我想在我的Emacs包中有一個自定義變量,並且該變量的唯一有效值是正整數。是否有辦法讓M-x自定義只接受這個變量的正整數並拒絕其他變量?如何定義僅接受正數的Elisp小部件類型?
我想出如何與自定義變量的: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))
您可能還需要使用受限SEXP爲:類型。
:type `(restricted-sexp
:match-alternatives
(,(lambda (v) (and (natnump v) (/= v 0))))))
muede
請問如果用戶將負整數或字符串或其他任何這給出錯誤提示信息? –