Emacsウィンドウを新しいフレームに分割する

Emacsウィンドウを新しいフレームに分割する

フレームから最初のフレーム2つのEmacsウィンドウを含む、勝利1バッファを表示buf-1 バッファワンそして勝利2表示中バッファ2、私は「破壊」できるようになりたいです勝利2独自のフレームに切り離すには、おそらくモードラインの修飾キーを押しながらクリックします。その後、

  • 両方勝利1そして勝利2それぞれの高さ/幅とバッファの関連付けは保持されます。最初のフレーム
  • 勝利1同じままだろう最初のフレーム、 そして勝利2新たな別のセカンドフレーム
  • 元の位置、色、フォントの設定は可能な限り保持されます

この動作が標準ライブラリのどこかで利用できるかどうか、そのための拡張機能があるかどうか、あるいは小さな elisp 関数が機能するかどうか疑問に思っていました。

答え1

はい、そのようなコマンドがあります: 。これをモード ラインでmouse-tear-off-windowにバインドします:C-mouse-1

(global-set-key [mode-line C-mouse-1] 'mouse-tear-off-window)

このコマンドは、Emacsの標準バージョン(emacs -Q)で使用できます。しかし、私は独自のバージョンを使用しています。これは、ウィンドウがフレーム内に単独で存在する場合はウィンドウを削除しません。代わりに、フレームとウィンドウを複製します。そのバージョンはライブラリにあります。マウス+.el. ドキュメント文字列:

,----
| mouse-tear-off-window is an interactive compiled Lisp function in
| `mouse+.el'.
| 
| It is bound to mode-line C-mouse-1.
| 
| (mouse-tear-off-window EVENT)
| 
| Create a new frame displaying buffer of window clicked on.
| If window is not the only one in frame, then delete it.
| Otherwise, this command effectively clones the frame and window.
`----

答え2

これはデフォルトのバインディングです:

C-x 5 C-o : display-buffer-other-frame

これは次のことを行います: バッファ BUFFER を別のフレームに表示します。

答え3

以下を使用できます:

M-x new-frame

私はこれを にバインドしましたF9。たとえば、次のようになります。

(global-set-key (kbd "<f9>") 'new-frame)

関連情報