feature/popup: tweak popup rules, add +popup-shrink-to-fit

+popup-shrink-to-fit wraps shrink-window-if-larger-than-buffer, and
won't do anything if the buffer is empty.
This commit is contained in:
Henrik Lissner 2018-01-07 18:22:56 -05:00
parent b11101d9cf
commit 5a420faa0f
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 15 additions and 3 deletions

View file

@ -82,9 +82,11 @@
;; `org' ;; `org'
(after! org (after! org
(set! :popup "^ ?\\*Org \\(todo\\|Links\\)" '((slot . -1) (size . shrink-window-if-larger-than-buffer))) (set! :popup "^\\*Org \\(?:Links\\|Export Dispatcher\\|Select\\)"
'((slot . -1) (size . +popup-shrink-to-fit))
'((select)))
(set! :popup "^\\*Org Agenda" '((slot . -1) (size . 20))) (set! :popup "^\\*Org Agenda" '((slot . -1) (size . 20)))
(set! :popup "^\\*Org Src" '((size . 0.3)) '((quit) (select . t))) (set! :popup "^\\*Org Src" '((size . 0.3)) '((quit) (select . t)))
;; Org has a scorched-earth window management system I'm not fond of. i.e. it ;; Org has a scorched-earth window management system I'm not fond of. i.e. it
;; kills all windows and monopolizes the frame. No thanks. We can do better ;; kills all windows and monopolizes the frame. No thanks. We can do better

View file

@ -144,6 +144,16 @@ with ARGS to get its return value."
"Returns a list of all popup windows." "Returns a list of all popup windows."
(cl-remove-if-not #'+popup-p (window-list))) (cl-remove-if-not #'+popup-p (window-list)))
;;;###autoload
(defun +popup-shrink-to-fit (&optional window)
"Shrinks WINDOW to fit the buffer contents, if the buffer isn't empty.
Uses `shrink-window-if-larger-than-buffer'."
(unless window
(setq window (selected-window)))
(unless (= (- (point-max) (point-min)) 0)
(shrink-window-if-larger-than-buffer window)))
;; ;;
;; Minor mode ;; Minor mode

View file

@ -137,7 +137,7 @@ ALIST supports one custom parameter: `size', which will resolve to
;; ;;
(eval-when-compile (eval-when-compile
(set! :popup "^ \\*" '((slot . -1))) (set! :popup "^ \\*" '((slot . -1) (size . +popup-shrink-to-fit)))
(set! :popup "^\\*" nil '((select . t))) (set! :popup "^\\*" nil '((select . t)))
(set! :popup "^\\*Completions" '((slot . -1)) '((transient . 0))) (set! :popup "^\\*Completions" '((slot . -1)) '((transient . 0)))
(set! :popup "^\\*Compilation" nil '((transient . 0) (quit . t))) (set! :popup "^\\*Compilation" nil '((transient . 0) (quit . t)))