]> git.eshelyaron.com Git - emacs.git/commitdiff
(PC-do-completion): Strip out completion-ignored-extensions
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Aug 2006 18:06:28 +0000 (18:06 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 7 Aug 2006 18:06:28 +0000 (18:06 +0000)
before checking whether there are multiple completions.
Don't use `list' unnecessarily when building completion tables.

lisp/ChangeLog
lisp/complete.el

index 3f94298abcaf8383f329c217d4c3d06efb9e50fa..ff97d539496bfe56da4f14cbc68212fab70208e4 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * complete.el (PC-do-completion): Strip out completion-ignored-extensions
+       before checking whether there are multiple completions.
+       Don't use `list' unnecessarily when building completion tables.
+
 2006-08-06  Richard Stallman  <rms@gnu.org>
 
        * help.el (describe-mode): Make minor mode list more concise.
 
 2006-07-10  Chong Yidong  <cyd@stupidchicken.com>
 
-       * progmodes/cc-awk.el (defconst): Use eval-and-compile to avoid
-       compilation error.
+       * progmodes/cc-awk.el (c-awk-escaped-nls*): Use eval-and-compile to
+       avoid compilation error.
 
        * subr.el (sit-for): New function.
 
index c49ad488536bbf79fea16f78e9bea0f20521bac0..90c1ceceb3224b975f43f008cbe5bb2edf3f214b 100644 (file)
@@ -543,8 +543,8 @@ of `minibuffer-completion-table' and the minibuffer contents.")
        (let ((compl (all-completions (if env-on
                                          (file-name-nondirectory (substring str 0 p))
                                        (substring str 0 p))
-                                        table
-                                        pred)))
+                                      table
+                                      pred)))
          (setq p compl)
          (while p
            (and (string-match regex (car p))
@@ -553,6 +553,34 @@ of `minibuffer-completion-table' and the minibuffer contents.")
                   (setq poss (cons (car p) poss))))
            (setq p (cdr p)))))
 
+      ;; Handle completion-ignored-extensions
+      (and filename
+           (not (eq mode 'help))
+           (let ((p2 poss))
+
+             ;; Build a regular expression representing the extensions list
+             (or (equal completion-ignored-extensions PC-ignored-extensions)
+                 (setq PC-ignored-regexp
+                       (concat "\\("
+                               (mapconcat
+                                'regexp-quote
+                                (setq PC-ignored-extensions
+                                      completion-ignored-extensions)
+                                "\\|")
+                               "\\)\\'")))
+
+             ;; Check if there are any without an ignored extension.
+             ;; Also ignore `.' and `..'.
+             (setq p nil)
+             (while p2
+               (or (string-match PC-ignored-regexp (car p2))
+                   (string-match "\\(\\`\\|/\\)[.][.]?/?\\'" (car p2))
+                   (setq p (cons (car p2) p)))
+               (setq p2 (cdr p2)))
+
+             ;; If there are "good" names, use them
+             (and p (setq poss p))))
+
       ;; Now we have a list of possible completions
       (cond
 
@@ -575,34 +603,6 @@ of `minibuffer-completion-table' and the minibuffer contents.")
        ((or (cdr (setq helpposs poss))
            (memq mode '(help word)))
 
-       ;; Handle completion-ignored-extensions
-       (and filename
-            (not (eq mode 'help))
-            (let ((p2 poss))
-
-              ;; Build a regular expression representing the extensions list
-              (or (equal completion-ignored-extensions PC-ignored-extensions)
-                  (setq PC-ignored-regexp
-                        (concat "\\("
-                                (mapconcat
-                                 'regexp-quote
-                                 (setq PC-ignored-extensions
-                                       completion-ignored-extensions)
-                                 "\\|")
-                                "\\)\\'")))
-
-              ;; Check if there are any without an ignored extension.
-              ;; Also ignore `.' and `..'.
-              (setq p nil)
-              (while p2
-                (or (string-match PC-ignored-regexp (car p2))
-                    (string-match "\\(\\`\\|/\\)[.][.]?/?\\'" (car p2))
-                    (setq p (cons (car p2) p)))
-                (setq p2 (cdr p2)))
-
-              ;; If there are "good" names, use them
-              (and p (setq poss p))))
-
        ;; Is the actual string one of the possible completions?
        (setq p (and (not (eq mode 'help)) poss))
        (while (and p
@@ -623,7 +623,8 @@ of `minibuffer-completion-table' and the minibuffer contents.")
 
            ;; Check if next few letters are the same in all cases
            (if (and (not (eq mode 'help))
-                    (setq prefix (try-completion (PC-chunk-after basestr skip) (mapcar 'list poss))))
+                    (setq prefix (try-completion (PC-chunk-after basestr skip)
+                                                  poss)))
                (let ((first t) i)
                  ;; Retain capitalization of user input even if
                  ;; completion-ignore-case is set.
@@ -669,13 +670,9 @@ of `minibuffer-completion-table' and the minibuffer contents.")
                                              (+ beg (length dirname)) end)
                                             skip)
                                            (mapcar
-                                            (function
-                                             (lambda (x)
-                                               (list
-                                                (and (string-match skip x)
-                                                     (substring
-                                                      x
-                                                      (match-end 0))))))
+                                             (lambda (x)
+                                               (when (string-match skip x)
+                                                 (substring x (match-end 0))))
                                             poss)))
                              (or (> i 0) (> (length prefix) 0))
                              (or (not (eq mode 'word))