Function: semantic--find-tags-by-function
semantic--find-tags-by-function is a byte-compiled function defined in
find.el.gz.
Signature
(semantic--find-tags-by-function PREDICATE &optional TABLE)
Documentation
Find tags for which PREDICATE is non-nil in TABLE.
PREDICATE is a lambda expression which accepts on TAG.
TABLE is a semantic tags table. See semantic-something-to-tag-table.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/find.el.gz
;;; Search Routines
;;
;; These are routines that search a single tags table.
;;
;; The original API (see COMPATIBILITY section below) in semantic 1.4
;; had these usage statistics:
;;
;; semantic-find-nonterminal-by-name 17
;; semantic-find-nonterminal-by-name-regexp 8 - Most doing completion
;; semantic-find-nonterminal-by-position 13
;; semantic-find-nonterminal-by-token 21
;; semantic-find-nonterminal-by-type 2
;; semantic-find-nonterminal-standard 1
;;
;; semantic-find-nonterminal-by-function (not in other searches) 1
;;
;; New API: As above w/out `search-parts' or `search-includes' arguments.
;; Extra fcn: Specific to completion which is what -name-regexp is
;; mostly used for
;;
;; As for the sarguments "search-parts" and "search-includes" here
;; are stats:
;;
;; search-parts: 4 - charting x2, find-doc, senator (sans db)
;;
;; Implement command to flatten a tag table. Call new API Fcn w/
;; flattened table for same results.
;;
;; search-include: 2 - analyze x2 (sans db)
;;
;; Not used effectively. Not to be re-implemented here.
(defsubst semantic--find-tags-by-function (predicate &optional table)
"Find tags for which PREDICATE is non-nil in TABLE.
PREDICATE is a lambda expression which accepts on TAG.
TABLE is a semantic tags table. See `semantic-something-to-tag-table'."
(let ((tags (semantic-something-to-tag-table table))
(result nil))
; (mapc (lambda (tag) (and (funcall predicate tag)
; (setq result (cons tag result))))
; tags)
;; A while loop is actually faster. Who knew
(while tags
(and (funcall predicate (car tags))
(setq result (cons (car tags) result)))
(setq tags (cdr tags)))
(nreverse result)))