Emacsで名前に「ディレクトリ」を含むすべての変数を見つけるにはどうすればよいですか?
2 に答える
4
M-x apropos-variable RET directory
于 2013-03-05T17:12:44.207 に答える
1
文字列を含むすべての変数を単に検索したい場合は、正しい答えを確認してください。ここでは、フォームでペアのリストを作成しました(<variable> . <value>)
。
使用機能説明
mapatoms
obarray
は、 Emacs が使用するすべてのシンボルを含む 変数を操作する map スタイルの関数です。prin1-to-string
オブジェクトの印刷された表現を含む文字列を返します。string-match
文字列から正規表現を見つけ、見つからない場合は index または nil を返します。push
要素をリストの先頭にインプレースで挿入します。remove-if
逆フィルタと等価mapcar
は通常のマップ関数ですboundp
変数の値が void でない場合は t を返します。symbol-value
変数の値を返します。
最終コード
(let ((matching-variables
(let ((result '()))
;; result will contain only variables containing "directory"
(mapatoms (lambda (variable)
(let* ((variable-string (prin1-to-string variable))
(match (string-match "directory" variable-string)))
(if match
(push variable result)))))
result)))
;; returns list of pairs (variable-name . variable-value)
(remove-if #'null
(mapcar (lambda (variable)
(if (boundp variable)
(cons variable (symbol-value variable))
nil))
matching-variables)))
参考文献
于 2013-03-05T16:57:12.353 に答える