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))))