バッファのコンテンツを取得する


15

したがってbuffer-string、現在のバッファのコンテンツを取得します。ただし、他のバッファを指定することはできません。

どうすればそれを回避できますか?機能save-window-excursionさせるために何か必要ですか?


あなたが私に尋ねても構わないなら、あなたは何をしようとしているのですか?
ルーク14年

@King非同期プロセスを作成しており、バッファーのコンテンツを標準入力として送信したい。私は使用できるprocess-send-stringと思ったが、動けなくなった。
マチェイゴシュチッキ14年

回答:


25

Emacsの多くのことは、現在のバッファーで動作します。完了したら、現在のバッファーを変更して復元する必要があります。使用with-current-bufferあなただけの別のバッファに何かをする必要があり、簡単な例のためにsave-current-bufferあなたは、いくつかのバッファ間を移動する必要があり、より複雑なケースのために。

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

プロパティのないバッファのテキストコンテンツが必要な場合は、を呼び出しますbuffer-substring-no-properties

buffer-stringバッファの狭い部分のみを返します。コンテンツ全体が必要な場合は、絞り込みを保存してから広げてください。

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

ポイントも保存する必要がある場合はsave-excursion、同様に呼び出します。注save-excursionのみカレントバッファでのポイントを復元するので、あなたは別のバッファに切り替えて周りに移動する必要がある場合は、コールsave-excursionの内部save-current-bufferまたはwith-current-buffer

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.