Function: etags-list-tags

etags-list-tags is a byte-compiled function defined in etags.el.gz.

Signature

(etags-list-tags FILE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/etags.el.gz
(defun etags-list-tags (file) ; Doc string?
  (goto-char (point-min))
  (when (re-search-forward (concat "\f\n" "\\(" file "\\)" ",") nil t)
    (let ((path (save-excursion (forward-line 1) (file-of-tag)))
	  ;; Get the local value in the tags table
	  ;; buffer before switching buffers.
	  (goto-func goto-tag-location-function)
	  tag tag-info pt)
    (forward-line 1)
    ;; Exuberant ctags add a line starting with the DEL character;
    ;; skip past it.
    (when (looking-at "\177")
      (forward-line 1))
    (while (not (or (eobp) (looking-at "\f")))
      ;; We used to use explicit tags when available, but the current goto-func
      ;; can only handle implicit tags.
      (setq tag-info (save-excursion (funcall snarf-tag-function nil))
	    tag (car tag-info)
	    pt (with-current-buffer standard-output (point)))
      (princ tag)
      (when (= (aref tag 0) ?\() (princ " ...)"))
      (with-current-buffer standard-output
	(make-text-button pt (point)
			  'tag-info tag-info
			  'file-path path
			  'goto-func goto-func
			  'action (lambda (button)
				    (let ((tag-info (button-get button 'tag-info))
					  (goto-func (button-get button 'goto-func)))
				      (tag-find-file-of-tag (button-get button 'file-path))
				      (widen)
				      (funcall goto-func tag-info)))
			  'follow-link t
			  'face tags-tag-face
			  'type 'button))
      (terpri)
      (forward-line 1))
    t)))