]> code.delx.au - gnu-emacs/blobdiff - lisp/rsz-mini.el
Initial revision
[gnu-emacs] / lisp / rsz-mini.el
index f1221b40ba9afb31cd83e6e5ae1a6612393908d9..e42e691237e41f09c376d6c2ab3e8d38d7b5027e 100644 (file)
@@ -1,13 +1,13 @@
 ;;; rsz-mini.el --- dynamically resize minibuffer to display entire contents
 
 ;;; rsz-mini.el --- dynamically resize minibuffer to display entire contents
 
-;; Copyright (C) 1990, 1993, 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
 
 ;; Author: Noah Friedman <friedman@prep.ai.mit.edu>
 ;;         Roland McGrath <roland@prep.ai.mit.edu>
 ;; Maintainer: friedman@prep.ai.mit.edu
 ;; Keywords: minibuffer, window, frame, display
 
 ;; Author: Noah Friedman <friedman@prep.ai.mit.edu>
 ;;         Roland McGrath <roland@prep.ai.mit.edu>
 ;; Maintainer: friedman@prep.ai.mit.edu
 ;; Keywords: minibuffer, window, frame, display
-;; Status: Known to work in FSF GNU Emacs 19.26 and later.
-;; $Id: rsz-mini.el,v 1.11 1996/01/14 07:34:30 erik Exp kwzh $
+
+;; $Id: rsz-mini.el,v 1.20 1998/04/20 02:41:08 done Exp done $
 
 ;; This file is part of GNU Emacs.
 
 
 ;; This file is part of GNU Emacs.
 
@@ -34,8 +34,8 @@
 ;; typing, the minibuffer will return to its original size.
 
 ;; In window systems where it is possible to have a frame in which the
 ;; typing, the minibuffer will return to its original size.
 
 ;; In window systems where it is possible to have a frame in which the
-;; minibuffer is the only window, the frame itself can be resized.  In FSF
-;; GNU Emacs 19.22 and earlier, the frame may not be properly returned to
+;; minibuffer is the only window, the frame itself can be resized.  In
+;; Emacs 19.22 and earlier, the frame may not be properly returned to
 ;; its original size after it ceases to be active because
 ;; `minibuffer-exit-hook' didn't exist until version 19.23.
 ;;
 ;; its original size after it ceases to be active because
 ;; `minibuffer-exit-hook' didn't exist until version 19.23.
 ;;
 ;;; Code:
 
 \f
 ;;; Code:
 
 \f
+(defgroup resize-minibuffer nil
+  "Dynamically resize minibuffer to display entire contents"
+  :group 'frames)
+
 ;;;###autoload
 ;;;###autoload
-(defvar resize-minibuffer-mode nil
-  "*If non-`nil', resize the minibuffer so its entire contents are visible.")
+(defcustom resize-minibuffer-mode nil
+  "*If non-`nil', resize the minibuffer so its entire contents are visible.
+You must modify via \\[customize] for this variable to have an effect."
+  :set (lambda (symbol value)
+        (resize-minibuffer-mode (if value 1 -1)))
+  :initialize 'custom-initialize-default
+  :type 'boolean
+  :group 'resize-minibuffer
+  :require 'rsz-mini
+  :version "20.3")
 
 ;;;###autoload
 
 ;;;###autoload
-(defvar resize-minibuffer-window-max-height nil
+(defcustom resize-minibuffer-window-max-height nil
   "*Maximum size the minibuffer window is allowed to become.
 If less than 1 or not a number, the limit is the height of the frame in
   "*Maximum size the minibuffer window is allowed to become.
 If less than 1 or not a number, the limit is the height of the frame in
-which the active minibuffer window resides.")
+which the active minibuffer window resides."
+  :type '(choice (const nil) integer)
+  :group 'resize-minibuffer)
 
 ;;;###autoload
 
 ;;;###autoload
-(defvar resize-minibuffer-window-exactly t
+(defcustom resize-minibuffer-window-exactly t
   "*Allow making minibuffer exactly the size to display all its contents.
 If `nil', the minibuffer window can temporarily increase in size but
 never get smaller while it is active.  Any other value allows exact
   "*Allow making minibuffer exactly the size to display all its contents.
 If `nil', the minibuffer window can temporarily increase in size but
 never get smaller while it is active.  Any other value allows exact
-resizing.")
+resizing."
+  :type 'boolean
+  :group 'resize-minibuffer)
 
 ;;;###autoload
 
 ;;;###autoload
-(defvar resize-minibuffer-frame nil
+(defcustom resize-minibuffer-frame nil
   "*Allow changing the frame height of minibuffer frames.
 If non-`nil' and the active minibuffer is the sole window in its frame,
   "*Allow changing the frame height of minibuffer frames.
 If non-`nil' and the active minibuffer is the sole window in its frame,
-allow changing the frame height.")
+allow changing the frame height."
+  :type 'boolean
+  :group 'resize-minibuffer)
 
 ;;;###autoload
 
 ;;;###autoload
-(defvar resize-minibuffer-frame-max-height nil
+(defcustom resize-minibuffer-frame-max-height nil
   "*Maximum size the minibuffer frame is allowed to become.
 If less than 1 or not a number, there is no limit.")
 
 ;;;###autoload
   "*Maximum size the minibuffer frame is allowed to become.
 If less than 1 or not a number, there is no limit.")
 
 ;;;###autoload
-(defvar resize-minibuffer-frame-exactly t
+(defcustom resize-minibuffer-frame-exactly t
   "*Allow making minibuffer frame exactly the size to display all its contents.
 If `nil', the minibuffer frame can temporarily increase in size but
 never get smaller while it is active.  Any other value allows exact
   "*Allow making minibuffer frame exactly the size to display all its contents.
 If `nil', the minibuffer frame can temporarily increase in size but
 never get smaller while it is active.  Any other value allows exact
-resizing.")
+resizing."
+  :type 'boolean
+  :group 'resize-minibuffer)
 
 ;; Variable used to store the height of the minibuffer frame
 ;; on entry, so it can be restored on exit.  It is made local before it is
 
 ;; Variable used to store the height of the minibuffer frame
 ;; on entry, so it can be restored on exit.  It is made local before it is
@@ -100,9 +120,9 @@ resizing.")
 \f
 ;;;###autoload
 (defun resize-minibuffer-mode (&optional prefix)
 \f
 ;;;###autoload
 (defun resize-minibuffer-mode (&optional prefix)
-  "Enable or disable resize-minibuffer mode.
-A negative prefix argument disables this mode.  A positive argument or
-argument of 0 enables it.
+  "Toggle resize-minibuffer mode.
+With argument, enable resize-minibuffer mode if and only if argument
+is positive.
 
 When this minor mode is enabled, the minibuffer is dynamically resized to
 contain the entire region of text put in it as you type.
 
 When this minor mode is enabled, the minibuffer is dynamically resized to
 contain the entire region of text put in it as you type.
@@ -124,13 +144,12 @@ The variable `resize-minibuffer-frame' controls whether this should be
 done.  The variables `resize-minibuffer-frame-max-height' and
 `resize-minibuffer-frame-exactly' are analogous to their window
 counterparts."
 done.  The variables `resize-minibuffer-frame-max-height' and
 `resize-minibuffer-frame-exactly' are analogous to their window
 counterparts."
-  (interactive "p")
-  (or prefix (setq prefix 0))
-  (cond
-   ((>= prefix 0)
-    (setq resize-minibuffer-mode t))
-   (t
-    (setq resize-minibuffer-mode nil))))
+  (interactive "P")
+  (setq resize-minibuffer-mode
+       (if prefix
+           (> (prefix-numeric-value prefix) 0)
+         (not resize-minibuffer-mode)))
+  (add-hook 'minibuffer-setup-hook 'resize-minibuffer-setup))
 
 (defun resize-minibuffer-setup ()
   (cond
 
 (defun resize-minibuffer-setup ()
   (cond
@@ -232,11 +251,12 @@ respectively."
          (setq lines (min lines resize-minibuffer-frame-max-height)))
     (cond
      ((> lines height)
          (setq lines (min lines resize-minibuffer-frame-max-height)))
     (cond
      ((> lines height)
-      (set-frame-size (selected-frame) (frame-width) lines))
+      (set-frame-size (window-frame (minibuffer-window)) (frame-width) lines))
      ((and resize-minibuffer-frame-exactly
            (> height resize-minibuffer-frame-original-height)
            (< lines height))
      ((and resize-minibuffer-frame-exactly
            (> height resize-minibuffer-frame-original-height)
            (< lines height))
-      (set-frame-size (selected-frame) (frame-width) lines)))))
+      (set-frame-size (window-frame (minibuffer-window))
+                     (frame-width) lines)))))
 
 ;; Restore the original height of the frame.
 ;; resize-minibuffer-frame-original-height is set in
 
 ;; Restore the original height of the frame.
 ;; resize-minibuffer-frame-original-height is set in
@@ -246,10 +266,9 @@ respectively."
                   (frame-width)
                   resize-minibuffer-frame-original-height))
 
                   (frame-width)
                   resize-minibuffer-frame-original-height))
 
-\f
-(provide 'rsz-mini)
+(if resize-minibuffer-mode
+    (resize-minibuffer-mode 1))
 
 
-(add-hook 'minibuffer-setup-hook 'resize-minibuffer-setup)
-(resize-minibuffer-mode)
+(provide 'rsz-mini)
 
 ;; rsz-mini.el ends here
 
 ;; rsz-mini.el ends here