]> git.eshelyaron.com Git - emacs.git/commitdiff
(completion-table-with-terminator): Allow to specify the terminator-regexp.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 22 Oct 2009 16:14:49 +0000 (16:14 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 22 Oct 2009 16:14:49 +0000 (16:14 +0000)
lisp/ChangeLog
lisp/minibuffer.el

index ba788adc109c0cd0c32f9159a5f966f300f55be2..5e77cb43175911755d528e9a8d57bd23b09c7777 100644 (file)
@@ -1,5 +1,8 @@
 2009-10-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * minibuffer.el (completion-table-with-terminator): Allow to specify
+       the terminator-regexp.
+
        * simple.el (switch-to-completions): Look for *Completions* in other
        frames as well.
 
index 2024a5bd7d14fad4b131b68a5e561e67d8295be6..cd606eb33b49aedb323d47cafbaa9f2fe068f969 100644 (file)
@@ -200,16 +200,24 @@ This is meant to be called in a curried way by first passing TERMINATOR
 and TABLE only (via `apply-partially').
 TABLE is a completion table, and TERMINATOR is a string appended to TABLE's
 completion if it is complete.  TERMINATOR is also used to determine the
-completion suffix's boundary."
+completion suffix's boundary.
+TERMINATOR can also be a cons cell (TERMINATOR . TERMINATOR-REGEXP)
+in which case TERMINATOR-REGEXP is a regular expression whose submatch
+number 1 should match TERMINATOR.  This is used when there is a need to
+distinguish occurrences of the TERMINATOR strings which are really terminators
+from others (e.g. escaped)."
   (cond
    ((eq (car-safe action) 'boundaries)
     (let* ((suffix (cdr action))
            (bounds (completion-boundaries string table pred suffix))
-           (max (string-match (regexp-quote terminator) suffix)))
+           (terminator-regexp (if (consp terminator)
+                                  (cdr terminator) (regexp-quote terminator)))
+           (max (string-match terminator-regexp suffix)))
       (list* 'boundaries (car bounds)
              (min (cdr bounds) (or max (length suffix))))))
    ((eq action nil)
     (let ((comp (try-completion string table pred)))
+      (if (consp terminator) (setq terminator (car terminator)))
       (if (eq comp t)
           (concat string terminator)
         (if (and (stringp comp)