Entonces buffer-string
obtiene el contenido del búfer actual. Pero no permite especificar otros buffers.
¿Cómo puedo evitar eso? ¿Necesito algo como save-window-excursion
hacer que funcione?
process-send-string
y me quedé atascado.
Entonces buffer-string
obtiene el contenido del búfer actual. Pero no permite especificar otros buffers.
¿Cómo puedo evitar eso? ¿Necesito algo como save-window-excursion
hacer que funcione?
process-send-string
y me quedé atascado.
Respuestas:
Muchas cosas en Emacs operan en el búfer actual. Debe cambiar el búfer actual y restaurarlo cuando haya terminado. Úselo with-current-buffer
para casos simples donde solo necesita hacer algo en otro búfer, y save-current-buffer
para casos más complejos donde necesita navegar entre varios búferes.
(defun buffer-string* (buffer)
(with-current-buffer buffer
(buffer-string)))
Si desea el contenido de texto del búfer sin propiedades, llame buffer-substring-no-properties
.
buffer-string
devuelve solo la parte estrecha del búfer. Si necesita todo el contenido, amplíelo después de guardar el estrechamiento.
(defun buffer-whole-string (buffer)
(with-current-buffer buffer
(save-restriction
(widen)
(buffer-substring-no-properties (point-min) (point-max)))))
Si también necesita guardar el punto, llame save-excursion
también. Tenga en cuenta que save-excursion
restaura el punto solo en el búfer actual, por lo que si necesita cambiar a otro búfer y moverse por allí, llame al save-excursion
interior save-current-buffer
o with-current-buffer
.