Previous: Library Catalogs, Up: Catalogs

#### A.3.2 User Catalog

The user catalog is the old routine catalog system. It is produced within Emacs, and stored in a single file in the user's home directory (`.idlwave/idlusercat.el` by default). Although library catalogs are more flexible, there may be reasons to prefer a user catalog instead, including:

- The scan is internal to Emacs, so you don't need a working Perl installation, as you do for library catalogs.
- Can be used to scan directories for which the user has no write privileges.
- Easy widget-based path selection.

However, no routine info is available in the user catalog by default; the user must actively complete a scan. In addition, this type of catalog is all or nothing: if a single routine changes, the entire catalog must be rescanned to update it. Creating the user catalog is also much slower than scanning library catalogs.

You can scan any of the directories on the currently known path. Under Windows and MacOS (not OSX), you need to specify the IDL search path in the variable `idlwave-library-path`, and the location of the IDL directory (the value of the `!DIR` system variable) in the variable `idlwave-system-directory`, like this1:

         (setq idlwave-library-path
                 '("+c:/RSI/IDL56/lib/" "+c:/user/me/idllibs"))
         (setq idlwave-system-directory "c:/RSI/IDL56/")

Under GNU/Linux and UNIX, these values will be automatically gathered from the IDLWAVE shell, if run.

The command `M-x idlwave-create-user-catalog-file` (or the menu item ‘`IDLWAVE->Routine Info->Select Catalog Directories`’) can then be used to create a user catalog. It brings up a widget in which you can select some or all directories on the search path. Directories which already contain a library catalog are marked with ‘`[LIB]`’, and need not be scanned (although there is no harm if you do so, other than the additional memory used for the duplication).

After selecting directories, click on the ‘`[Scan & Save]`’ button in the widget to scan all files in the selected directories and write out the resulting routine information. In order to update the library information using the directory selection, call the command `idlwave-update-routine-info` with a double prefix argument: `C-u C-u C-c C-i`. This will rescan files in the previously selected directories, write an updated version of the user catalog file and rebuild IDLWAVE's internal lists. If you give three prefix arguments `C-u C-u C-u C-c C-i`, updating will be done with a background job2. You can continue to work, and the library catalog will be re-read when it is ready. If you find you need to update the user catalog often, you should consider building a library catalog for your routines instead (see Library Catalogs).

— User Option: idlwave-special-lib-alist

> Alist of regular expressions matching special library directories for labeling in routine-info display.

#### Footnotes

[1] The initial ‘`+`’ leads to recursive expansion of the path, just like in IDL

[2] Unix systems only, I think.