Create a new top-level window in GNU Emacs while keeping your current window configuration. For example, pop up an Eclipse-style compilation window.
(add-to-list 'load-path "/path/to/split-root") (require 'split-root) ;; to pop up compilation buffers at the bottom (OPTIONAL) (require 'compile) (defvar compilation-window nil "The window opened for displaying a compilation buffer.") (setq compilation-window-height 14) (defun my-display-buffer (buffer &optional not-this-window) (if (or (compilation-buffer-p buffer) (equal (buffer-name buffer) "*Shell Command Output*")) (unless (and compilation-window (window-live-p compilation-window)) (setq compilation-window (split-root-window compilation-window-height)) (set-window-buffer compilation-window buffer)) (let ((display-buffer-function nil)) (display-buffer buffer not-this-window)))) (setq display-buffer-function 'my-display-buffer) ;; on success, delete compilation window right away! (add-hook 'compilation-finish-functions '(lambda(buf res) (unless (or (eq last-command 'grep) (eq last-command 'grep-find)) (when (equal res "finished\n") (when compilation-window (delete-window compilation-window) (setq compilation-window nil)) (message "compilation successful")))))
Just use split-root-window
.
If you have any feedback, please email me.
Splitting the root window actually destroys all windows and recreates them. Therefore all windows will be considered dead after splitting.