如何修改emacs lisp中所有活动缓冲区的内容

时间:2011-07-22 11:45:31

标签: emacs elisp

我正在计划以下步骤来获得问题的输出。

  1. 获取缓冲区列表并迭代它
  2. 使用步骤1中获取的缓冲区名称获取缓冲区的内容。
  3. 更改内容并覆盖缓冲区。
  4. (缓冲列表)fn输出非常混乱。它表现得像 (#...)

    我不明白#<和*代表。

1 个答案:

答案 0 :(得分: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))))