1

Emacsで名前に「ディレクトリ」を含むすべての変数を見つけるにはどうすればよいですか?

4

2 に答える 2

4

M-x apropos-variable RET directory

于 2013-03-05T17:12:44.207 に答える
1

文字列を含むすべての変数を単に検索したい場合は、正しい答えを確認してください。ここでは、フォームでペアのリストを作成しました(<variable> . <value>)

使用機能説明

  • mapatomsobarrayは、 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 に答える