Function: semantic-brute-find-tag-by-position
semantic-brute-find-tag-by-position is a byte-compiled function
defined in find.el.gz.
Signature
(semantic-brute-find-tag-by-position POSITION STREAMORBUFFER &optional NOMEDIAN)
Documentation
Find a tag covering POSITION within STREAMORBUFFER.
POSITION is a number, or marker. If NOMEDIAN is non-nil, don't do the median calculation, and return nil.
Source Code
;; Defined in /usr/src/emacs/lisp/cedet/semantic/find.el.gz
;;; Old Positional Searches
;;
;; Are these useful anymore?
;;
(defun semantic-brute-find-tag-by-position (position streamorbuffer
&optional nomedian)
"Find a tag covering POSITION within STREAMORBUFFER.
POSITION is a number, or marker. If NOMEDIAN is non-nil, don't do
the median calculation, and return nil."
(save-excursion
(if (markerp position) (set-buffer (marker-buffer position)))
(let* ((stream (if (bufferp streamorbuffer)
(with-current-buffer streamorbuffer
(semantic-fetch-tags))
streamorbuffer))
(prev nil)
(found nil))
(while (and stream (not found))
;; perfect fit
(if (and (>= position (semantic-tag-start (car stream)))
(<= position (semantic-tag-end (car stream))))
(setq found (car stream))
;; Median between to objects.
(if (and prev (not nomedian)
(>= position (semantic-tag-end prev))
(<= position (semantic-tag-start (car stream))))
(let ((median (/ (+ (semantic-tag-end prev)
(semantic-tag-start (car stream)))
2)))
(setq found
(if (> position median)
(car stream)
prev)))))
;; Next!!!
(setq prev (car stream)
stream (cdr stream)))
found)))