Dapatkan konten buffer


15

Jadi buffer-stringdapatkan konten dari buffer saat ini. Tapi itu tidak memungkinkan menentukan buffer lain.

Bagaimana saya bisa mengatasi itu? Apakah saya perlu sesuatu save-window-excursionuntuk membuatnya berfungsi?


Jika Anda tidak keberatan saya bertanya, apa yang Anda coba lakukan?
Luke Shimkus

@ Raja Saya membuat proses asinkron dan saya ingin mengirim konten buffer sebagai input standar. Saya pikir saya bisa menggunakan process-send-stringdan saya terjebak.
Maciej Goszczycki

Jawaban:


25

Banyak hal di Emacs yang beroperasi pada buffer saat ini. Anda perlu mengubah buffer saat ini dan mengembalikannya setelah selesai. Gunakan with-current-bufferuntuk kasus-kasus sederhana di mana Anda hanya perlu melakukan sesuatu di buffer lain, dan save-current-bufferuntuk kasus-kasus yang lebih kompleks di mana Anda perlu menavigasi antara beberapa buffer.

(defun buffer-string* (buffer)
  (with-current-buffer buffer
    (buffer-string)))

Jika Anda ingin konten teks dari buffer tanpa properti, panggil buffer-substring-no-properties.

buffer-stringmengembalikan hanya bagian penyempitan penyempitan . Jika Anda membutuhkan seluruh konten, perluas itu setelah menyimpan penyempitan.

(defun buffer-whole-string (buffer)
  (with-current-buffer buffer
    (save-restriction
      (widen)
      (buffer-substring-no-properties (point-min) (point-max)))))

Jika Anda juga perlu menyimpan poinnya, hubungi save-excursionjuga. Perhatikan bahwa save-excursionpulihkan titik hanya di buffer saat ini, jadi jika Anda perlu beralih ke buffer lain dan bergerak di sana, panggil ke save-excursiondalam save-current-bufferatau with-current-buffer.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.