diff options
author | Shigeru Fukaya <shigeru.fukaya@gmail.com> | 2013-12-18 12:46:49 +0800 |
---|---|---|
committer | Chong Yidong <cyd@gnu.org> | 2013-12-18 12:46:49 +0800 |
commit | ba874b6430893be55d48840a901aac4e64a4befc (patch) | |
tree | a8f4474807dde0a2984ae4c31fae7bb6690dd6ce | |
parent | 150622a1734d33e7d72f6161d645f38b88f4e839 (diff) | |
download | emacs-ba874b6430893be55d48840a901aac4e64a4befc.tar.gz emacs-ba874b6430893be55d48840a901aac4e64a4befc.tar.bz2 emacs-ba874b6430893be55d48840a901aac4e64a4befc.zip |
apropos.el (apropos-words-to-regexp): Fix algorithm.
* apropos.el (apropos-words-to-regexp): Fix algorithm.
Fixes: debbugs:13946
-rw-r--r-- | lisp/ChangeLog | 4 | ||||
-rw-r--r-- | lisp/apropos.el | 25 |
2 files changed, 19 insertions, 10 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 96410c6c929..fa79352e7a2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2013-12-18 Shigeru Fukaya <shigeru.fukaya@gmail.com> + + * apropos.el (apropos-words-to-regexp): Fix algorithm (Bug#13946). + 2013-12-18 Glenn Morris <rgm@gnu.org> * Makefile.in (BYTE_COMPILE_FLAGS): Set load-prefer-newer to t. diff --git a/lisp/apropos.el b/lisp/apropos.el index 7a1a6f6a75a..b7c5aaddcb1 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el @@ -341,16 +341,21 @@ before finding a label." (defun apropos-words-to-regexp (words wild) - "Make regexp matching any two of the words in WORDS." - (concat "\\(" - (mapconcat 'identity words "\\|") - "\\)" - (if (cdr words) - (concat wild - "\\(" - (mapconcat 'identity words "\\|") - "\\)") - ""))) + "Make regexp matching any two of the words in WORDS. +WILD should be a subexpression matching wildcards between matches." + (setq words (delete-dups (copy-sequence words))) + (if (null (cdr words)) + (car words) + (mapconcat + (lambda (w) + (concat "\\(?:" w "\\)" ;; parens for synonyms + wild "\\(?:" + (mapconcat 'identity + (delq w (copy-sequence words)) + "\\|") + "\\)")) + words + "\\|"))) ;;;###autoload (defun apropos-read-pattern (subject) |