;;; rsz-mini.el --- dynamically resize minibuffer to display entire contents
-;; Copyright (C) 1990, 1993, 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1990, 1993-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
+;; Author: Noah Friedman <friedman@splode.com>
+;; Roland McGrath <roland@gnu.org>
+;; Maintainer: Noah Friedman <friedman@splode.com>
;; Keywords: minibuffer, window, frame, display
+;; $Id: rsz-mini.el,v 1.22 1998/09/11 01:36:54 friedman Exp $
+
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;;; Code:
\f
+(defgroup resize-minibuffer nil
+ "Dynamically resize minibuffer to display entire contents"
+ :group 'frames)
+
;;;###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)
;;;###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
-which the active minibuffer window resides.")
+which the active minibuffer window resides."
+ :type '(choice (const nil) integer)
+ :group 'resize-minibuffer)
;;;###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
-resizing.")
+resizing."
+ :type 'boolean
+ :group 'resize-minibuffer)
;;;###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.")
+allow changing the frame height."
+ :type 'boolean
+ :group 'resize-minibuffer)
;;;###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
-(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
-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
\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.
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
(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