Bir arabellek içeriğini alma


15

Böylece buffer-stringmevcut arabellek içeriği elde edilir. Ancak diğer arabelleklerin belirtilmesine izin vermez.

Bunu nasıl başarabilirim? save-window-excursionÇalışması için bir şeye ihtiyacım var mı?


Bana sormamanın sakıncası yoksa ne yapmaya çalışıyorsun?
Luke Shimkus

@King Eşzamansız bir süreç oluşturuyorum ve arabellek içeriğini standart girdi olarak göndermek istiyorum. Kullanabileceğimi düşündüm process-send-stringve takıldım.
Maciej Goszczycki

Yanıtlar:


25

Emacs'ta bir çok şey mevcut arabellekte çalışıyor. Mevcut arabelleği değiştirmeniz ve işiniz bittiğinde geri yüklemeniz gerekir. Kullanım with-current-buffersadece başka tampon içerisinde bir şeyler yapmak gerekiyor ve basit durumlar için save-current-buffersize değişik tamponlar arasında gezinmek için gereken daha karmaşık durumlar için.

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

Arabellek metin içeriğini özelliksiz istiyorsanız, arayın buffer-substring-no-properties.

buffer-stringtamponun sadece daraltılmış kısmını döndürür . Tüm içeriğe ihtiyacınız varsa, daralmayı kaydettikten sonra genişletin.

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

Noktayı da kaydetmeniz gerekiyorsa, arayın save-excursion. Not o save-excursionbaşka tampona anahtara ihtiyaç ve orada çağrı hareket eğer öyleyse geri yükler yalnızca geçerli tamponu içinde nokta, save-excursioniçini save-current-bufferya with-current-buffer.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.