Разделение окна Emacs на новый фрейм

Разделение окна Emacs на новый фрейм

Из кадрапервый кадрсодержащий два окна Emacs,победа-одинотображение буфераbuf-одинипобеда-дваотображениеbuf-два, я хотел бы иметь возможность «сломать»победа-двав свою собственную рамку, возможно, с помощью модификатора-клик на модельной линии. После этого,

  • обапобеда-одинипобеда-двасохранят свои индивидуальные ассоциации высоты/ширины и буфера, которые у них были, когда они былипервый кадр
  • победа-одиностанется в том же самомпервый кадр, ипобеда-дватеперь будет в новом, отдельномвторой кадр
  • По возможности будут сохранены исходные настройки положения, цвета и шрифта.

Мне было интересно, доступно ли такое поведение где-то в стандартной библиотеке, есть ли для него расширение или, может быть, подойдет небольшая функция elisp?

решение1

Да, есть такая команда: mouse-tear-off-window. Я привязываю ее к C-mouse-1строке режима:

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

Команда доступна в vanilla Emacs ( emacs -Q). Но я использую свою собственную версию, которая не удаляет окно, если оно одно в своей рамке. Вместо этого она клонирует рамку и окно. Эта версия находится в библиотекемышь+.эл. Строка документа:

,----
| 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)

Связанный контент