2011-07-22 28 views
0

我計劃按照以下步驟獲取問題的輸出。如何修改emacs lisp中所有活動緩衝區的內容

  1. 得到緩衝區的列表,並遍歷它
  2. 獲得使用步驟1中得到
  3. 變化的內容和覆蓋緩衝區的緩衝區名緩衝區的內容。

(緩衝區列表)fn輸出非常混亂。它顯示像 (#...)

我不明白什麼#<和*代表。

回答

4

buffer-list的輸出是緩衝對象的列表。

函數處理一個特定的緩衝通常會接受一個緩衝區對象作爲參數:

(buffer-name (car (buffer-list))) 

#<...>語法如下解釋:

M-:(info "(elisp) Printed Representation")RET

我無法想像爲什麼你要修改全部緩衝區(記住這包括微型緩衝區,可能包括一些內部緩衝區,其他各種類似* Help *,* Messages *,也可能是一些只讀緩衝區),但您可以使用以下內容:

(let ((buffers (buffer-list))) 
    (while (car buffers) 
    (set-buffer (car buffers)) 
    (let ((contents (save-restriction (widen) (buffer-string)))) 
     [do something with contents]) 
    (setq buffers (cdr buffers)))) 
相關問題