idlwave: Routine Information Sources
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_ (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’. 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.