Function: semantic-symref-hit-to-tag-via-db
semantic-symref-hit-to-tag-via-db is a byte-compiled function defined
in symref.el.gz.
Signature
(semantic-symref-hit-to-tag-via-db HIT SEARCHTXT SEARCHTYPE)
Documentation
Convert the symref HIT into a TAG by looking up the tag via a database.
Return the Semantic tag associated with HIT. SEARCHTXT is the text that is being searched for. Used to narrow the in-buffer search. SEARCHTYPE is the type of search (such as 'symbol or 'tagname). If there is no database, or if the searchtype is wrong, return nil.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/symref.el.gz
(defun semantic-symref-hit-to-tag-via-db (hit searchtxt searchtype)
"Convert the symref HIT into a TAG by looking up the tag via a database.
Return the Semantic tag associated with HIT.
SEARCHTXT is the text that is being searched for.
Used to narrow the in-buffer search.
SEARCHTYPE is the type of search (such as 'symbol or 'tagname).
If there is no database, or if the searchtype is wrong, return nil."
;; Allowed search types for this mechanism:
;; tagname, tagregexp, tagcompletions
(if (not (memq searchtype '(tagname tagregexp tagcompletions)))
nil
(let* ((file (cdr hit))
;; FAIL here vv - don't load is not obeyed if no table found.
(db (semanticdb-file-table-object file t))
(found
(cond ((eq searchtype 'tagname)
(semantic-find-tags-by-name searchtxt db))
((eq searchtype 'tagregexp)
(semantic-find-tags-by-name-regexp searchtxt db))
((eq searchtype 'tagcompletions)
(semantic-find-tags-for-completion searchtxt db))))
(hit nil)
)
;; Loop over FOUND to see if we can line up a match with a line number.
(when (= (length found) 1)
(setq hit (car found)))
;; FAIL here ^^ - symref finds line numbers, but our DB uses character locations.
;; as such, this is a cheat and we will need to give up.
hit)))