2013-06-29 8 views
8

は、私は特別なファイルFアペンド(バッファなしに属する)は、文字列Sする必要がありますが、私は願っていますので、この操作は、私はFがバッファとして開かれたくない、できるだけ少し時間がかかります。emacs lispでは、開きたくないファイルにどのように文字列を追加できますか?

私の知る限りでは、write-regionと呼ばれるEmacsの組み込み関数があるが、これは、バッファの1の内側Fに書き込まれるコンテンツが必要です(私の場合Sは、このような文字列でなければならないという保証はありませんが) 。どうしたらいいですか?

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

EDIT

答えて

13

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

4

なぜあなたのような何かをしようとしていない@Stefanが答えとしてどうやら、write-regionはファイルに文字列を追加することですので、私が代わりに彼の答えを使用することをお勧めします。

+0

それは解決策と思われます。しかし、一時バッファをまったく作成しない可能性はありますか? –

+0

私は気づいていません。 Emacsは純粋なファイルインタフェース(オープン、読み取りなど)を提供しません。しかし、Emacsはバッファを扱うのに本当に効率的です。だから、これは本当に速いはずです。 – Lindydancer

+0

あなたの優しさに感謝します! –

1

あなたが達成したいことはわかりませんが、このようなことはトリッキーなことかもしれません。追加するファイルに/ path/to/Fの場所にパスを入れるだけです。

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

'shell-command'は外部シェルを呼び出す必要があるので、時間がかかります。 –

関連する問題