(interactive "P")
(let ((window (selected-window)))
(cond (cancel
- (setq mdw-designated-window nil)
- (unless (mdw-emacs-version-p 24)
- (setq display-buffer-function nil))
- (message "Window designation cleared."))
+ (cond (mdw-designated-window
+ (setq mdw-designated-window nil)
+ (unless (mdw-emacs-version-p 24)
+ (setq display-buffer-function nil))
+ (message "Window designation cleared."))
+ (t
+ (message "No designated window active."))))
((window-dedicated-p window)
(error "Window is dedicated to its buffer."))
(t
(ad-set-arg 2 nil))
(setq even-window-sizes nil
- even-window-heights nil)
-
-(setq display-buffer-reuse-frames nil)
+ even-window-heights nil
+ display-buffer-reuse-frames nil)
+
+(defvar mdw-fallback-window-alist nil
+ "Alist mapping frames to fallback windows.")
+
+(defun mdw-cleanup-fallback-window-alist ()
+ "Remove entries for dead frames and windows from the fallback alist."
+ (let ((prev nil)
+ (cursor mdw-fallback-window-alist))
+ (while cursor
+ (let* ((assoc (car cursor))
+ (tail (cdr cursor)))
+ (cond ((and (frame-live-p (car assoc))
+ (window-live-p (cdr assoc)))
+ (setq prev cursor))
+ ((null prev)
+ (setq mdw-fallback-window-alist tail))
+ (t
+ (setcdr prev tail)))
+ (setq cursor tail)))))
+
+(defun mdw-set-fallback-window (cancel)
+ "Prefer the selected window for pop-up buffers in this frame.
+With a prefix argument, clear the fallback window."
+ (interactive "P")
+ (let* ((frame (selected-frame)) (window (selected-window))
+ (assoc (assq (selected-frame) mdw-fallback-window-alist)))
+ (cond (cancel
+ (cond (assoc
+ (setcdr assoc nil)
+ (message "Fallback window cleared."))
+ (t
+ (message "No fallback window active in this frame."))))
+ ((window-dedicated-p window)
+ (error "Window is dedicated to its buffer."))
+ (t
+ (if assoc (setcdr assoc window)
+ (push (cons frame window) mdw-fallback-window-alist))
+ (message "Fallback window set.")))
+ (mdw-cleanup-fallback-window-alist)))
(defun mdw-last-window-in-frame-p (window)
"Return whether WINDOW is the last in its frame."
This is all totally subject to arbitrary change in the future, but the
emphasis is on predictability rather than crazy DWIMmery."
(let* ((selected (selected-window)) chosen
+ (fallback (assq (selected-frame) mdw-fallback-window-alist))
(full-height-p (window-full-height-p selected))
(full-width-p (window-full-width-p selected)))
(cond
+ ((and fallback (window-live-p (cdr fallback)))
+ ;; There's a fallback window set for this frame. Use it.
+
+ (setq chosen (cdr fallback)
+ selected nil)
+ (display-buffer-record-window 'window chosen buffer))
+
((and full-height-p full-width-p)
;; We're basically the only window in the frame. If we want to get
;; anywhere, we'll have to split the window.
'(define-key w3m-mode-map [?\e ?\r] 'w3m-view-this-url-new-session))
(defcustom mdw-good-url-browsers
- '(browse-url-mozilla
+ '(browse-url-firefox
+ browse-url-mozilla
browse-url-generic
(w3m . mdw-w3m-browse-url)
browse-url-w3)
(mdw-define-face magit-hash
(((min-colors 64)) :foreground "grey40")
(((class color)) :foreground "blue"))
+(mdw-define-face magit-popup-argument
+ (((min-colors 64)) :foreground "SeaGreen1")
+ (((class color)) :foreground "green")
+ (t :weight bold))
(mdw-define-face magit-diff-hunk-heading
(((min-colors 64)) :foreground "grey70" :background "grey25")
(((class color)) :foreground "yellow"))
(((min-colors 64)) :background "NavyBlue")
(((class color)) :background "blue"))
+(mdw-define-face erc-my-nick-face
+ (t :foreground "yellow" :weight bold))
+(mdw-define-face erc-current-nick-face
+ (t :foreground "yellow" :weight bold))
(mdw-define-face erc-input-face
- (t :foreground "red"))
+ (t :foreground "yellow"))
+(mdw-define-face erc-action-face
+ ())
+(mdw-define-face erc-button
+ (t :foreground "cyan" :underline t :weight semi-bold))
(mdw-define-face woman-bold
(t :weight bold))
(modify-syntax-entry ?$ "\\" font-lock-syntax-table)
(modify-syntax-entry ?: "." font-lock-syntax-table)
(mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
+ (setq auto-fill-function #'do-auto-fill)
;; Now define fontification things.
(make-local-variable 'font-lock-keywords)