Często moje okna są automatycznie dzielone, dopóki arbitralnie nie stwierdzę, że w bieżącej ramce nie ma wystarczającej ilości nieruchomości dla nich wszystkich. Kiedy to nastąpi, ręcznie usuwam okno, tworzę ramkę i przełączam się na to usunięte okno. Jak napisać funkcję elisp, która to robi?
Próbowałem:
(defun pop-window-into-frame ()
(interactive)
(delete-window)
(make-frame-command)
(switch-to-prev-buffer))
Ale z jakiegoś powodu nie robi tego, co moim zdaniem powinno.
To polecenie, podobnie jak poniższe, które nic nie robi, jeśli wybrane okno znajduje się w ramce, jest dostępne w bibliotece
frame-cmds.el
.źródło
(select-frame-set-input-focus fr)
na końcu zadziałało.select-frame-set-input-focus
. Na przykład w MS Windows jest skupiony, więc nie jest to konieczne. Ponadto opis polecenia nie mówi, że ramka staje się skupiona. Jeśli jest to potrzebne, można utworzyć inne polecenie, które to wywołuje, a następnie ustawia ramkę.