Function: speedbar-fetch-dynamic-etags
speedbar-fetch-dynamic-etags is a byte-compiled function defined in
speedbar.el.gz.
Signature
(speedbar-fetch-dynamic-etags FILE)
Documentation
For FILE, run etags and create a list of symbols extracted.
Each symbol will be associated with its line position in FILE.
Source Code
;; Defined in /usr/src/emacs/lisp/speedbar.el.gz
(defun speedbar-fetch-dynamic-etags (file)
"For FILE, run etags and create a list of symbols extracted.
Each symbol will be associated with its line position in FILE."
(let ((newlist nil))
(save-excursion
(if (get-buffer "*etags tmp*")
(kill-buffer "*etags tmp*")) ;kill to clean it up
(if (<= 1 speedbar-verbosity-level)
(dframe-message "Fetching etags..."))
(set-buffer (get-buffer-create "*etags tmp*"))
(apply 'call-process speedbar-fetch-etags-command nil
(current-buffer) nil
(append speedbar-fetch-etags-arguments (list file)))
(goto-char (point-min))
(if (<= 1 speedbar-verbosity-level)
(dframe-message "Fetching etags..."))
(let ((expr
(let ((exprlst speedbar-fetch-etags-parse-list)
(ans nil))
(while (and (not ans) exprlst)
(if (string-match (car (car exprlst)) file)
(setq ans (car exprlst)))
(setq exprlst (cdr exprlst)))
(cdr ans))))
(if expr
(let (tnl)
(set-buffer (get-buffer-create "*etags tmp*"))
(while (not (save-excursion (end-of-line) (eobp)))
(save-excursion
(setq tnl (speedbar-extract-one-symbol expr)))
(if tnl (setq newlist (cons tnl newlist)))
(forward-line 1)))
(dframe-message
"Sorry, no support for a file of that extension"))))
(if speedbar-sort-tags
(sort newlist (lambda (a b) (string< (car a) (car b))))
(reverse newlist))))