Function: tags-table-extend-computed-list
tags-table-extend-computed-list is a byte-compiled function defined in
etags.el.gz.
Signature
(tags-table-extend-computed-list)
Documentation
Extend tags-table-computed-list to remove the first t placeholder.
An element of the list that is t is a placeholder indicating that the preceding element is a table that has not been read in and might contain included tables to search. This function reads in the first such table and puts its included tables into the list.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/etags.el.gz
(defun tags-table-extend-computed-list ()
"Extend `tags-table-computed-list' to remove the first t placeholder.
An element of the list that is t is a placeholder indicating that the
preceding element is a table that has not been read in and might
contain included tables to search. This function reads in the first
such table and puts its included tables into the list."
(let ((list tags-table-computed-list))
(while (not (eq (nth 1 list) t))
(setq list (cdr list)))
(save-excursion
(if (tags-verify-table (car list))
;; We are now in the buffer visiting (car LIST). Extract its
;; list of included tables and insert it into the computed list.
(let ((tables (tags-included-tables))
(computed nil)
table-buffer)
(while tables
(setq computed (cons (car tables) computed)
table-buffer (get-file-buffer (car tables)))
(if table-buffer
(with-current-buffer table-buffer
(if (tags-included-tables)
;; Insert the included tables into the list we
;; are processing.
(setcdr tables (append (tags-included-tables)
tables))))
;; This table is not in core yet. Insert a placeholder
;; saying we must read it into core to check for included
;; tables before searching the next table in the list.
(setq computed (cons t computed)))
(setq tables (cdr tables)))
(setq computed (nreverse computed))
;; COMPUTED now contains the list of included tables (and
;; tables included by them, etc.). Now splice this into the
;; current list.
(setcdr list (nconc computed (cdr (cdr list)))))
;; It was not a valid table, so just remove the following placeholder.
(setcdr list (cdr (cdr list)))))))