4

私は現在emacsでプログラミングしています。すべての作業を保存し、インタプリタを実行して、現在開いているシェル バッファで作業を実行する関数を .emacs に定義しています。通常、1 つまたは複数のフレームで編集し、シェルを別のフレームで開きます。私が抱えている問題は、保存および実行機能を実行すると、すべてが保存されますが、現在編集中のフレームにシェル バッファが表示されることです。そのため、シェル バッファを示す 2 つのフレームがあり、編集していたソース コードが表示されません。プログラミングをしていると、コードの出力を今書いたコードとすぐに比較したくなることがよくあります。これ'

(defun execute-script ()
  "Switch to shell buffer and re-execute the last command."
  (interactive)
  (save-some-buffers)
  (switch-to-buffer "*shell*")
  (end-of-buffer)
  (comint-previous-input 0)
  (comint-send-input))

ご覧のとおり、私の関数は現時点ではかなり原始的で、シェルで最後に使用されたコマンドを再実行するだけです。

ido バッファー スイッチャー コードがこれを行うため、Emacs には別のフレームのバッファーに切り替える機能があることを知っています。目的の効果を得るために、switch-to-buffer への呼び出しを置き換える必要があるものについて、何かヒントはありますか?

よろしくジャイルズ。

4

2 に答える 2

3

交換

(switch-to-buffer "*shell*")

為に

(switch-to-buffer-other-window "*shell*")

これにより、以前のバッファが左側に、シェル バッファが右側にある 2 つのウィンドウ レイアウトが適用されます。
編集:複数のフレームレイアウトを使用していて、複数のウィンドウレイアウトを使用していない場合は、使用できます

(switch-to-buffer-other-frame "*shell*")
于 2012-05-22T09:26:02.790 に答える
1

また、これを使用して、後で、、、、、などpop-to-bufferの動作を正確にカスタマイズすることもできます。display-buffer-reuse-framedisplay-buffer-alistspecial-display-regexp

于 2012-05-23T01:22:56.183 に答える