From: Mark Wooding Date: Thu, 29 Jan 2015 14:06:04 +0000 (+0000) Subject: el/dot-emacs.el: Window placement hacking. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/commitdiff_plain/5dccbe61cac7ca2df7cf5fac9b8b2367f2784964?ds=inline el/dot-emacs.el: Window placement hacking. * `mdw-clobber-other-windows-showing-buffer': Proper command for making sure no other frames are showing a particular buffer. * Some advice for buffer displaying functions so that they don't do ridiculous things like trying to show me buffers in frames on other displays which I can't see. --- diff --git a/el/dot-emacs.el b/el/dot-emacs.el index eb30141..c042a8c 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -321,6 +321,43 @@ (setq org-export-docbook-xslt-proc-command "xsltproc --output %o %s %i" org-export-docbook-xslt-stylesheet "/usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl") +;; Some hacks to do with window placement. + +(defun mdw-clobber-other-windows-showing-buffer (buffer-or-name) + "Arrange that no windows on other frames are showing BUFFER-OR-NAME." + (interactive "bBuffer: ") + (let ((home-frame (selected-frame)) + (buffer (get-buffer buffer-or-name)) + (safe-buffer (get-buffer "*scratch*"))) + (mapc (lambda (frame) + (or (eq frame home-frame) + (mapc (lambda (window) + (and (eq (window-buffer window) buffer) + (set-window-buffer window safe-buffer))) + (window-list frame)))) + (frame-list)))) + +(defvar mdw-inhibit-walk-windows nil + "If non-nil, then `walk-windows' does nothing. +This is used by advice on `switch-to-buffer-other-frame' to inhibit finding +buffers in random frames.") + +(defadvice walk-windows (around mdw-inhibit activate) + "If `mdw-inhibit-walk-windows' is non-nil, then do nothing." + (and (not mdw-inhibit-walk-windows) + ad-do-it)) + +(defadvice switch-to-buffer-other-frame + (around mdw-always-new-frame activate) + "Always make a new frame. +Even if an existing window in some random frame looks tempting." + (let ((mdw-inhibit-walk-windows t)) ad-do-it)) + +(defadvice display-buffer (before mdw-inhibit-other-frames activate) + "Don't try to do anything fancy with other frames. +Pretend they don't exist. They might be on other display devices." + (ad-set-arg 2 nil)) + ;;;-------------------------------------------------------------------------- ;;; Mail and news hacking.