20

Elisp では、特別なカスタム モード用に次のような変数を導入しました。

(defvar leo-special-var "")
(make-variable-buffer-local 'leo-special-var)

ここで、この変数をファイル I に次の行 (編集するファイル内)で設定します。

# Local Variables:
# leo-special-var: "-d http://www.google.com.au"
# End:

そして、私はこの変数を「そのすべての値に対して安全でsafe-local-variable-valuesある」と考えたいと思っています。それが役に立たない理由です。代わりに( lispコードで)試しました:

# setting the symbol property of the variable
(put 'leo-special-var 'safe-local-variable 'booleanp)

しかし、成功しませんでした。シンボル プロパティを設定するときに何か問題がありますか? それとも別の方法がありますか?

4

3 に答える 3

13

すべての値に対して安全であることを本当に述べたい場合は、これを使用します。

(put 'leo-special-var 'safe-local-variable (lambda (_) t))

ここで安全性をテストする関数は、nilどの値に対しても non- を返します。

(しかし、変数がどの値に対しても安全であると述べたくないのではないかと思います。)

于 2013-11-06T17:02:04.910 に答える
5

それはマニュアルにあります:(elisp) File Local Variables

   You can specify safe values for a variable with a
`safe-local-variable' property.  The property has to be a function of
one argument; any value is safe if the function returns non-`nil' given
that value.  Many commonly-encountered file variables have
`safe-local-variable' properties; these include `fill-column',
`fill-prefix', and `indent-tabs-mode'.  For boolean-valued variables
that are safe, use `booleanp' as the property value.  Lambda
expressions should be quoted so that `describe-variable' can display
the predicate.

   When defining a user option using `defcustom', you can set its
`safe-local-variable' property by adding the arguments `:safe FUNCTION'
to `defcustom' (*note Variable Definitions::).
于 2013-11-06T08:04:55.657 に答える