GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Symbol-Plists.html ・ emacs-doc.conao3.com

9.4.1 シンボルプロパティへのアクセス

シンボルのプロパティにアクセスするには、以下の関数を使用できます。

関数: get symbol property

この関数は、symbolのプロパティリストにあるpropertyという名前のプロパティの値を返します。そのようなプロパティが存在しない場合は、nilを返します。したがって、nilの値とプロパティが存在しないこととの間に区別はありません。

property という名前は eq を用いて既存のプロパティ名と比較されるため、任意のオブジェクトが有効なプロパティとなります。

例については put を参照してください。

関数: put symbol property value

この関数は、symbolのプロパティリストのプロパティ名propertyの下にvalueを格納し、それまでのプロパティ値を上書きします。put関数はvalueを返します。

(put 'fly 'verb 'transitive)
     ⇒'transitive
(put 'fly 'noun '(a buzzing little bug))
     ⇒ (a buzzing little bug)
(get 'fly 'verb)
     ⇒ transitive
(symbol-plist 'fly)
     ⇒ (verb transitive noun (a buzzing little bug))
関数: symbol-plist symbol

この関数は、symbol のプロパティリストを返します。

関数: setplist symbol plist

この関数は、symbolのプロパティリストをplistに設定します。通常、plistは正しく形式化されたプロパティリストである必要がありますが、これは強制されません。戻り値はplistです。

(setplist 'foo '(a 1 b (2 3) c nil))
     ⇒ (a 1 b (2 3) c nil)
(symbol-plist 'foo)
     ⇒ (a 1 b (2 3) c nil)

通常の用途では用いられない特殊なオブアレイ内のシンボルについては、プロパティリストセルを非標準的な方法で使用することが妥当な場合があります。実際、abbrev機構はまさにそのように動作しています(AbbrevsとAbbrev Expansionを参照)。

putをsetplistとplist-putを用いて、次のように定義できます。

(defun put (symbol prop value)
  (setplist symbol
            (plist-put (symbol-plist symbol) prop value)))
関数: function-get symbol property &optional autoload

この関数は get と同一ですが、symbol が関数エイリアスの名前である場合、実際の関数を命名しているシンボルのプロパティリストを参照します。関数の定義 を参照してください。オプション引数 autoload が nil 以外であり、かつ symbol がオートロードされている場合、オートロードによって symbol の property が設定される可能性があるため、この関数はそれをオートロードしようとします。autoload がシンボル macro である場合、symbol がオートロード済みのマクロである場合にのみ、オートロードを試みます。

関数: function-put function property value

この関数は、function の property を value に設定します。function はシンボルである必要があります。関数のプロパティを設定する際に put を呼び出すよりもこの関数が推奨されるのは、将来的に古いプロパティを新しいプロパティへ再マッピングする機能を実装できるようになるためです。