@code{(require 'top-refs)} @ftindex top-refs @cindex top-level variable references @cindex variable references @noindent These procedures complement those in @ref{Module Manifests} by finding the top-level variable references in Scheme source code. They work by traversing expressions and definitions, keeping track of bindings encountered. It is certainly possible to foil these functions, but they return useful information about SLIB source code. @defun top-refs obj Returns a list of the top-level variables referenced by the Scheme expression @var{obj}. @end defun @defun top-refs<-file filename @var{filename} should be a string naming an existing file containing Scheme source code. @code{top-refs<-file} returns a list of the top-level variable references made by expressions in the file named by @var{filename}. Code in modules which @var{filename} @code{require}s is not traversed. Code in files loaded from top-level @emph{is} traversed if the expression argument to @code{load}, @code{slib:load}, @code{slib:load-source}, @code{macro:load}, @code{defmacro:load}, @code{synclo:load}, @code{syncase:load}, or @code{macwork:load} is a literal string constant or composed of combinations of vicinity functions and string literal constants; and the resulting file exists (possibly with ".scm" appended). @end defun @noindent The following function parses an @dfn{Info} Index. @cindex Info @footnote{Although it will work on large info files, feeding it an excerpt is much faster; and has less chance of being confused by unusual text in the info file. This command excerpts the SLIB index into @file{slib-index.info}: @example info -f slib2d6.info -n "Index" -o slib-index.info @end example } @defun exports<-info-index file n @dots{} @var{n} @dots{} must be an increasing series of positive integers. @code{exports<-info-index} returns a list of all the identifiers appearing in the @var{n}th @dots{} (info) indexes of @var{file}. The identifiers have the case that the implementation's @code{read} uses for symbols. Identifiers containing spaces (eg. @code{close-base on base-table}) are @emph{not} included. #f is returned if the index is not found. Each info index is headed by a @samp{* Menu:} line. To list the symbols in the first and third info indexes do: @example (exports<-info-index "slib.info" 1 3) @end example @end defun