Entonces buffer-stringobtiene el contenido del búfer actual. Pero no permite especificar otros buffers.
¿Cómo puedo evitar eso? ¿Necesito algo como save-window-excursionhacer que funcione?
process-send-stringy me quedé atascado.
Entonces buffer-stringobtiene el contenido del búfer actual. Pero no permite especificar otros buffers.
¿Cómo puedo evitar eso? ¿Necesito algo como save-window-excursionhacer que funcione?
process-send-stringy 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-bufferpara casos simples donde solo necesita hacer algo en otro búfer, y save-current-bufferpara 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-stringdevuelve 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-excursiontambién. Tenga en cuenta que save-excursionrestaura 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-excursioninterior save-current-buffero with-current-buffer.