Как изменить содержимое всех живых буферов в emacs lisp - PullRequest
0 голосов
/ 22 июля 2011

Я планирую выполнить следующие шаги, чтобы получить вывод вопроса.

  1. получить список буферов и выполнить итерации по нему
  2. получить содержимое буферов, используяимя буфера, полученное на шаге 1.
  3. изменить содержимое и перезаписать буфер.

Вывод fn (списка буферов) очень запутанный.Это выглядит как (# ...)

Я не понимаю, что означает # <и *. </p>

1 Ответ

4 голосов
/ 22 июля 2011

Вывод 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))))
...