注意:`with-current-buffer`と` goto-char`を使用して、ポイントを別のバッファーの末尾に移動する方法は?おそらくこれと同じ質問をしますが、それに与えられた答えは、ここでの私のケースにはすぐには当てはまりません。たとえば、他のバッファにテキストを挿入するなどの答えがあります。ここで私が尋ねる質問はかなり単純で、それに対応する答えも単純であるべきだと思います。
仮定
- Emacsフレームは2つのウィンドウに分割され、一方のウィンドウは呼び出されたバッファーを保持し
*whatever*
、もう一方のウィンドウは標準*scratch*
バッファーを保持します。 *whatever*
バッファは、数行のテキストが含まれています。*whatever*
バッファ内のカーソルは、そのバッファの先頭(つまり、その(point-min)
)にあります。*scratch*
バッファが現在のものです。
*scratch*
バッファーで次のいずれかを評価した場合、*whatever*
バッファー内のカーソルの位置は変更されません。
(with-current-buffer "*whatever*"
(goto-char (point-max)))
(with-current-buffer "*whatever*"
(end-of-buffer))
(save-excursion
(set-buffer "*whatever*")
(goto-char (point-max)))
(save-excursion
(set-buffer "*whatever*")
(end-of-buffer))
私は何でも、それを理解(goto-char (point-max))
たり(end-of-buffer)
しない*whatever*
のカーソルの位置が、その後破棄されます。
上記のスニペットを変更して、
*whatever*
バッファーのカーソルがそのバッファーの末尾に(永続的に)配置されるようにする方法を教えてください。Emacsのドキュメントを使用してこの質問に自分で回答するにはどうすればよいですか?思いつく限りのことを試しました。
ジュール・タマグナンの明快な答えを読んだ後、私はさらに明確に規定する必要があることに気づきました:
問題のバッファがウィンドウに表示されているかどうかに関係なく機能する解決策を探しています。
I緩衝表示する場合、すべての後、BをウィンドウにW、特定の位置にカーソルを移動Lは、いくつかの他の緩衝視聴C同じウィンドウにWを、そして最終的に指し示すWバッファへ戻るBを、Iは、でカーソルを見ることを期待します私が去ったのと同じ場所L IOW、バッファがウィンドウに関連付けられているかどうかに関係なく、バッファのポイントがどこにあるかを覚えておく方法が必要です。
ターゲットバッファーが現在2つ以上のウィンドウ(W1、W2、W3、...)に表示されている場合はどうですか?このケースには多くの合理的な可能性があります。提案された解決策は、たとえば、カーソルの位置を変更することができます
- W1、W2、W3、...の間で最近アクティブなウィンドウ
- 内のすべてのウィンドウW1、W2、W3、...; または
- などなど
(実際には非常にまれであることを期待しているので、私はこのコーナーケースについて強い意見はありません。)