Rất nhiều thứ trong Emacs hoạt động trên bộ đệm hiện tại. Bạn cần thay đổi bộ đệm hiện tại và khôi phục nó khi bạn hoàn thành. Sử dụng with-current-buffer
cho các trường hợp đơn giản trong đó bạn chỉ cần làm một cái gì đó trong bộ đệm khác và save-current-buffer
cho các trường hợp phức tạp hơn mà bạn cần điều hướng giữa một số bộ đệm.
(defun buffer-string* (buffer)
(with-current-buffer buffer
(buffer-string)))
Nếu bạn muốn nội dung văn bản của bộ đệm không có thuộc tính, hãy gọi buffer-substring-no-properties
.
buffer-string
chỉ trả về phần bị thu hẹp của bộ đệm. Nếu bạn cần toàn bộ nội dung, hãy mở rộng nó sau khi lưu thu hẹp.
(defun buffer-whole-string (buffer)
(with-current-buffer buffer
(save-restriction
(widen)
(buffer-substring-no-properties (point-min) (point-max)))))
Nếu bạn cũng cần lưu điểm, hãy gọi save-excursion
là tốt. Lưu ý rằng chỉ save-excursion
khôi phục điểm trong bộ đệm hiện tại, vì vậy nếu bạn cần chuyển sang bộ đệm khác và di chuyển xung quanh đó, hãy gọi save-excursion
bên trong save-current-buffer
hoặc with-current-buffer
.