mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 18:41:25 -08:00
(regexp-opt): Add `symbols' mode.
This commit is contained in:
parent
814cc274ef
commit
07ff7702e0
3 changed files with 17 additions and 4 deletions
|
|
@ -918,7 +918,11 @@ for Font Lock mode.
|
|||
If the optional argument @var{paren} is non-@code{nil}, then the
|
||||
returned regular expression is always enclosed by at least one
|
||||
parentheses-grouping construct. If @var{paren} is @code{words}, then
|
||||
that construct is additionally surrounded by @samp{\<} and @samp{\>}.
|
||||
that construct is additionally surrounded by @samp{\<} and @samp{\>};
|
||||
alternatively, if @var{paren} is @code{symbols}, then that construct
|
||||
is additionally surrounded by @samp{\_<} and @samp{\_>}
|
||||
(@code{symbols} is often appropriate when matching
|
||||
programming-language keywords and the like).
|
||||
|
||||
This simplified definition of @code{regexp-opt} produces a
|
||||
regular expression which is equivalent to the actual value
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
2010-10-07 Miles Bader <Miles Bader <miles@gnu.org>>
|
||||
|
||||
* emacs-lisp/regexp-opt.el (regexp-opt): Add `symbols' mode.
|
||||
|
||||
2010-10-07 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* mail/rmail.el (mail-sendmail-delimit-header, mail-header-end)
|
||||
|
|
|
|||
|
|
@ -96,19 +96,24 @@ The returned regexp is typically more efficient than the equivalent regexp:
|
|||
(concat open (mapconcat 'regexp-quote STRINGS \"\\\\|\") close))
|
||||
|
||||
If PAREN is `words', then the resulting regexp is additionally surrounded
|
||||
by \\=\\< and \\>."
|
||||
by \\=\\< and \\>.
|
||||
If PAREN is `symbols', then the resulting regexp is additionally surrounded
|
||||
by \\=\\_< and \\_>."
|
||||
(save-match-data
|
||||
;; Recurse on the sorted list.
|
||||
(let* ((max-lisp-eval-depth 10000)
|
||||
(max-specpdl-size 10000)
|
||||
(completion-ignore-case nil)
|
||||
(completion-regexp-list nil)
|
||||
(words (eq paren 'words))
|
||||
(open (cond ((stringp paren) paren) (paren "\\(")))
|
||||
(sorted-strings (delete-dups
|
||||
(sort (copy-sequence strings) 'string-lessp)))
|
||||
(re (regexp-opt-group sorted-strings (or open t) (not open))))
|
||||
(if words (concat "\\<" re "\\>") re))))
|
||||
(cond ((eq paren 'words)
|
||||
(concat "\\<" re "\\>"))
|
||||
((eq paren 'symbols)
|
||||
(concat "\\_<" re "\\_>"))
|
||||
(t re)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun regexp-opt-depth (regexp)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue