2013-06-29 16 views
8

Ben özel dosyaya F için append (hayır tampon ait) bir dize S gerekiyor, ama umarım bu yana bu işlem ben F bir tampon olarak açılmış istemiyoruz mümkün olduğunca az zaman alır.Emacs lisp'de açmak istemediğim bir dosyaya nasıl bir dize ekleyebilirim?

AFAIK, write-region denilen emacs'taki yerleşik bir işlevi vardır, ancak bu tamponların birinin içine F içine yazılacak içeriği gerektirir (benim durumumda S böyle bir dizi olmalıdır garantisi yoktur iken) . Nasıl yapabilirim?

(defun my-append-string-to-file (s filename) 
    (with-temp-buffer 
    (insert s) 
    (write-region (point-min) (point-max) filename t))) 

EDIT:

cevap

13

(write-region <STRING> nil <FILENAME> 'append)

4

Neden böyle bir şey denemiyorsunuz @Stefan cevap olarak Anlaşılan, write-region bir dosyaya bir dize ekleyerek yeteneğine sahiptir, bu yüzden yerine onun cevabını kullanarak öneriyoruz .

+0

Bir çözüm gibi görünüyor. Ancak geçici tampon oluşturmak mümkün değil mi? –

+0

Bildiğim kadarıyla değil. Emacs, salt bir dosya arabirimi (açık, okunmuş vb.) Sağlamaz. Bununla birlikte, Emacs, tamponlarla çalışırken gerçekten etkilidir, bu yüzden bu gerçekten hızlı olmalıdır. – Lindydancer

+0

Nezaketiniz için teşekkürler! –

1

Tam olarak neye ulaşmak istediğinizden emin değilsiniz, ancak bunun gibi bir şey işe yarayabilir .../path/to/F yerine eklemek istediğiniz dosyanın yolunu yazabilirsiniz.

(defun interactive-append (something) 
    (interactive "sAppend S to F:") 
    (shell-command (format "echo '%s' >> /path/to/F" something))) 
+2

'shell-command', dış kabuğu çağırması gerektiğinden çok zaman alıyor, değil mi? –

İlgili konular