diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index b7bfb192d87..dbf013bdba2 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -626,6 +626,18 @@ xref-pop-to-location (defconst xref-buffer-name "*xref*" "The name of the buffer to show xrefs.") +(defvar-local xref-num-matches-found 0) + +(defvar xref-num-matches-face 'compilation-info + "Face name to show the number of matches on the mode line.") + +(defconst xref-mode-line-matches + `(" [" (:propertize (:eval (int-to-string xref-num-matches-found)) + face ,xref-num-matches-face + help-echo "Number of matches so far") + "]")) +(put 'xref-mode-line-matches 'risky-local-variable t) + (defface xref-file-header '((t :inherit compilation-info)) "Face used to highlight file header in the xref buffer." :version "27.1") @@ -1235,6 +1229,8 @@ xref--show-xref-buffer (xref--ensure-default-directory dd (current-buffer)) (xref--xref-buffer-mode) (xref--show-common-initialize xref-alist fetcher alist) + (setq xref-num-matches-found (length xrefs)) + (setq mode-line-process (list xref-mode-line-matches)) (pop-to-buffer (current-buffer)) (setq buf (current-buffer))) (xref--auto-jump-first buf (assoc-default 'auto-jump alist))