emacs --daemon を実行しているときに、既に多数のバッファーが含まれている場合、emacsclient を起動して、最後に作業したときに一番上のバッファーだったものをすべて開く方法はありますか? emacsclient -t または emacsclient -c を使用すると、新しいフレームが作成されて一番上に配置されます。この動作を回避して、行っていたことを再開するにはどうすればよいですか?
4 に答える
少しエレガントではありませんが、答えを見つけたようです。私の .bash_profile に、
alias emacs='emacsclient -a "" -t -e \(kill-buffer\)'
そのため、存在しない場合はデーモンプロセスが開始され、emacsクライアントはそれに接続し、新しいバッファーを作成してすぐにそれを強制終了するため、以前に上部にあったバッファーはすべて残されます(私はemacsデスクトップ保存を使用します)が上部に表示されるようになりました.
次のようなものを試すことができます:
emacsclient -e '(raise-frame)'
また
emacsclient -e '(other-frame 0)'
これらの解決策のいずれも機能しない場合 (ウィンドウ マネージャーによって異なります)、次の解決策を試すこともできます (このSO 回答から)。
emacsclient -e "(select-frame-set-input-focus (selected-frame))"
あなたは emacs の概念と少し混同しているようです。フレームは他の人がウィンドウと呼ぶものであり、emacsウィンドウはバッファー(編集中のテキスト) が表示される場所です。
オプション-c
とオプション-t
は、新しいフレームを (グラフィカルに、または tty で) 作成することになっています。それが必要ない場合は、省略してください。
開いている (グラフィカルな) フレームがまだある場合は、最後にアクティブだったフレームがフォーカスされ (ウィンドウ マネージャーによって異なる場合があります)、最後のアクティブなウィンドウで指定されたファイルにアクセスしているバッファーが表示されます。グラフィカル フレームがない場合は、現在の tty で新しいフレームが開かれます。
emacsclient
ファイルまたはディレクトリと-t
、またはのいずれかなしで呼び出すことはできません-c
。したがって、ウィンドウマネージャーを使用して、目的のフレームを表示します。
しかし、リストの一番上にあるバッファで新しいフレームを開くことが本当に必要な場合は(list-buffers)
、新しいフレームが常にスクラッチ バッファを表示するため (設定されていない場合)、うまくいきません。手動で変更しC-x b
たり、変数をいじったりすることができますinitial-buffer-choice
。