emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master eda4888: Suppress false positives in apropos-value


From: Lars Ingebrigtsen
Subject: master eda4888: Suppress false positives in apropos-value
Date: Sun, 2 May 2021 04:23:34 -0400 (EDT)

branch: master
commit eda4888e54a278226c51a2491594e8703c105d21
Author: Boruch Baum <boruch_baum@gmx.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Suppress false positives in apropos-value
    
    * lisp/apropos.el (apropos-value): Skip more apropos-internal
    variables (bug#48063).
    (apropos-value-internal): Skip the first value in the history
    values, which always contains the match.
---
 lisp/apropos.el | 65 ++++++++++++++++++++++++++++++++-------------------------
 1 file changed, 36 insertions(+), 29 deletions(-)

diff --git a/lisp/apropos.el b/lisp/apropos.el
index 86cdf23..823d6ec 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -809,34 +809,35 @@ Returns list of symbols and values found."
   (apropos-parse-pattern pattern t)
   (or do-all (setq do-all apropos-do-all))
   (setq apropos-accumulator ())
-   (let (f v p)
-     (mapatoms
-      (lambda (symbol)
-       (setq f nil v nil p nil)
-       (or (memq symbol '(apropos-regexp
-                          apropos-pattern apropos-all-words-regexp
-                          apropos-words apropos-all-words
-                          do-all apropos-accumulator
-                          symbol f v p))
-           (setq v (apropos-value-internal 'boundp symbol 'symbol-value)))
-       (if do-all
-           (setq f (apropos-value-internal 'fboundp symbol 'symbol-function)
-                 p (apropos-format-plist symbol "\n    " t)))
-       (if (apropos-false-hit-str v)
-           (setq v nil))
-       (if (apropos-false-hit-str f)
-           (setq f nil))
-       (if (apropos-false-hit-str p)
-           (setq p nil))
-       (if (or f v p)
-           (setq apropos-accumulator (cons (list symbol
-                                                 (+ (apropos-score-str f)
-                                                    (apropos-score-str v)
-                                                    (apropos-score-str p))
-                                                 f v p)
-                                           apropos-accumulator))))))
-   (let ((apropos-multi-type do-all))
-     (apropos-print nil "\n----------------\n")))
+  (let (f v p)
+    (mapatoms
+     (lambda (symbol)
+       (setq f nil v nil p nil)
+       (or (memq symbol '(apropos-regexp
+                          apropos--current apropos-pattern-quoted pattern
+                         apropos-pattern apropos-all-words-regexp
+                         apropos-words apropos-all-words
+                         do-all apropos-accumulator
+                         symbol f v p))
+           (setq v (apropos-value-internal 'boundp symbol 'symbol-value)))
+       (if do-all
+           (setq f (apropos-value-internal 'fboundp symbol 'symbol-function)
+                p (apropos-format-plist symbol "\n    " t)))
+       (if (apropos-false-hit-str v)
+           (setq v nil))
+       (if (apropos-false-hit-str f)
+           (setq f nil))
+       (if (apropos-false-hit-str p)
+           (setq p nil))
+       (if (or f v p)
+           (setq apropos-accumulator (cons (list symbol
+                                                (+ (apropos-score-str f)
+                                                   (apropos-score-str v)
+                                                   (apropos-score-str p))
+                                                f v p)
+                                          apropos-accumulator))))))
+  (let ((apropos-multi-type do-all))
+    (apropos-print nil "\n----------------\n")))
 
 ;;;###autoload
 (defun apropos-local-value (pattern &optional buffer)
@@ -928,7 +929,13 @@ Returns list of symbols and documentation found."
 
 (defun apropos-value-internal (predicate symbol function)
   (when (funcall predicate symbol)
-    (setq symbol (prin1-to-string (funcall function symbol)))
+    (setq symbol (prin1-to-string
+                  (if (memq symbol '(command-history minibuffer-history))
+                      ;; The value we're looking for will always be in
+                      ;; the first element of these two lists, so skip
+                      ;; that value.
+                      (cdr (funcall function symbol))
+                    (funcall function symbol))))
     (when (string-match apropos-regexp symbol)
       (if apropos-match-face
           (put-text-property (match-beginning 0) (match-end 0)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]