IDL Community: Carsten Dominik has asked me to post this announcement of a new version of the IDLWAVE comprehensive IDL mode for Emacs, due to overseas newsfeed trouble. As promised, it's packed full of exciting new features. If you've been waiting for a good opportunity to take the leap from the IDLDE to emacs+idlwave, now is the time! You won't be disappointed. JD Carsten's Announcement: ========================================================================== Subject: IDLWAVE 4.0 - editing mode for GNU Emacs and XEmacs I am releasing version 4.0 of the IDLWAVE mode for GNU Emacs and XEmacs. JD Smith should be considered Co-author of this version. Even though he did not write the Emacs Lisp code, most of the new ideas in IDLWAVE 4.0 are either directly from him, or were inspired by extensive discussions we had about IDL and IDLWAVE. Without his deep knowledge of IDL I would not have been able to put this release together. Thanks JD! What is new in IDLWAVE 4.0? =========================== 1. Online Help ----------- IDLWAVE now has its own online-help system for IDL. It accesses an ASCII version of the official IDL documentation [1] with lightning speed. Just press `M-?' (or shift+right-click) to pull up the help frame on the routine or keyword nearest the cursor. IDLWAVE immediately displays the correct section of the manual, skipping to the relevant keyword description if appropriate. No more typing a name into the "Index" pane, double clicking, following a link, and scrolling down. The ASCII help is hyperlinked to some extent: "See Also" links and links between methods and their classes are available. It also provides history so you can travel back and forth among recently viewed help topics. Help is also accessible from the Routine information window (see below) and even from the *Completions* buffer. To aid selection among the completed routines or keywords, you can right-click on an individual entry to pop-up the corresponding help. Those *Completions* items which are documented in the manuals are highlighted. This is especially useful for situations in which you can't remember which keyword is which, or you know a routine starts with a "c" but can't recall which it is. Since help can be accessed so simply and in so many ways, it becomes a seamless extension of both the coding process and interactive IDL use. For routines which are not documented in the IDL manuals (for example your own routines!), the source code is used as help text. To say it again: The IDLWAVE online help system is *fast*. If you are in the same situation as I and have to access idlhelp over a network, you know how frustrating this can be. You are in for a treat. For copyright reasons [2], I cannot distribute the help files with the IDLWAVE distribution, but you can easily download the files separately from my webpage. 2. Routine information ------------------- The routine info feature has been totally re-written. You can scan any local and personal IDL libraries, so that IDLWAVE knows about all routines accessible to IDL, even including those compiled in the Shell, if running. When you ask for information about a routine, all files which define this routine are listed, for example for the function IBETA(): Usage: Result = IBETA(a, b, x) Keywords: No keywords accepted. Sources: - SystemLib [C--] /soft1/idl53/lib/ibeta.pro - SystemLib [C--] /soft1/idl53/lib/tm_test.pro - SystemLib [C--] /soft1/idl53/lib/r_correlate.pro - SystemLib [C--] /soft1/idl53/lib/fv_test.pro This function is defined 4 times in the system library! While in this particular case, several of these are equivalent copies, often such name space conflicts or "shadows" in IDL can introduce errors or, even worse, pernicious but undetected changes. But now these errors can easily be detected and avoided. All defining sources for a routine are presented, ordered by the likelihood of use. The flags [CSB] indicate the origin(s) of the information (library [C]atalog, [S]hell, [B]uffer). A click with mouse-2 on the source file name displays this file in a buffer. Right clicking on the Usage line or keywords brings up the online help for these items. The category to which a set of routines belongs (SystemLib in the above example) is modifiable, so that, e.g., all NASA routines could be labelled with "NasaLib". 3. Shadow List ----------- IDLWAVE can search the entire name space of IDL routines and return a master list of all conflicts. It sorts the different source files in order of likelihood of use. Also available are subsets of this master listing: all shadows of routines defined in the current buffer, or all shadows of compiled routines. 4. Class completion ---------------- After the routine definition statements "pro" and "function", IDLWAVE will complete the most likely class name. In an OBJ_NEW call, completion transparently completes either class names or keywords of the appropriate INIT method in the right places. 5. Shell improvements ------------------ The IDLWAVE Shell now permits the expansion of abbreviations while editing the command line, so writing code in the shell buffer is now almost exactly like editing a source code file. It also provides access to the same routine info, help lookup, completion, and other mechanisms available in an IDLWAVE buffer. 6. Misc ---- There are a large number of small improvements. A number of small bugs have been cleared out. 7. Features you may have forgotten or never tried ---------------------------------------------- Debugging IDL programs with the IDLWAVE Shell is very simple. Breakpoint setting is done directly from the source buffer, with a single key stroke, and the breakpoint is indicated with highlighting or a glyph. The calling stack can be traversed and variables and expressions examined on all levels, providing similar functionality to Craig Markwardt's excellent debugging routines (see http://cow.physics.wisc.edu/~craigm/idl/misc.html#DXDEBUG), but much more easily, since variable values can be examined simply by clicking on them. IDLWAVE is available at http://strw.leidenuniv.nl/~dominik/Tools/idlwave/ I will in the near future also install this version in the Emacs and XEmacs source trees. Please send comments, suggestions, and bug reports to Carsten Dominik =========================================================================== Footnotes: [1] I have permission from RSI to distribute their documentation in ASCII for this purpose. Thanks to Mark Goosman from RSI for his cooperation on this issue. [2] Even though I have permission to distribute these files, the ASCII manuals obviously stay under the copyright of Research Systems Inc. IDLWAVE is distributed under the GNU GENERAL PUBLIC LICENSE, therefore the manuals cannot be part of it.