Часто мои окна автоматически разделяются, пока я не решу, что в текущем кадре недостаточно места для них всех. Когда это происходит, я вручную удаляю окно, создаю фрейм и переключаюсь на это удаленное окно. Как я могу написать функцию elisp, которая делает это?
Я старался:
(defun pop-window-into-frame ()
(interactive)
(delete-window)
(make-frame-command)
(switch-to-prev-buffer))
Но по некоторым причинам это не делает то, что я думаю, что должно.
Эта команда, а также следующая, которая ничего не делает, если выбранное окно находится в кадре в одиночку, доступны в библиотеке
frame-cmds.el
.источник
(select-frame-set-input-focus fr)
в конце сработало.select-frame-set-input-focus
. В MS Windows, например, он получает фокус, так что в этом нет необходимости. Кроме того, описание команды не говорит о том, что кадр становится сфокусированным. Если это необходимо, то можно создать другую команду, которая вызывает это, а затем фокусирует кадр.