Function: cperl-tags-hier-fill
cperl-tags-hier-fill is a byte-compiled function defined in
cperl-mode.el.gz.
Signature
(cperl-tags-hier-fill)
Documentation
Fill a tags hierarchy if in a tag table cooked by cperl.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cperl-mode.el.gz
(defun cperl-tags-hier-fill ()
"Fill a tags hierarchy if in a tag table cooked by cperl."
(goto-char 1)
(let (pack name line ord cons1 file info fileind)
(while (re-search-forward cperl-tags-hier-regexp-list nil t)
(setq pack (match-beginning 2))
(beginning-of-line)
(if (looking-at (concat
"\\([^\n]+\\)"
"\C-?"
"\\([^\n]+\\)"
"\C-a"
"\\([0-9]+\\)"
","
"\\([0-9]+\\)"))
(progn
(setq ;;str (buffer-substring (match-beginning 1) (match-end 1))
name (buffer-substring (match-beginning 2) (match-end 2))
;;pos (buffer-substring (match-beginning 3) (match-end 3))
line (buffer-substring (match-beginning 3) (match-end 3))
ord (if pack 1 0)
file (file-of-tag)
fileind (format "%s:%s" file line)
;; Moves to beginning of the next line:
info (etags-snarf-tag))
;; Move back
(forward-char -1)
;; Make new member of hierarchy name ==> file ==> pos if needed
(if (setq cons1 (assoc name (nth ord cperl-hierarchy)))
;; Name known
(setcdr cons1 (cons (cons fileind (vector file info))
(cdr cons1)))
;; First occurrence of the name, start alist
(setq cons1 (cons name (list (cons fileind (vector file info)))))
(if pack
(setcar (cdr cperl-hierarchy)
(cons cons1 (nth 1 cperl-hierarchy)))
(setcar cperl-hierarchy
(cons cons1 (car cperl-hierarchy)))))))
(end-of-line))))