# HG changeset patch # User Stefan Monnier # Date 1256228089 0 # Node ID 834e4fdbe74a95f4cfcee215522153b03469ea79 # Parent eb03599b0d98657aebbebc9f14bfab98b6f42f7a (completion-table-with-terminator): Allow to specify the terminator-regexp. diff -r eb03599b0d98 -r 834e4fdbe74a lisp/ChangeLog --- a/lisp/ChangeLog Thu Oct 22 15:27:17 2009 +0000 +++ b/lisp/ChangeLog Thu Oct 22 16:14:49 2009 +0000 @@ -1,5 +1,8 @@ 2009-10-22 Stefan Monnier + * 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. diff -r eb03599b0d98 -r 834e4fdbe74a lisp/minibuffer.el --- a/lisp/minibuffer.el Thu Oct 22 15:27:17 2009 +0000 +++ b/lisp/minibuffer.el Thu Oct 22 16:14:49 2009 +0000 @@ -200,16 +200,24 @@ 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)