Next: Catalogs, Previous: Routine Definitions, Up: Sources of Routine Info

### A.2 Routine Information Sources

To maintain the most comprehensive information about all IDL routines on a system, IDLWAVE collects data from many sources:

1. It has a builtin list with information about the routines IDL ships with. IDLWAVE 6.1 is distributed with a list of 4346 routines and object methods, reflecting IDL version 6.3. As of IDL v6.2, the routine info is distributed directly with IDL in the form of an XML catalog which IDLWAVE scans. Formerly, this list was created by scanning the IDL manuals to produce the file `idlw-rinfo.el`.
2. IDLWAVE scans all its buffers in the current Emacs session for routine definitions. This is done automatically when routine information or completion is first requested by the user. Each new buffer and each buffer saved after making changes is also scanned. The command `C-c C-i` (`idlwave-update-routine-info`) can be used at any time to rescan all buffers.
3. If you have an IDLWAVE-Shell running in the Emacs session, IDLWAVE will query the shell for compiled routines and their arguments. This happens automatically when routine information or completion is first requested by the user. Each time an Emacs buffer is compiled with `C-c C-d C-c`, the routine info for that file is queried. Though rarely necessary, the command `C-c C-i` (`idlwave-update-routine-info`) can be used to explicitly update the shell routine data.
4. Many popular libraries are distributed with routine information already scanned into library catalogs (see Library Catalogs). These per-directory catalog files can also be built by the user with the supplied `idlwave_catalog` tool. They are automatically discovered by IDLWAVE.
5. IDLWAVE can scan selected directories of source files and store the result in a single user catalog file which will be automatically loaded just like `idlw-rinfo.el`. See User Catalog, for information on how to scan files in this way.

Loading all the routine and catalog information can be a time consuming process, especially over slow networks. Depending on the system and network configuration it could take up to 30 seconds (though locally on fast systems is usually only a few seconds). In order to minimize the wait time upon your first completion or routine info command in a session, IDLWAVE uses Emacs idle time to do the initialization in six steps, yielding to user input in between. If this gets into your way, set the variable `idlwave-init-rinfo-when-idle-after` to 0 (zero). The more routines documented in library and user catalogs, the slower the loading will be, so reducing this number can help alleviate any long load times.

— User Option: idlwave-init-rinfo-when-idle-after (`10`)

> Seconds of idle time before routine info is automatically initialized.

— User Option: idlwave-scan-all-buffers-for-routine-info (`t`)

> Non-`nil` means scan all buffers for IDL programs when updating info.

— User Option: idlwave-query-shell-for-routine-info (`t`)

> Non-`nil` means query the shell for info about compiled routines.

— User Option: idlwave-auto-routine-info-updates

> Controls under what circumstances routine info is updated automatically.