]> git.eshelyaron.com Git - emacs.git/commitdiff
(icomplete-prospects-length): Make obsolete.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 29 May 2008 16:25:12 +0000 (16:25 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 29 May 2008 16:25:12 +0000 (16:25 +0000)
(icomplete-prospects-height): New var.
(icomplete-completions): Use it.

etc/NEWS
lisp/ChangeLog
lisp/icomplete.el

index 9d74ae0e1fa6c251b5d7551989ef3512a43ba2ab..3d590ad94b7e9f22370ba0855e75bf7833803fb8 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -426,6 +426,8 @@ this buffer, and special Proced commands to operate on the processes listed.
 \f
 * Changes in Specialized Modes and Packages in Emacs 23.1
 
+** Icomplete: `icomplete-prospects-height' supercedes `icomplete-prospects-length'.
+
 ** A new `whitespace' package has been installed, and the pre-existing one
 renamed to `old-whitespace'.
 [FIXME someone explain why this is good, if it is...]
index 925eeb7af096fabd6b06a5e5da7e6caf2a5e4995..aa61efaaa671302d72489ad4696d7f2629a07393 100644 (file)
@@ -1,3 +1,9 @@
+2008-05-29  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * icomplete.el (icomplete-prospects-length): Make obsolete.
+       (icomplete-prospects-height): New var.
+       (icomplete-completions): Use it.
+
 2008-05-29  David Kastrup  <dak@gnu.org>
 
        * autoinsert.el (auto-insert): Add :link.
index cacb7b26f1991918c2e3a3fdd7b77ae13354053a..02fb4c76214e983450f60ccf96417f1128730daa 100644 (file)
   :prefix "icomplete-"
   :group 'minibuffer)
 
+(defvar icomplete-prospects-length 80)
+(make-obsolete-variable
+ 'icomplete-prospects-length 'icomplete-prospects-height "23.1")
+
 ;;;_* User Customization variables
-(defcustom icomplete-prospects-length 80
-  "Length of string displaying the prospects."
-  :type 'integer
-  :group 'icomplete)
+(defcustom icomplete-prospects-height
+  ;; 20 is an estimated common size for the prompt + minibuffer content, to
+  ;; try to guess the number of lines used up by icomplete-prospects-length.
+  (+ 1 (/ (+ icomplete-prospects-length 20) (window-width)))
+  "Maximum number of lines to use in the minibuffer."
+  :type 'integer)
 
 (defcustom icomplete-compute-delay .3
   "Completions-computation stall, used only with large-number completions.
@@ -280,8 +286,7 @@ are exhibited within the square braces.)"
          (base-size (cdr last))
          (open-bracket (if require-match "(" "["))
          (close-bracket (if require-match ")" "]")))
-    ;; `concat'/`mapconcat' is the slow part.  With the introduction of
-    ;; `icomplete-prospects-length', there is no need for `catch'/`throw'.
+    ;; `concat'/`mapconcat' is the slow part.
     (if (not (consp comps))
         (format " %sNo matches%s" open-bracket close-bracket)
       (if last (setcdr last nil))
@@ -311,7 +316,15 @@ are exhibited within the square braces.)"
                                (t (concat "..." (substring most compare))))
                               close-bracket)))
             ;;"-prospects" - more than one candidate
-            (prospects-len (+ (length determ) 6)) ;; take {,...} into account
+            (prospects-len (+ (length determ) 6 ;; take {,...} into account
+                               (string-width (buffer-string))))
+             (prospects-max
+              ;; Max total length to use, including the minibuffer content.
+              (* (+ icomplete-max-minibuffer-height
+                    ;; If the minibuffer content already uses up more than
+                    ;; one line, increase the allowable space accordingly.
+                    (/ prospects-len (window-width)))
+                 (window-width)))
              (prefix-len
               ;; Find the common prefix among `comps'.
              (if (eq t (compare-strings (car comps) nil (length most)
@@ -332,8 +345,9 @@ are exhibited within the square braces.)"
                  comps (cdr comps))
            (cond ((string-equal comp "") (setq most-is-exact t))
                  ((member comp prospects))
-                 (t (setq prospects-len (+ (length comp) 1 prospects-len))
-                    (if (< prospects-len icomplete-prospects-length)
+                 (t (setq prospects-len
+                           (+ (string-width comp) 1 prospects-len))
+                    (if (< prospects-len prospects-max)
                         (push comp prospects)
                       (setq limit t))))))
         ;; Restore the base-size info, since completion-all-sorted-completions