3.3 Lesson III: User and Library Catalogs

We have already used the routine info display in the first part of this tutorial. This was the invoked using C-c ?, and displays information about the IDL routine near the cursor position. Wouldn’t it be nice to have the same kind of information available for your own routines and for the huge amount of code in major libraries like JHUAPL or the IDL-Astro library? In many cases, you may already have this information. Files named .idlwave_catalog in library directories contain scanned information on the routines in that directory; many popular libraries ship with these “library catalogs” pre-scanned. Users can scan their own routines in one of two ways: either using the supplied tool to scan directories and build their own .idlwave_catalog files, or using the built-in method to create a single “user catalog”, which we’ll show here. See Catalogs, for more information on choosing which method to use.

To build a user catalog, select Routine Info/Select Catalog Directories from the IDLWAVE entry in the menu bar. If necessary, start the shell first with C-c C-s (see Starting the Shell). IDLWAVE will find out about the IDL !PATH variable and offer a list of directories on the path. Simply select them all (or whichever you want; directories with existing library catalogs will not be selected by default) and click on the ‘Scan&Save’ button. Then go for a cup of coffee while IDLWAVE collects information for each and every IDL routine on your search path. All this information is written to the file ~/.emacs.d/idlwave/idlusercat.el and will from now on automatically load whenever you use IDLWAVE. You may find it necessary to rebuild the catalog on occasion as your local libraries change, or build a library catalog for those directories instead. Invoke routine info (C-c ?) or completion (M-TAB) on any routine or partial routine name you know to be located in the library. E.g., if you have scanned the IDL-Astro library:

    a=readfM-TAB

expands to “readfits(”. Then try

    a=readfits(C-c ?

and you get:

Usage:    Result = READFITS(filename, header, heap)
...

I hope you made it until here. Now you are set to work with IDLWAVE. On the way you will want to change other things, and to learn more about the possibilities not discussed in this short tutorial. Read the manual, look at the documentation strings of interesting variables (with C-h v idlwave<-variable-name> RET) and ask the remaining questions on the newsgroup comp.lang.idl-pvwave.