2013-03-05 75 views

回答

4

M-x apropos-variable RET directory

+1

但需注意的這個功能的prefix參數的影響。請參閱'C-h f apropos-variable'和'C-h f user-variable-p'(後者是一個變量需要匹配的謂詞,以便默認顯示)。 – phils 2013-03-05 21:45:15

1

如果您只是想查找包含字符串的所有變量,請查看correct答案。在這裏,我以(<variable> . <value>)的形式創建了對的列表。

的功能說明使用

  • mapatoms是一個地圖式的函數,在obarray操作,包含emacs使用所有符號變量。
  • prin1-to-string返回一個帶有對象的打印表示的字符串。
  • string-match在字符串中找到正則表達式,如果找不到則返回索引或零。
  • push在原地插入元素到列表的頭部。
  • remove-if相當於倒置filter
  • mapcar是一個普通的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))) 

參考

相關問題