0
如何在Emacs中找到其名稱中包含「目錄」的所有變量?列出包含正則表達式的所有Emacs變量
如何在Emacs中找到其名稱中包含「目錄」的所有變量?列出包含正則表達式的所有Emacs變量
M-x apropos-variable RET directory
如果您只是想查找包含字符串的所有變量,請查看correct答案。在這裏,我以(<variable> . <value>)
的形式創建了對的列表。
mapatoms
是一個地圖式的函數,在obarray
操作,包含emacs使用所有符號變量。prin1-to-string
返回一個帶有對象的打印表示的字符串。string-match
在字符串中找到正則表達式,如果找不到則返回索引或零。push
在原地插入元素到列表的頭部。remove-if
相當於倒置filtermapcar
是一個普通的map功能boundp
返回噸如果變量的值不是void。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)))
但需注意的這個功能的prefix參數的影響。請參閱'C-h f apropos-variable'和'C-h f user-variable-p'(後者是一個變量需要匹配的謂詞,以便默認顯示)。 – phils 2013-03-05 21:45:15