Commit a452eee8 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(completion-table-with-terminator): Allow to specify the terminator-regexp.

parent ab14d7d5
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.
......
......@@ -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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment