X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/183e55e2d8a6203d14cefbe6b55ee4bc66628525..4ebbf6a71a9ddff39cdb512c3aa4c0bbe59578b2:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 8b4f8f8..c7849f3 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -644,6 +644,34 @@ Evil key bindings are defined in `mdw-evil-keymap-keys'." ;; Some hacks to do with window placement. +(defvar mdw-designated-window nil + "The window chosen by `mdw-designate-window', or nil.") + +(defun mdw-designate-window (cancel) + "Use the selected window for the next pop-up buffer. +With a prefix argument, clear the designated window." + (interactive "P") + (cond (cancel + (setq mdw-designated-window nil) + (message "Window designation cleared.")) + (t + (setq mdw-designated-window (selected-window)) + (message "Window designated.")))) + +(defun mdw-display-buffer-in-designated-window (buffer alist) + "Display function to use the designated window." + (prog1 mdw-designated-window + (when mdw-designated-window + (select-window mdw-designated-window) + (switch-to-buffer buffer nil t)) + (setq mdw-designated-window nil))) + +(setq display-buffer-base-action + (let* ((action display-buffer-base-action) + (funcs (car action)) + (alist (cdr action))) + (cons (cons 'mdw-display-buffer-in-designated-window funcs) alist))) + (defun mdw-clobber-other-windows-showing-buffer (buffer-or-name) "Arrange that no windows on other frames are showing BUFFER-OR-NAME." (interactive "bBuffer: ")