
Из кадрапервый кадрсодержащий два окна 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)