diff options
| author | Gerd Moellmann | 1999-09-13 20:49:05 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 1999-09-13 20:49:05 +0000 |
| commit | b190d317b372185501918099212dcf02ad527efd (patch) | |
| tree | 982a575f5db328a2083fc6417dcd9d5f769ebe05 | |
| parent | 74d481acba80075a27582f6a2509eb83700fef68 (diff) | |
| download | emacs-b190d317b372185501918099212dcf02ad527efd.tar.gz emacs-b190d317b372185501918099212dcf02ad527efd.zip | |
Remove code, keep the interface.
| -rw-r--r-- | lisp/rsz-mini.el | 214 |
1 files changed, 12 insertions, 202 deletions
diff --git a/lisp/rsz-mini.el b/lisp/rsz-mini.el index c29337f2f58..e6285723d09 100644 --- a/lisp/rsz-mini.el +++ b/lisp/rsz-mini.el | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | ;; Maintainer: Noah Friedman <friedman@splode.com> | 7 | ;; Maintainer: Noah Friedman <friedman@splode.com> |
| 8 | ;; Keywords: minibuffer, window, frame, display | 8 | ;; Keywords: minibuffer, window, frame, display |
| 9 | 9 | ||
| 10 | ;; $Id: rsz-mini.el,v 1.25 1999/03/30 21:36:35 kwzh Exp fx $ | 10 | ;; $Id: rsz-mini.el,v 1.2 1999/09/13 13:00:24 gerd Exp $ |
| 11 | 11 | ||
| 12 | ;; This file is part of GNU Emacs. | 12 | ;; This file is part of GNU Emacs. |
| 13 | 13 | ||
| @@ -28,246 +28,56 @@ | |||
| 28 | 28 | ||
| 29 | ;;; Commentary: | 29 | ;;; Commentary: |
| 30 | 30 | ||
| 31 | ;; This package allows the entire contents (or as much as possible) of the | 31 | ;; This package is obsolete. Emacs now resizes mini-windows |
| 32 | ;; minibuffer to be visible at once when typing. As the end of a line is | 32 | ;; automatically. |
| 33 | ;; reached, the minibuffer will resize itself. When the user is done | ||
| 34 | ;; typing, the minibuffer will return to its original size. | ||
| 35 | |||
| 36 | ;; In window systems where it is possible to have a frame in which the | ||
| 37 | ;; minibuffer is the only window, the frame itself can be resized. In | ||
| 38 | ;; Emacs 19.22 and earlier, the frame may not be properly returned to | ||
| 39 | ;; its original size after it ceases to be active because | ||
| 40 | ;; `minibuffer-exit-hook' didn't exist until version 19.23. | ||
| 41 | ;; | ||
| 42 | ;; Prior to Emacs 19.26, minibuffer-exit-hook wasn't called after exiting | ||
| 43 | ;; from the minibuffer by hitting the quit char. That meant that the | ||
| 44 | ;; frame size restoration function wasn't being called in that case. In | ||
| 45 | ;; 19.26 or later, minibuffer-exit-hook should be called anyway. | ||
| 46 | |||
| 47 | ;; Note that the minibuffer and echo area are not the same! They simply | ||
| 48 | ;; happen to occupy roughly the same place on the frame. Messages put in | ||
| 49 | ;; the echo area will not cause any resizing by this package. | ||
| 50 | |||
| 51 | ;; This package is considered a minor mode but it doesn't put anything in | ||
| 52 | ;; minor-mode-alist because this mode is specific to the minibuffer, which | ||
| 53 | ;; has no mode line. | ||
| 54 | |||
| 55 | ;; To enable or disable this mode, use M-x resize-minibuffer-mode. | ||
| 56 | 33 | ||
| 57 | ;;; Code: | 34 | ;;; Code: |
| 58 | 35 | ||
| 59 | 36 | ||
| 60 | (defgroup resize-minibuffer nil | 37 | (defgroup resize-minibuffer nil |
| 61 | "Dynamically resize minibuffer to display entire contents" | 38 | "This customization group is obsolete." |
| 62 | :group 'frames) | 39 | :group 'frames) |
| 63 | 40 | ||
| 64 | ;;;###autoload | 41 | ;;;###autoload |
| 65 | (defcustom resize-minibuffer-mode nil | 42 | (defcustom resize-minibuffer-mode nil |
| 66 | "Toggle resizing the minibuffer so its entire contents are visible. | 43 | "*This variable is obsolete." |
| 67 | Setting this variable directly does not take effect; | ||
| 68 | use either \\[customize] or the function `resize-minibuffer-mode'." | ||
| 69 | :set (lambda (symbol value) | ||
| 70 | (resize-minibuffer-mode (if value 1 -1))) | ||
| 71 | :initialize 'custom-initialize-default | ||
| 72 | :type 'boolean | 44 | :type 'boolean |
| 73 | :group 'resize-minibuffer | 45 | :group 'resize-minibuffer |
| 74 | :require 'rsz-mini) | 46 | :require 'rsz-mini) |
| 75 | 47 | ||
| 76 | ;;;###autoload | 48 | ;;;###autoload |
| 77 | (defcustom resize-minibuffer-window-max-height nil | 49 | (defcustom resize-minibuffer-window-max-height nil |
| 78 | "*Maximum size the minibuffer window is allowed to become. | 50 | "*This variable is obsolete." |
| 79 | If less than 1 or not a number, the limit is the height of the frame in | ||
| 80 | which the active minibuffer window resides." | ||
| 81 | :type '(choice (const nil) integer) | 51 | :type '(choice (const nil) integer) |
| 82 | :group 'resize-minibuffer) | 52 | :group 'resize-minibuffer) |
| 83 | 53 | ||
| 84 | ;;;###autoload | 54 | ;;;###autoload |
| 85 | (defcustom resize-minibuffer-window-exactly t | 55 | (defcustom resize-minibuffer-window-exactly t |
| 86 | "*Allow making minibuffer exactly the size to display all its contents. | 56 | "*This variable is obsolete." |
| 87 | If `nil', the minibuffer window can temporarily increase in size but | ||
| 88 | never get smaller while it is active. Any other value allows exact | ||
| 89 | resizing." | ||
| 90 | :type 'boolean | 57 | :type 'boolean |
| 91 | :group 'resize-minibuffer) | 58 | :group 'resize-minibuffer) |
| 92 | 59 | ||
| 93 | ;;;###autoload | 60 | ;;;###autoload |
| 94 | (defcustom resize-minibuffer-frame nil | 61 | (defcustom resize-minibuffer-frame nil |
| 95 | "*Allow changing the frame height of minibuffer frames. | 62 | "*This variable is obsolete." |
| 96 | If non-`nil' and the active minibuffer is the sole window in its frame, | ||
| 97 | allow changing the frame height." | ||
| 98 | :type 'boolean | 63 | :type 'boolean |
| 99 | :group 'resize-minibuffer) | 64 | :group 'resize-minibuffer) |
| 100 | 65 | ||
| 101 | ;;;###autoload | 66 | ;;;###autoload |
| 102 | (defcustom resize-minibuffer-frame-max-height nil | 67 | (defcustom resize-minibuffer-frame-max-height nil |
| 103 | "*Maximum size the minibuffer frame is allowed to become. | 68 | "*This variable is obsolete.") |
| 104 | If less than 1 or not a number, there is no limit.") | ||
| 105 | 69 | ||
| 106 | ;;;###autoload | 70 | ;;;###autoload |
| 107 | (defcustom resize-minibuffer-frame-exactly t | 71 | (defcustom resize-minibuffer-frame-exactly t |
| 108 | "*Allow making minibuffer frame exactly the size to display all its contents. | 72 | "*This variable is obsolete." |
| 109 | If `nil', the minibuffer frame can temporarily increase in size but | ||
| 110 | never get smaller while it is active. Any other value allows exact | ||
| 111 | resizing." | ||
| 112 | :type 'boolean | 73 | :type 'boolean |
| 113 | :group 'resize-minibuffer) | 74 | :group 'resize-minibuffer) |
| 114 | 75 | ||
| 115 | ;; Variable used to store the height of the minibuffer frame | ||
| 116 | ;; on entry, so it can be restored on exit. It is made local before it is | ||
| 117 | ;; modified. Do not use it yourself. | ||
| 118 | (defvar resize-minibuffer-frame-original-height nil) | ||
| 119 | |||
| 120 | 76 | ||
| 121 | ;;;###autoload | 77 | ;;;###autoload |
| 122 | (defun resize-minibuffer-mode (&optional prefix) | 78 | (defun resize-minibuffer-mode (&optional prefix) |
| 123 | "Toggle resize-minibuffer mode. | 79 | "This function is obsolete." |
| 124 | With argument, enable resize-minibuffer mode if and only if argument | 80 | (interactive "P")) |
| 125 | is positive. | ||
| 126 | |||
| 127 | When this minor mode is enabled, the minibuffer is dynamically resized to | ||
| 128 | contain the entire region of text put in it as you type. | ||
| 129 | |||
| 130 | The variable `resize-minibuffer-mode' is set to t or nil depending on | ||
| 131 | whether this mode is active or not. | ||
| 132 | |||
| 133 | The maximum height to which the minibuffer can grow is controlled by the | ||
| 134 | variable `resize-minibuffer-window-max-height'. | ||
| 135 | |||
| 136 | The variable `resize-minibuffer-window-exactly' determines whether the | ||
| 137 | minibuffer window should ever be shrunk to make it no larger than needed to | ||
| 138 | display its contents. | ||
| 139 | |||
| 140 | When using a window system, it is possible for a minibuffer to be the sole | ||
| 141 | window in a frame. Since that window is already its maximum size, the only | ||
| 142 | way to make more text visible at once is to increase the size of the frame. | ||
| 143 | The variable `resize-minibuffer-frame' controls whether this should be | ||
| 144 | done. The variables `resize-minibuffer-frame-max-height' and | ||
| 145 | `resize-minibuffer-frame-exactly' are analogous to their window | ||
| 146 | counterparts." | ||
| 147 | (interactive "P") | ||
| 148 | (setq resize-minibuffer-mode | ||
| 149 | (if prefix | ||
| 150 | (> (prefix-numeric-value prefix) 0) | ||
| 151 | (not resize-minibuffer-mode))) | ||
| 152 | (add-hook 'minibuffer-setup-hook 'resize-minibuffer-setup)) | ||
| 153 | |||
| 154 | (defun resize-minibuffer-setup () | ||
| 155 | (cond | ||
| 156 | (resize-minibuffer-mode | ||
| 157 | (cond | ||
| 158 | ((and window-system | ||
| 159 | (eq 'only (cdr (assq 'minibuffer (frame-parameters))))) | ||
| 160 | ;; Checking for resize-minibuffer-frame is done outside the cond | ||
| 161 | ;; predicate because that should always be t if this is a minibuffer | ||
| 162 | ;; frame; it just shouldn't do anything if this flag is nil. | ||
| 163 | (and resize-minibuffer-frame | ||
| 164 | (progn | ||
| 165 | ;; Can't trust the height stored in minibuffer-frame-alist | ||
| 166 | ;; since the frame can be resized by the window manager and | ||
| 167 | ;; that variable isn't updated. | ||
| 168 | (make-local-variable 'resize-minibuffer-frame-original-height) | ||
| 169 | (setq resize-minibuffer-frame-original-height (frame-height)) | ||
| 170 | |||
| 171 | (make-local-hook 'post-command-hook) | ||
| 172 | (add-hook 'post-command-hook 'resize-minibuffer-frame 'append t) | ||
| 173 | |||
| 174 | (make-local-hook 'minibuffer-exit-hook) | ||
| 175 | (add-hook 'minibuffer-exit-hook 'resize-minibuffer-frame-restore | ||
| 176 | nil t) | ||
| 177 | |||
| 178 | (resize-minibuffer-frame)))) | ||
| 179 | (t | ||
| 180 | (make-local-variable 'post-command-hook) | ||
| 181 | ;; Copy this because add-hook modifies the list structure. | ||
| 182 | (setq post-command-hook (copy-sequence post-command-hook)) | ||
| 183 | (add-hook 'post-command-hook 'resize-minibuffer-window 'append) | ||
| 184 | |||
| 185 | (make-local-variable 'minibuffer-exit-hook) | ||
| 186 | (add-hook 'minibuffer-exit-hook 'resize-minibuffer-window-restore) | ||
| 187 | |||
| 188 | (resize-minibuffer-window)))))) | ||
| 189 | |||
| 190 | (defun resize-minibuffer-count-window-lines (&optional start end) | ||
| 191 | "Return number of window lines occupied by text in region. | ||
| 192 | The number of window lines may be greater than the number of actual lines | ||
| 193 | in the buffer if any wrap on the display due to their length. | ||
| 194 | |||
| 195 | Optional arguments START and END default to point-min and point-max, | ||
| 196 | respectively." | ||
| 197 | (or start (setq start (point-min))) | ||
| 198 | (or end (setq end (point-max))) | ||
| 199 | (if (= start end) | ||
| 200 | 0 | ||
| 201 | (save-excursion | ||
| 202 | (save-restriction | ||
| 203 | (widen) | ||
| 204 | (narrow-to-region start end) | ||
| 205 | (goto-char start) | ||
| 206 | (vertical-motion (buffer-size)))))) | ||
| 207 | |||
| 208 | |||
| 209 | ;; Resize the minibuffer window to contain the minibuffer's contents. | ||
| 210 | (defun resize-minibuffer-window () | ||
| 211 | (and (eq (selected-window) (minibuffer-window)) | ||
| 212 | (let ((height (window-height)) | ||
| 213 | (lines (1+ (resize-minibuffer-count-window-lines)))) | ||
| 214 | (and (numberp resize-minibuffer-window-max-height) | ||
| 215 | (> resize-minibuffer-window-max-height 0) | ||
| 216 | (setq lines (min lines resize-minibuffer-window-max-height))) | ||
| 217 | (or (if resize-minibuffer-window-exactly | ||
| 218 | (= lines height) | ||
| 219 | (<= lines height)) | ||
| 220 | (enlarge-window (- lines height)))))) | ||
| 221 | |||
| 222 | ;; This resizes the minibuffer back to one line as soon as it is exited | ||
| 223 | ;; (e.g. when the user hits RET). This way, subsequent messages put in the | ||
| 224 | ;; echo area aren't cluttered with leftover minibuffer text. | ||
| 225 | ;; It should be called by minibuffer-exit-hook. | ||
| 226 | ;; | ||
| 227 | ;; Note that because it calls sit-for to force a screen update, strange | ||
| 228 | ;; things may happen in the minibuffer, such as unexpanded partial | ||
| 229 | ;; completions by complete.el showing their completion. | ||
| 230 | ;; If this bothers you, just redefine this function to do nothing, in, say, | ||
| 231 | ;; your after-load-alist. Perhaps there should be an option variable, | ||
| 232 | ;; but I don't know if there's really any demand for it. | ||
| 233 | ;; (Clobbering this definition is harmless because eventually emacs restores | ||
| 234 | ;; its idea of the minibuffer window size when the minibuffer isn't in use | ||
| 235 | ;; anyway; this is just a kludge because of the timing for that update). | ||
| 236 | (defun resize-minibuffer-window-restore () | ||
| 237 | (cond | ||
| 238 | ((not (eq (minibuffer-window) (selected-window)))) | ||
| 239 | ((> (window-height) 1) | ||
| 240 | (enlarge-window (- 1 (window-height))) | ||
| 241 | (sit-for 0)))) | ||
| 242 | |||
| 243 | |||
| 244 | ;; Resize the minibuffer frame to contain the minibuffer's contents. | ||
| 245 | ;; The minibuffer frame must be the current frame. | ||
| 246 | (defun resize-minibuffer-frame () | ||
| 247 | (let ((height (frame-height)) | ||
| 248 | (lines (1+ (resize-minibuffer-count-window-lines)))) | ||
| 249 | (and (numberp resize-minibuffer-frame-max-height) | ||
| 250 | (> resize-minibuffer-frame-max-height 0) | ||
| 251 | (setq lines (min lines resize-minibuffer-frame-max-height))) | ||
| 252 | (cond | ||
| 253 | ((> lines height) | ||
| 254 | (set-frame-size (window-frame (minibuffer-window)) (frame-width) lines)) | ||
| 255 | ((and resize-minibuffer-frame-exactly | ||
| 256 | (> height resize-minibuffer-frame-original-height) | ||
| 257 | (< lines height)) | ||
| 258 | (set-frame-size (window-frame (minibuffer-window)) | ||
| 259 | (frame-width) lines))))) | ||
| 260 | |||
| 261 | ;; Restore the original height of the frame. | ||
| 262 | ;; resize-minibuffer-frame-original-height is set in | ||
| 263 | ;; resize-minibuffer-setup. | ||
| 264 | (defun resize-minibuffer-frame-restore () | ||
| 265 | (set-frame-size (window-frame (minibuffer-window)) | ||
| 266 | (frame-width) | ||
| 267 | resize-minibuffer-frame-original-height)) | ||
| 268 | |||
| 269 | (if resize-minibuffer-mode | ||
| 270 | (resize-minibuffer-mode 1)) | ||
| 271 | 81 | ||
| 272 | (provide 'rsz-mini) | 82 | (provide 'rsz-mini) |
| 273 | 83 | ||