aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ.D. Smith2006-04-06 18:56:09 +0000
committerJ.D. Smith2006-04-06 18:56:09 +0000
commit4111a42be76f9cce94a78cf811d72d4fcd0777ca (patch)
tree30b771daf81eae6b2ae7b07c43c98387e26a00c2
parentcbc285b245f2c0baa70dcc8c63b78daaa757d802 (diff)
downloademacs-4111a42be76f9cce94a78cf811d72d4fcd0777ca.tar.gz
emacs-4111a42be76f9cce94a78cf811d72d4fcd0777ca.zip
Updated docs for IDLWAVE version 6.0; see idlwave.org. Factor out
blocks not suitable for inclusion with Emacs using PARTOFEMACS variable.
-rw-r--r--man/idlwave.texi957
1 files changed, 603 insertions, 354 deletions
diff --git a/man/idlwave.texi b/man/idlwave.texi
index 7af15e58674..e0f176c5d0b 100644
--- a/man/idlwave.texi
+++ b/man/idlwave.texi
@@ -9,16 +9,17 @@
9@synindex ky cp 9@synindex ky cp
10@syncodeindex vr cp 10@syncodeindex vr cp
11@syncodeindex fn cp 11@syncodeindex fn cp
12@set VERSION 5.5 12@set VERSION 6.0
13@set EDITION 5.5 13@set EDITION 6.0
14@set IDLVERSION 6.1 14@set IDLVERSION 6.2
15@set NSYSROUTINES 1850 15@set NSYSROUTINES 1966
16@set NSYSKEYWORDS 7685 16@set DATE Feb, 2006
17@set DATE March, 2005
18@set AUTHOR J.D. Smith & Carsten Dominik 17@set AUTHOR J.D. Smith & Carsten Dominik
19@set AUTHOR-EMAIL jdsmith@@as.arizona.edu 18@set AUTHOREMAIL jdsmith@@as.arizona.edu
20@set MAINTAINER J.D. Smith 19@set MAINTAINER J.D. Smith
21@set MAINTAINER-EMAIL jdsmith@@as.arizona.edu 20@set MAINTAINEREMAIL jdsmith@@as.arizona.edu
21@set PARTOFEMACS
22@set IDLWAVEHOMEPAGE http://idlwave.org/
22@c %**end of header 23@c %**end of header
23@finalout 24@finalout
24 25
@@ -29,8 +30,8 @@ Emacs, and interacting with an IDL shell run as a subprocess.
29This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE 30This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE
30@value{VERSION} 31@value{VERSION}
31 32
32Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 33Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
332005, 2006 Free Software Foundation, Inc. 34 2006 Free Software Foundation, Inc.
34 35
35Permission is granted to copy, distribute and/or modify this document 36Permission is granted to copy, distribute and/or modify this document
36under the terms of the GNU Free Documentation License, Version 1.2 or 37under the terms of the GNU Free Documentation License, Version 1.2 or
@@ -60,8 +61,8 @@ license to the document, as described in section 6 of the license.
60This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for 61This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for
61IDLWAVE version @value{VERSION}, @value{DATE}. 62IDLWAVE version @value{VERSION}, @value{DATE}.
62@sp 2 63@sp 2
63Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 64Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
642005, 2006 Free Software Foundation, Inc. 65 2006 Free Software Foundation, Inc.
65@sp 2 66@sp 2
66@cindex Copyright, of IDLWAVE 67@cindex Copyright, of IDLWAVE
67Permission is granted to copy, distribute and/or modify this document 68Permission is granted to copy, distribute and/or modify this document
@@ -100,6 +101,9 @@ Interactive Data Language (IDL), and running IDL as an inferior shell.
100* Getting Started:: Tutorial 101* Getting Started:: Tutorial
101* The IDLWAVE Major Mode:: The mode for editing IDL programs 102* The IDLWAVE Major Mode:: The mode for editing IDL programs
102* The IDLWAVE Shell:: The mode for running IDL as an inferior program 103* The IDLWAVE Shell:: The mode for running IDL as an inferior program
104@ifclear PARTOFEMACS
105* Installation:: How to Install or Upgrade
106@end ifclear
103* Acknowledgements:: Who did what 107* Acknowledgements:: Who did what
104* Sources of Routine Info:: How does IDLWAVE know about routine XYZ 108* Sources of Routine Info:: How does IDLWAVE know about routine XYZ
105* HTML Help Browser Tips:: 109* HTML Help Browser Tips::
@@ -178,6 +182,13 @@ Debugging IDL Programs
178* Walking the Calling Stack:: 182* Walking the Calling Stack::
179* Electric Debug Mode:: 183* Electric Debug Mode::
180 184
185@ifclear PARTOFEMACS
186Installation
187
188* Installing IDLWAVE:: How to install the distribution
189* Installing Online Help:: Where to get the additional files needed
190@end ifclear
191
181Sources of Routine Info 192Sources of Routine Info
182 193
183* Routine Definitions:: Where IDL Routines are defined. 194* Routine Definitions:: Where IDL Routines are defined.
@@ -197,6 +208,8 @@ Catalogs
197@node Introduction, IDLWAVE in a Nutshell, Top, Top 208@node Introduction, IDLWAVE in a Nutshell, Top, Top
198@chapter Introduction 209@chapter Introduction
199@cindex Introduction 210@cindex Introduction
211@cindex CORBA (Common Object Request Broker Architecture)
212@cindex Interface Definition Language
200@cindex Interactive Data Language 213@cindex Interactive Data Language
201@cindex cc-mode.el 214@cindex cc-mode.el
202@cindex @file{idl.el} 215@cindex @file{idl.el}
@@ -204,15 +217,17 @@ Catalogs
204@cindex Feature overview 217@cindex Feature overview
205 218
206IDLWAVE is a package which supports editing source files written in 219IDLWAVE is a package which supports editing source files written in
207the Interactive Data Language, and running 220the Interactive Data Language (IDL@c
208IDL as an inferior shell@footnote{Note that this package has nothing 221@ifclear PARTOFEMACS
209to do with the Interface Definition Language, part of the Common 222@footnote{IDL is a registered
210Object Request Broker Architecture (CORBA)}@footnote{IDLWAVE can also 223trademark of Research Systems, Inc.}@c
211be used for editing source files for the related WAVE/CL language, but 224@end ifclear
212with only limited support.}. It is a feature-rich replacement for the 225), and running IDL as an inferior shell@footnote{IDLWAVE can also be used
213IDLDE development environment included with IDL, and uses the full 226for editing source files for the related WAVE/CL language, but with only
214power of Emacs to make editing and running IDL programs easier, 227limited support.}. It is a feature-rich replacement for the IDLDE
215quicker, and more structured. 228development environment included with IDL, and uses the full power of
229Emacs to make editing and running IDL programs easier, quicker, and more
230structured.
216 231
217IDLWAVE consists of two main parts: a major mode for editing IDL 232IDLWAVE consists of two main parts: a major mode for editing IDL
218source files (@code{idlwave-mode}) and a mode for running the IDL 233source files (@code{idlwave-mode}) and a mode for running the IDL
@@ -231,8 +246,6 @@ Context-sensitive display of calling sequences and keywords for more
231than 1000 native IDL routines, extendible to any additional number of 246than 1000 native IDL routines, extendible to any additional number of
232local routines, and already available with many pre-scanned libraries. 247local routines, and already available with many pre-scanned libraries.
233@item 248@item
234Routine name space conflict search with likelihood-of-use ranking.
235@item
236Fast, context-sensitive online HTML help, or source-header help for 249Fast, context-sensitive online HTML help, or source-header help for
237undocumented routines. 250undocumented routines.
238@item 251@item
@@ -246,6 +259,8 @@ standards.
246@item 259@item
247Integrity checks and auto-termination of logical blocks. 260Integrity checks and auto-termination of logical blocks.
248@item 261@item
262Routine name space conflict search with likelihood-of-use ranking.
263@item
249Support for @file{imenu} (Emacs) and @file{func-menu} (XEmacs). 264Support for @file{imenu} (Emacs) and @file{func-menu} (XEmacs).
250@item 265@item
251Documentation support. 266Documentation support.
@@ -254,6 +269,9 @@ Running IDL as an inferior Shell with history search, command line
254editing and all the completion and routine info capabilities present in 269editing and all the completion and routine info capabilities present in
255IDL source buffers. 270IDL source buffers.
256@item 271@item
272Full handling of debugging with breakpoints, with interactive setting
273of break conditions, and easy stepping through code.
274@item
257Compilation, execution and interactive single-keystroke debugging of 275Compilation, execution and interactive single-keystroke debugging of
258programs directly from the source buffer. 276programs directly from the source buffer.
259@item 277@item
@@ -311,10 +329,12 @@ appendix.
311@tab Indent the current line relative to context. 329@tab Indent the current line relative to context.
312@item @kbd{C-M-\} 330@item @kbd{C-M-\}
313@tab Re-indent all lines in the current region. 331@tab Re-indent all lines in the current region.
332@item @kbd{C-M-q}
333@tab Re-indent all lines in the current routine.
314@item @kbd{C-u @key{TAB}} 334@item @kbd{C-u @key{TAB}}
315@tab Re-indent all lines in the current statement. 335@tab Re-indent all lines in the current statement.
316@item @kbd{M-@key{RET}} 336@item @kbd{M-@key{RET}}
317@tab Start a continuation line, or split the current line at point. 337@tab Start a continuation line, splitting the current line at point.
318@item @kbd{M-q} 338@item @kbd{M-q}
319@tab Fill the current comment paragraph. 339@tab Fill the current comment paragraph.
320@item @kbd{C-c ?} 340@item @kbd{C-c ?}
@@ -340,10 +360,10 @@ at point.
340 360
341@multitable @columnfractions .15 .85 361@multitable @columnfractions .15 .85
342@item @kbd{C-c C-s} 362@item @kbd{C-c C-s}
343@tab Start IDL as a subprocess and/or switch to the interaction buffer. 363@tab Start IDL as a subprocess and/or switch to the shell buffer.
344@item @kbd{M-p} 364@item @key{Up}, @kbd{M-p}
345@tab Cycle back through IDL command history. 365@tab Cycle back through IDL command history.
346@item @kbd{M-n} 366@item @key{Down},@kbd{M-n}
347@tab Cycle forward. 367@tab Cycle forward.
348@item @kbd{@key{TAB}} 368@item @kbd{@key{TAB}}
349@tab Complete a procedure name, function name or keyword in the shell buffer. 369@tab Complete a procedure name, function name or keyword in the shell buffer.
@@ -368,12 +388,9 @@ at point.
368@subheading Commonly used Settings in @file{.emacs} 388@subheading Commonly used Settings in @file{.emacs}
369@lisp 389@lisp
370;; Change the indentation preferences 390;; Change the indentation preferences
371(setq idlwave-main-block-indent 2 ; default 0
372 idlwave-block-indent 2 ; default 4
373 idlwave-end-offset -2) ; default -4
374;; Start autoloading routine info after 2 idle seconds 391;; Start autoloading routine info after 2 idle seconds
375(setq idlwave-init-rinfo-when-idle-after 2) 392(setq idlwave-init-rinfo-when-idle-after 2)
376;; Pad some operators with spaces 393;; Pad operators with spaces
377(setq idlwave-do-actions t 394(setq idlwave-do-actions t
378 idlwave-surround-by-blank t) 395 idlwave-surround-by-blank t)
379;; Syntax Highlighting 396;; Syntax Highlighting
@@ -384,9 +401,10 @@ at point.
384(setq idlwave-shell-debug-modifiers '(control shift)) 401(setq idlwave-shell-debug-modifiers '(control shift))
385@end lisp 402@end lisp
386 403
387@ifhtml 404@html
388<A NAME="TUTORIAL"></A> 405<A NAME="TUTORIAL"></A>
389@end ifhtml 406@end html
407
390@node Getting Started, The IDLWAVE Major Mode, IDLWAVE in a Nutshell, Top 408@node Getting Started, The IDLWAVE Major Mode, IDLWAVE in a Nutshell, Top
391@chapter Getting Started (Tutorial) 409@chapter Getting Started (Tutorial)
392@cindex Quick-Start 410@cindex Quick-Start
@@ -411,10 +429,14 @@ be discovered by reading the entire manual, or hovering over the
411shoulder of your nearest IDLWAVE guru for a few days. 429shoulder of your nearest IDLWAVE guru for a few days.
412 430
413It is assumed that you have access to Emacs or XEmacs with the full 431It is assumed that you have access to Emacs or XEmacs with the full
414IDLWAVE package including online help. We also assume that you are 432IDLWAVE package including online help@c
415familiar with Emacs and can read the nomenclature of key presses in 433@ifclear PARTOFEMACS
416Emacs (in particular, @kbd{C} stands for @key{CONTROL} and @kbd{M} for 434@ (@pxref{Installation})@c
417@key{META} (often the @key{ALT} key carries this functionality)). 435@end ifclear
436. We also assume that you are familiar with Emacs and can read the
437nomenclature of key presses in Emacs (in particular, @kbd{C} stands
438for @key{CONTROL} and @kbd{M} for @key{META} (often the @key{ALT} key
439carries this functionality)).
418 440
419Open a new source file by typing: 441Open a new source file by typing:
420 442
@@ -490,7 +512,7 @@ to cycle through your command history. Are we having fun now?
490 512
491Now go back to the source window and type @kbd{C-c C-d C-c} to compile 513Now go back to the source window and type @kbd{C-c C-d C-c} to compile
492the program. If you watch the shell buffer, you see that IDLWAVE types 514the program. If you watch the shell buffer, you see that IDLWAVE types
493@samp{.run tutorial.pro} for you. But the compilation fails because 515@samp{.run "tutorial.pro"} for you. But the compilation fails because
494there is a comma in the line @samp{years=...}. The line with the error 516there is a comma in the line @samp{years=...}. The line with the error
495is highlighted and the cursor positioned at the error, so remove the 517is highlighted and the cursor positioned at the error, so remove the
496comma (you should only need to hit @kbd{Delete}!). Compile again, using 518comma (you should only need to hit @kbd{Delete}!). Compile again, using
@@ -548,7 +570,7 @@ Let's try a different day --- how about April fool's day?
548plot_wday,1,4 570plot_wday,1,4
549@end example 571@end example
550 572
551Oops, this looks very wrong. All April fool's days cannot be Fridays! 573Oops, this looks very wrong. All April Fool's days cannot be Fridays!
552We've got a bug in the program, perhaps in the @code{daynr} function. 574We've got a bug in the program, perhaps in the @code{daynr} function.
553Let's put a breakpoint on the last line there. Position the cursor on 575Let's put a breakpoint on the last line there. Position the cursor on
554the @samp{return, d+...} line and press @kbd{C-c C-d C-b}. IDL sets a 576the @samp{return, d+...} line and press @kbd{C-c C-d C-b}. IDL sets a
@@ -576,12 +598,12 @@ sequence of weekdays repeats.
576@node Lesson II -- Customization, Lesson III -- User Catalog, Lesson I -- Development Cycle, Getting Started 598@node Lesson II -- Customization, Lesson III -- User Catalog, Lesson I -- Development Cycle, Getting Started
577@section Lesson II: Customization 599@section Lesson II: Customization
578 600
579Emacs is probably the most customizable piece of software ever 601Emacs is probably the most customizable piece of software ever written,
580written, and it would be a shame if you did not make use of this and 602and it would be a shame if you did not make use of this to adapt IDLWAVE
581adapt IDLWAVE to your own preferences. Customizing Emacs or IDLWAVE 603to your own preferences. Customizing Emacs or IDLWAVE is accomplished
582is accomplished by setting Lisp variables in the @file{.emacs} file in 604by setting Lisp variables in the @file{.emacs} file in your home
583your home directory --- but do not be dismayed; for the most part, you 605directory --- but do not be dismayed; for the most part, you can just
584can just copy and work from the examples given here. 606copy and work from the examples given here.
585 607
586Let's first use a boolean variable. These are variables which you turn 608Let's first use a boolean variable. These are variables which you turn
587on or off, much like a checkbox. A value of @samp{t} means on, a value 609on or off, much like a checkbox. A value of @samp{t} means on, a value
@@ -600,12 +622,12 @@ behavior, remove the option again from your @file{.emacs} file and
600restart Emacs. 622restart Emacs.
601 623
602You likely have your own indentation preferences for IDL code. For 624You likely have your own indentation preferences for IDL code. For
603example, some like to indent the main block of an IDL program from the 625example, some may prefer to indent the main block of an IDL program
604margin and use only 3 spaces as indentation between @code{BEGIN} and 626slightly from the margin and use only 3 spaces as indentation between
605@code{END}. Try the following lines in @file{.emacs}: 627@code{BEGIN} and @code{END}. Try the following lines in @file{.emacs}:
606 628
607@lisp 629@lisp
608(setq idlwave-main-block-indent 2) 630(setq idlwave-main-block-indent 1)
609(setq idlwave-block-indent 3) 631(setq idlwave-block-indent 3)
610(setq idlwave-end-offset -3) 632(setq idlwave-end-offset -3)
611@end lisp 633@end lisp
@@ -810,25 +832,26 @@ continuation lines.
810@cindex Foreign code, adapting 832@cindex Foreign code, adapting
811@cindex Indentation, of foreign code 833@cindex Indentation, of foreign code
812@kindex C-M-\ 834@kindex C-M-\
813To re-indent a larger portion of code (e.g. when working with foreign code 835To re-indent a larger portion of code (e.g. when working with foreign
814written with different conventions), use @kbd{C-M-\} 836code written with different conventions), use @kbd{C-M-\}
815(@code{indent-region}) after marking the relevant code. Useful marking 837(@code{indent-region}) after marking the relevant code. Useful marking
816commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the 838commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the current
817current subprogram). @xref{Actions}, for information how to impose 839subprogram). The command @kbd{C-M-q} reindents the entire current
818additional formatting conventions on foreign code. 840routine. @xref{Actions}, for information how to impose additional
841formatting conventions on foreign code.
819 842
820@defopt idlwave-main-block-indent (@code{0}) 843@defopt idlwave-main-block-indent (@code{2})
821Extra indentation for the main block of code. That is the block between 844Extra indentation for the main block of code. That is the block between
822the FUNCTION/PRO statement and the END statement for that program 845the FUNCTION/PRO statement and the END statement for that program
823unit. 846unit.
824@end defopt 847@end defopt
825 848
826@defopt idlwave-block-indent (@code{4}) 849@defopt idlwave-block-indent (@code{3})
827Extra indentation applied to block lines. If you change this, you 850Extra indentation applied to block lines. If you change this, you
828probably also want to change @code{idlwave-end-offset}. 851probably also want to change @code{idlwave-end-offset}.
829@end defopt 852@end defopt
830 853
831@defopt idlwave-end-offset (@code{-4}) 854@defopt idlwave-end-offset (@code{-3})
832Extra indentation applied to block END lines. A value equal to negative 855Extra indentation applied to block END lines. A value equal to negative
833@code{idlwave-block-indent} will make END lines line up with the block 856@code{idlwave-block-indent} will make END lines line up with the block
834BEGIN lines. 857BEGIN lines.
@@ -884,8 +907,8 @@ Also, since the indentation level can be somewhat dynamic in continued
884statements with special continuation indentation, especially if 907statements with special continuation indentation, especially if
885@code{idlwave-max-extra-continuation-indent} is small, the key 908@code{idlwave-max-extra-continuation-indent} is small, the key
886@kbd{C-u @key{TAB}} will re-indent all lines in the current statement. 909@kbd{C-u @key{TAB}} will re-indent all lines in the current statement.
887Note that @code{idlwave-indent-to-open-paren}, if non-@code{nil}, overrides 910Note that @code{idlwave-indent-to-open-paren}, if non-@code{nil},
888the @code{idlwave-max-extra-continuation-indent} limit, for 911overrides the @code{idlwave-max-extra-continuation-indent} limit, for
889parentheses only, forcing them always to line up. 912parentheses only, forcing them always to line up.
890 913
891 914
@@ -1254,9 +1277,9 @@ Maximum number of source files displayed in the Routine Info window.
1254@end defopt 1277@end defopt
1255 1278
1256 1279
1257@ifhtml 1280@html
1258<A NAME="ONLINE_HELP"></A> 1281<A NAME="ONLINE_HELP"></A>
1259@end ifhtml 1282@end html
1260@node Online Help, Completion, Routine Info, The IDLWAVE Major Mode 1283@node Online Help, Completion, Routine Info, The IDLWAVE Major Mode
1261@section Online Help 1284@section Online Help
1262 1285
@@ -1266,19 +1289,34 @@ Maximum number of source files displayed in the Routine Info window.
1266@cindex Installing online help 1289@cindex Installing online help
1267@cindex Online Help, Installation 1290@cindex Online Help, Installation
1268@cindex Speed, of online help 1291@cindex Speed, of online help
1269 1292@cindex XML Help Catalog
1270IDLWAVE can display help from an HTML version of the IDL documentation 1293
1271if it is available. This is @emph{much} faster than using the IDL 1294For IDL system routines, extensive documentation is supplied with IDL.
1272online help application, because IDLWAVE usually gets you to the right 1295IDLWAVE can access the HTML version of this documentation very quickly
1273place in the documentation directly --- e.g. a specific keyword of a 1296and accurately, based on the local context. This can be @emph{much}
1274routine --- without any additional browsing and scrolling. There are 1297faster than using the IDL online help application, because IDLWAVE
1275a variety of options for displaying the HTML help: see below. Help 1298usually gets you to the right place in the documentation directly ---
1276for routines without HTML documentation is also available, using the 1299e.g. a specific keyword of a routine --- without any additional browsing
1277routine documentation header and/or source. 1300and scrolling.
1278 1301
1279To make this feature work, you should set 1302For this online help to work, an HTML version of the IDL documentation
1280@code{idlwave-html-help-location} to the directory name of the 1303is required. Beginning with IDL 6.2, HTML documentation is distributed
1281directory where the IDL help files are installed. 1304directly with IDL, along with an XML-based catalog of routine
1305information. By default, IDLWAVE automatically attempts to convert this
1306XML catalog into a format Emacs can more easily understand, and caches
1307this information in your @code{idlwave_config_directory}
1308(@file{~/.idlwave/}, by default). It also re-scans the XML catalog if
1309it is newer than the current cached version. You can force rescan with
1310the menu entry @code{IDLWAVE->Routine Info->Rescan XML Help Catalog}.
1311
1312Before IDL 6.2, the HTML help was not distributed with IDL, and was not
1313part of the standalone IDLWAVE distribution, but had to be downloaded
1314separately. This is no longer necessary: all help and routine
1315information is supplied with IDL versions 6.2 and later.
1316
1317There are a variety of options for displaying the HTML help: see below.
1318Help for routines without HTML documentation is also available, by using
1319the routine documentation header and/or routine source.
1282 1320
1283@kindex M-? 1321@kindex M-?
1284In any IDL program (or, as with most IDLWAVE commands, in the IDL 1322In any IDL program (or, as with most IDLWAVE commands, in the IDL
@@ -1288,19 +1326,21 @@ locations are recognized context for help:
1288 1326
1289@cindex Context, for online help 1327@cindex Context, for online help
1290@multitable @columnfractions .25 .75 1328@multitable @columnfractions .25 .75
1291@item @i{Routine name} 1329@item @i{Routine names}
1292@tab The name of a routine (function, procedure, method). 1330@tab The name of a routine (function, procedure, method).
1293@item @i{Keyword Parameter} 1331@item @i{Keyword Parameters}
1294@tab A keyword parameter of a routine. 1332@tab A keyword parameter of a routine.
1295@item @i{System Variable} 1333@item @i{System Variables}
1296@tab System variables like @code{!DPI}. 1334@tab System variables like @code{!DPI}.
1297@item @i{System Variable Tags} 1335@item @i{System Variable Tags}
1298@tab System variables tags like @code{!D.X_SIZE}. 1336@tab System variables tags like @code{!D.X_SIZE}.
1299@item @i{IDL Statement} 1337@item @i{IDL Statements}
1300@tab Statements like @code{PRO}, @code{REPEAT}, @code{COMPILE_OPT}, etc. 1338@tab Statements like @code{PRO}, @code{REPEAT}, @code{COMPILE_OPT}, etc.
1301@item @i{Class name} 1339@item @i{IDL Controls}
1340@tab Control structures like @code{FOR}, @code{SWITCH}, etc.
1341@item @i{Class names}
1302@tab A class name in an @code{OBJ_NEW} call. 1342@tab A class name in an @code{OBJ_NEW} call.
1303@item @i{Class Init} 1343@item @i{Class Init Keywords}
1304@tab Beyond the class name in an @code{OBJ_NEW} call. 1344@tab Beyond the class name in an @code{OBJ_NEW} call.
1305@item @i{Executive Command} 1345@item @i{Executive Command}
1306@tab An executive command like @code{.RUN}. Mostly useful in the shell. 1346@tab An executive command like @code{.RUN}. Mostly useful in the shell.
@@ -1352,52 +1392,62 @@ directly in the originating source file.
1352@cindex HTML Help 1392@cindex HTML Help
1353@cindex Help using HTML manuals 1393@cindex Help using HTML manuals
1354@cindex IDL manual, HTML version 1394@cindex IDL manual, HTML version
1395@cindex IDL Assistant
1355 1396
1356Help using the HTML documentation is invoked with the built-in Emacs 1397Help using the HTML documentation is invoked with the built-in Emacs
1357command @code{browse-url}, which displays the relevant help topic in a 1398command @code{browse-url}, which displays the relevant help topic in a
1358browser of your choosing. There are many possible browsers to choose 1399browser of your choosing. Beginning with version 6.2, IDL comes with
1400the help browser @emph{IDL Assistant}, which it uses by default for
1401displaying online help on all supported platforms. This browser
1402offers topical searches, an index, and is also now the default and
1403recommended IDLWAVE help browser. The variable
1404@code{idlwave-help-use-assistant} controls whether this browser is
1405used. Note that, due to limitations in the Assistant, invoking help
1406within IDLWAVE and @code{? topic} within IDL will result in two
1407running copies of Assistant.
1408
1409Aside from the IDL Assistant, there are many possible browsers to choose
1359among, with differing advantages and disadvantages. The variable 1410among, with differing advantages and disadvantages. The variable
1360@code{idlwave-help-browser-function} controls which browser help is 1411@code{idlwave-help-browser-function} controls which browser help is sent
1361sent to. This function is used to set the variable 1412to (as long as @code{idlwave-help-use-assistant} is not set). This
1362@code{browse-url-browser-function} locally for IDLWAVE help only. 1413function is used to set the variable @code{browse-url-browser-function}
1363Customize this variable to see what choices of browsers your system 1414locally for IDLWAVE help only. Customize the latter variable to see
1364offers. 1415what choices of browsers your system offers. Certain browsers like
1365 1416@code{w3} (bundled with many versions of Emacs) and @code{w3m}
1366Certain browsers like @code{w3} and @code{w3m} 1417(@uref{http://emacs-w3m.namazu.org/}) are run within Emacs, and use
1367(@uref{http://emacs-w3m.namazu.org/}, the author's help browser of 1418Emacs buffers to display the HTML help. This can be convenient,
1368choice) are run within Emacs, and use Emacs buffers to display the 1419especially on small displays, and images can even be displayed in-line
1369HTML help. This can be convenient, especially on small displays, and 1420on newer Emacs versions. However, better formatting results are often
1370images can even be displayed in-line on new Emacs versions. However, 1421achieved with external browsers, like Mozilla. IDLWAVE assumes any
1371better formatting results are often achieved with external browsers, 1422browser function containing "w3" is displayed in a local buffer. If you
1372like Mozilla. IDLWAVE assumes any browser function containing "w3" is 1423are using another Emacs-local browser for which this is not true, set
1373displayed in a local buffer. If you are using another Emacs-local 1424the variable @code{idlwave-help-browser-is-local}.
1374browser for which this is not true, set the variable 1425
1375@code{idlwave-help-browser-is-local}. 1426With IDL 6.2 or later, it is important to ensure that the variable
1376 1427@code{idlwave-system-directory} is set (@pxref{Catalogs}). One easy way
1377@emph{N.B. For Windows users}: IDLWAVE can bring up help directly 1428to ensure this is to run the IDL Shell (@kbd{C-c C-s}). It will be
1378from the Microsoft HTMLHelp documentation supplied with IDL: no 1429queried for this directory, and the results will be cached to file for
1379additional help files are needed. Be sure to set 1430subsequent use.
1380@code{idlwave-system-directory} and the help file will be found
1381automatically (or, alternatively, specify its location directly with
1382@code{idlwave-html-help-location}). The variable
1383@code{idlwave-help-use-hh} controls whether HTMLHelp is used, and
1384which application is called to invoke it (@code{HH} is the default).
1385The free helper application @code{KEYHH}
1386(@uref{http://www.keyworks.net/keyhh.htm}) can be used instead, and is
1387preferrable, as it permits loading new help topics into the same help
1388window. @code{KEYHH} must be downloaded and installed separately.
1389 1431
1390@xref{HTML Help Browser Tips}, for more information on selecting and 1432@xref{HTML Help Browser Tips}, for more information on selecting and
1391configuring a browser for use with IDL's HTML help system. 1433configuring a browser for use with IDL's HTML help system.
1392 1434
1393@defopt idlwave-html-help-location @file{/usr/local/etc} 1435@defopt idlwave-html-system-help-location @file{help/online_help}
1394The directory where the @file{idl_html_help} dir or @file{idl.chm} 1436Relative directory of the system-supplied HTML help directory,
1395HTMLHelp files live. 1437considered with respect to @code{idlwave-system-directory}. Relevant
1438for IDL 6.2 and greater. Should not change.
1439@end defopt
1440
1441@defopt idlwave-html-help-location @file{/usr/local/etc/}
1442The directory where the @file{idl_html_help} HTML directory live.
1443Obsolete and ignored for IDL 6.2 and greater
1444(@code{idlwave-html-system-help-location} is used instead).
1396@end defopt 1445@end defopt
1397 1446
1398@defopt idlwave-help-use-hh @code{nil} 1447@defopt idlwave-help-use-assistant @code{t}
1399If set to @code{'hh} or @code{'keyhh}, use Windows native HTMLHelp 1448If set, use the IDL Assistant if possible for online HTML help,
1400with the specified help application. 1449otherwise use the browser function specified in
1450@code{idlwave-help-browser-function}.
1401@end defopt 1451@end defopt
1402 1452
1403@defopt idlwave-help-browser-function 1453@defopt idlwave-help-browser-function
@@ -1408,8 +1458,8 @@ one of the functions available for setting
1408 1458
1409@defopt idlwave-help-browser-is-local 1459@defopt idlwave-help-browser-is-local
1410Is the browser selected in @code{idlwave-help-browser-function} run in a 1460Is the browser selected in @code{idlwave-help-browser-function} run in a
1411local Emacs buffer? Defaults to @code{t} if the function contains 1461local Emacs buffer or window? Defaults to @code{t} if the function
1412"-w3". 1462contains "-w3".
1413@end defopt 1463@end defopt
1414 1464
1415@defopt idlwave-help-link-face 1465@defopt idlwave-help-link-face
@@ -1517,16 +1567,15 @@ The case-insensitive heading word in doclib headers to locate the
1517@kindex C-c C-i 1567@kindex C-c C-i
1518IDLWAVE offers completion for class names, routine names, keywords, 1568IDLWAVE offers completion for class names, routine names, keywords,
1519system variables, system variable tags, class structure tags, regular 1569system variables, system variable tags, class structure tags, regular
1520structure tags and file names. As in many programming modes, 1570structure tags and file names. As in many programming modes, completion
1521completion is bound to @kbd{M-@key{TAB}} (or @kbd{@key{TAB}} in the 1571is bound to @kbd{M-@key{TAB}} (or simply @kbd{@key{TAB}} in the IDLWAVE
1522IDLWAVE Shell --- @pxref{Using the Shell}). Completion uses exactly 1572Shell --- @pxref{Using the Shell}). Completion uses exactly the same
1523the same internal information as routine info, so when necessary 1573internal information as routine info, so when necessary (rarely) it can
1524(rarely) it can be updated with @kbd{C-c C-i} 1574be updated with @kbd{C-c C-i} (@code{idlwave-update-routine-info}).
1525(@code{idlwave-update-routine-info}).
1526 1575
1527The completion function is context sensitive and figures out what to 1576The completion function is context sensitive and figures out what to
1528complete based location of the point. Here are example lines and what 1577complete based on the location of the point. Here are example lines and
1529@kbd{M-@key{TAB}} would try to complete when the cursor is on the 1578what @kbd{M-@key{TAB}} would try to complete when the cursor is on the
1530position marked with a @samp{_}: 1579position marked with a @samp{_}:
1531 1580
1532@example 1581@example
@@ -1536,7 +1585,7 @@ plot,xra_ @r{Keyword of @code{plot} procedure}
1536plot,x,y,/x_ @r{Keyword of @code{plot} procedure} 1585plot,x,y,/x_ @r{Keyword of @code{plot} procedure}
1537plot,min(_ @r{Keyword of @code{min} function} 1586plot,min(_ @r{Keyword of @code{min} function}
1538obj -> a_ @r{Object method (procedure)} 1587obj -> a_ @r{Object method (procedure)}
1539a(2,3) = obj -> a_ @r{Object method (function)} 1588a[2,3] = obj -> a_ @r{Object method (function)}
1540x = obj_new('IDL_ @r{Class name} 1589x = obj_new('IDL_ @r{Class name}
1541x = obj_new('MyCl',a_ @r{Keyword to @code{Init} method in class @code{MyCl}} 1590x = obj_new('MyCl',a_ @r{Keyword to @code{Init} method in class @code{MyCl}}
1542pro A_ @r{Class name} 1591pro A_ @r{Class name}
@@ -1655,16 +1704,17 @@ completion.
1655@cindex Class ambiguity 1704@cindex Class ambiguity
1656@cindex @code{self} object, default class 1705@cindex @code{self} object, default class
1657An object method is not uniquely determined without the object's class. 1706An object method is not uniquely determined without the object's class.
1658Since the class is almost always omitted in the calling source, IDLWAVE 1707Since the class is almost always omitted in the calling source (as
1659considers all available methods in all classes as possible method name 1708required to obtain the true benefits of object-based programming),
1660completions. The combined list of keywords of the current method in 1709IDLWAVE considers all available methods in all classes as possible
1661@emph{all} known classes which contain that method will be considered 1710method name completions. The combined list of keywords of the current
1662for keyword completion. In the @file{*Completions*} buffer, the 1711method in @emph{all} known classes which contain that method will be
1663matching classes will be shown next to each item (see option 1712considered for keyword completion. In the @file{*Completions*} buffer,
1713the matching classes will be shown next to each item (see option
1664@code{idlwave-completion-show-classes}). As a special case, the class 1714@code{idlwave-completion-show-classes}). As a special case, the class
1665of an object called @samp{self} is always taken to be the class of the 1715of an object called @samp{self} is always taken to be the class of the
1666current routine. All classes it inherits from are considered as well 1716current routine, when in an IDLWAVE buffer. All inherits classes are
1667where appropriate. 1717considered as well.
1668 1718
1669@cindex Forcing class query. 1719@cindex Forcing class query.
1670@cindex Class query, forcing 1720@cindex Class query, forcing
@@ -1674,7 +1724,7 @@ narrow down the number of possible completions. The variable
1674@code{idlwave-query-class} can be configured to make such prompting the 1724@code{idlwave-query-class} can be configured to make such prompting the
1675default for all methods (not recommended), or selectively for very 1725default for all methods (not recommended), or selectively for very
1676common methods for which the number of completing keywords would be too 1726common methods for which the number of completing keywords would be too
1677large (e.g. @code{Init}). 1727large (e.g. @code{Init,SetProperty,GetProperty}).
1678 1728
1679@cindex Saving object class on @code{->} 1729@cindex Saving object class on @code{->}
1680@cindex @code{->} 1730@cindex @code{->}
@@ -1683,9 +1733,9 @@ completing the method), IDLWAVE can remember it for the rest of the
1683editing session. Subsequent completions in the same statement 1733editing session. Subsequent completions in the same statement
1684(e.g. keywords) can then reuse this class information. This works by 1734(e.g. keywords) can then reuse this class information. This works by
1685placing a text property on the method invocation operator @samp{->}, 1735placing a text property on the method invocation operator @samp{->},
1686after which the operator will be shown in a different face. This is not 1736after which the operator will be shown in a different face (bold by
1687enabled by default --- the variable @code{idlwave-store-inquired-class} 1737default). The variable @code{idlwave-store-inquired-class} can be used
1688can be used to turn it on. 1738to turn it off or on.
1689 1739
1690@defopt idlwave-completion-show-classes (@code{1}) 1740@defopt idlwave-completion-show-classes (@code{1})
1691Non-@code{nil} means show up to that many classes in 1741Non-@code{nil} means show up to that many classes in
@@ -1701,14 +1751,14 @@ Non-@code{nil} means fontify the classes in completions buffer.
1701Association list governing query for object classes during completion. 1751Association list governing query for object classes during completion.
1702@end defopt 1752@end defopt
1703 1753
1704@defopt idlwave-store-inquired-class (@code{nil}) 1754@defopt idlwave-store-inquired-class (@code{t})
1705Non-@code{nil} means store class of a method call as text property on 1755Non-@code{nil} means store class of a method call as text property on
1706@samp{->}. 1756@samp{->}.
1707@end defopt 1757@end defopt
1708 1758
1709@defopt idlwave-class-arrow-face 1759@defopt idlwave-class-arrow-face
1710Face to highlight object operator arrows @samp{->} which carry a class 1760Face to highlight object operator arrows @samp{->} which carry a saved
1711text property. 1761class text property.
1712@end defopt 1762@end defopt
1713 1763
1714@node Object Method Completion in the Shell, Class and Keyword Inheritance, Object Method Completion and Class Ambiguity, Completion 1764@node Object Method Completion in the Shell, Class and Keyword Inheritance, Object Method Completion and Class Ambiguity, Completion
@@ -1722,9 +1772,7 @@ routine info, or online help within a method routine, a query is sent to
1722determine the class of the object. If this query is successful, the 1772determine the class of the object. If this query is successful, the
1723class found will be used to select appropriate completions, routine 1773class found will be used to select appropriate completions, routine
1724info, or help. If unsuccessful, information from all known classes will 1774info, or help. If unsuccessful, information from all known classes will
1725be used (as in the buffer). Setting the variable 1775be used (as in the buffer).
1726@code{idlwave-store-inquired-class} can eliminate unnecessary repetitive
1727queries for the object's class, and speed up completion.
1728 1776
1729@node Class and Keyword Inheritance, Structure Tag Completion, Object Method Completion in the Shell, Completion 1777@node Class and Keyword Inheritance, Structure Tag Completion, Object Method Completion in the Shell, Completion
1730@subsection Class and Keyword Inheritance 1778@subsection Class and Keyword Inheritance
@@ -1802,7 +1850,17 @@ simply add the following to your @file{.emacs}:
1802@end lisp 1850@end lisp
1803 1851
1804Once enabled, you'll also be able to access online help on the structure 1852Once enabled, you'll also be able to access online help on the structure
1805tags, using the usual methods (@pxref{Online Help}). 1853tags, using the usual methods (@pxref{Online Help}). In addition,
1854structure variables in the shell will be queried for tag names, similar
1855to the way object variables in the shell are queried for method names.
1856So, e.g.:
1857
1858@example
1859IDL> st.[Tab]
1860@end example
1861
1862@noindent will complete with all structure fields of the structure
1863@code{st}.
1806 1864
1807@node Routine Source, Resolving Routines, Completion, The IDLWAVE Major Mode 1865@node Routine Source, Resolving Routines, Completion, The IDLWAVE Major Mode
1808@section Routine Source 1866@section Routine Source
@@ -1817,9 +1875,10 @@ for a module name, offering the same default as
1817@code{idlwave-routine-info} would have used, taken from nearby buffer 1875@code{idlwave-routine-info} would have used, taken from nearby buffer
1818contents. In the minibuffer, specify a complete routine name (including 1876contents. In the minibuffer, specify a complete routine name (including
1819any class part). IDLWAVE will display the source file in another 1877any class part). IDLWAVE will display the source file in another
1820window, positioned at the routine in question. You can also visit a 1878window, positioned at the routine in question. You can also limit this
1821routine in the current buffer, with completion, by using a single prefix 1879to a routine in the current buffer only, with completion, and a
1822(@kbd{C-u C-c C-v}). 1880context-sensitive default, by using a single prefix (@kbd{C-u C-c C-v})
1881or the convenience binding @kbd{C-c C-t}.
1823 1882
1824@cindex Buffers, killing 1883@cindex Buffers, killing
1825@cindex Killing autoloaded buffers 1884@cindex Killing autoloaded buffers
@@ -1838,7 +1897,8 @@ these buffers.
1838The key sequence @kbd{C-c =} calls the command @code{idlwave-resolve} 1897The key sequence @kbd{C-c =} calls the command @code{idlwave-resolve}
1839and sends the line @samp{RESOLVE_ROUTINE, '@var{routine_name}'} to IDL 1898and sends the line @samp{RESOLVE_ROUTINE, '@var{routine_name}'} to IDL
1840in order to resolve (compile) it. The default routine to be resolved is 1899in order to resolve (compile) it. The default routine to be resolved is
1841taken from context, but you get a chance to edit it. 1900taken from context, but you get a chance to edit it. Usually this is
1901not necessary, since IDL automatically discovers routines on its path.
1842 1902
1843@code{idlwave-resolve} is one way to get a library module within reach 1903@code{idlwave-resolve} is one way to get a library module within reach
1844of IDLWAVE's routine info collecting functions. A better way is to 1904of IDLWAVE's routine info collecting functions. A better way is to
@@ -1983,6 +2043,8 @@ String abbreviations:
1983@tab @code{print,} 2043@tab @code{print,}
1984@item @code{\pt} 2044@item @code{\pt}
1985@tab @code{plot,} 2045@tab @code{plot,}
2046@item @code{\pv}
2047@tab @code{ptr_valid()}
1986@item @code{\re} 2048@item @code{\re}
1987@tab @code{read,} 2049@tab @code{read,}
1988@item @code{\rf} 2050@item @code{\rf}
@@ -2144,14 +2206,16 @@ Non-@code{nil} means re-indent line after END was typed.
2144 2206
2145Some operators can be automatically surrounded by spaces. This can 2207Some operators can be automatically surrounded by spaces. This can
2146happen when the operator is typed, or later when the line is indented. 2208happen when the operator is typed, or later when the line is indented.
2147IDLWAVE can pad the operators @samp{&}, @samp{<}, @samp{>}, @samp{,}, 2209IDLWAVE can pad the operators @samp{<}, @samp{>}, @samp{,}, @samp{=},
2148@samp{=}, and @samp{->}, but this feature is turned off by default. If 2210and @samp{->}, as well as the modified assignment operators
2149you want to turn it on, customize the variables 2211(@samp{AND=}, @samp{OR=}, etc.). This feature is turned off by default.
2150@code{idlwave-surround-by-blank} and @code{idlwave-do-actions}. You can 2212If you want to turn it on, customize the variables
2151also define similar actions for other operators by using the function 2213@code{idlwave-surround-by-blank} and @code{idlwave-do-actions} and turn
2152@code{idlwave-action-and-binding} in the mode hook. For example, to 2214both on. You can also define similar actions for other operators by
2153enforce space padding of the @samp{+} and @samp{*} operators, try this 2215using the function @code{idlwave-action-and-binding} in the mode hook.
2154in @file{.emacs} 2216For example, to enforce space padding of the @samp{+} and @samp{*}
2217operators (outside of strings and comments, of course), try this in
2218@file{.emacs}
2155 2219
2156@lisp 2220@lisp
2157(add-hook 'idlwave-mode-hook 2221(add-hook 'idlwave-mode-hook
@@ -2161,14 +2225,26 @@ in @file{.emacs}
2161 (idlwave-action-and-binding "+" '(idlwave-surround 1 1)))) 2225 (idlwave-action-and-binding "+" '(idlwave-surround 1 1))))
2162@end lisp 2226@end lisp
2163 2227
2228Note that the modified assignment operators which begin with a word
2229(@samp{AND=}, @samp{OR=}, @samp{NOT=}, etc.) require a leading space to
2230be recognized (e.g @code{vAND=4} would be intepreted as a variable
2231@code{vAND}). Also note that, since e.g., @code{>} and @code{>=} are
2232both valid operators, it is impossible to surround both by blanks while
2233they are being typed. Similarly with @code{&} and @code{&&}. For
2234these, a compromise is made: the padding is placed on the left, and if
2235the longer operator is keyed in, on the right as well (otherwise you
2236must insert spaces to pad right yourself, or press simply press Tab to
2237repad everything if @code{idlwave-do-actions} is on).
2238
2164@defopt idlwave-surround-by-blank (@code{nil}) 2239@defopt idlwave-surround-by-blank (@code{nil})
2165Non-@code{nil} means enable @code{idlwave-surround}. If non-@code{nil}, 2240Non-@code{nil} means enable @code{idlwave-surround}. If non-@code{nil},
2166@samp{=}, @samp{<}, @samp{>}, @samp{&}, @samp{,}, @samp{->} are 2241@samp{=}, @samp{<}, @samp{>}, @samp{&}, @samp{,}, @samp{->}, and the
2242modified assignment operators (@samp{AND=}, @samp{OR=}, etc.) are
2167surrounded with spaces by @code{idlwave-surround}. 2243surrounded with spaces by @code{idlwave-surround}.
2168@end defopt 2244@end defopt
2169 2245
2170@defopt idlwave-pad-keyword (@code{t}) 2246@defopt idlwave-pad-keyword (@code{t})
2171Non-@code{nil} means pad @samp{=} for keywords like assignments. 2247Non-@code{nil} means space-pad the @samp{=} in keyword assignments.
2172@end defopt 2248@end defopt
2173 2249
2174@node Case Changes, , Padding Operators, Actions 2250@node Case Changes, , Padding Operators, Actions
@@ -2328,9 +2404,14 @@ Normal hook. Executed when a buffer is put into @code{idlwave-mode}.
2328Normal hook. Executed when @file{idlwave.el} is loaded. 2404Normal hook. Executed when @file{idlwave.el} is loaded.
2329@end defopt 2405@end defopt
2330 2406
2407@ifset PARTOFEMACS
2408@node The IDLWAVE Shell, Acknowledgements, The IDLWAVE Major Mode, Top
2409@end ifset
2331 2410
2411@ifclear PARTOFEMACS
2412@node The IDLWAVE Shell, Installation, The IDLWAVE Major Mode, Top
2413@end ifclear
2332 2414
2333@node The IDLWAVE Shell, Acknowledgements, The IDLWAVE Major Mode, Top
2334@chapter The IDLWAVE Shell 2415@chapter The IDLWAVE Shell
2335@cindex IDLWAVE shell 2416@cindex IDLWAVE shell
2336@cindex Major mode, @code{idlwave-shell-mode} 2417@cindex Major mode, @code{idlwave-shell-mode}
@@ -2346,11 +2427,9 @@ IDLWAVE major mode in buffers. It can be used to work with IDL
2346interactively, to compile and run IDL programs in Emacs buffers and to 2427interactively, to compile and run IDL programs in Emacs buffers and to
2347debug these programs. The IDLWAVE shell is built on @file{comint}, an 2428debug these programs. The IDLWAVE shell is built on @file{comint}, an
2348Emacs packages which handles the communication with the IDL program. 2429Emacs packages which handles the communication with the IDL program.
2349Unfortunately IDL for Windows does not have command-prompt versions 2430Unfortunately, IDL for Windows does not have command-prompt versions and
2350and thus do not allow the interaction with Emacs@footnote{Please 2431thus do not allow the interaction with Emacs --- so the IDLWAVE shell
2351inform the maintainer if you come up with a way to make the IDLWAVE 2432currently only works under Unix and MacOSX.
2352shell work on these systems.} --- so the IDLWAVE shell currently only
2353works under Unix and MacOSX.
2354 2433
2355@menu 2434@menu
2356* Starting the Shell:: How to launch IDL as a subprocess 2435* Starting the Shell:: How to launch IDL as a subprocess
@@ -2448,6 +2527,11 @@ Non-@code{nil} means IDLWAVE should use a special frame to display the
2448shell buffer. 2527shell buffer.
2449@end defopt 2528@end defopt
2450 2529
2530@defopt idlwave-shell-use-dedicated-window (@code{nil})
2531Non-@code{nil} means use a dedicated window for the shell, taking care
2532not it replace it with other buffers.
2533@end defopt
2534
2451@defopt idlwave-shell-frame-parameters 2535@defopt idlwave-shell-frame-parameters
2452The frame parameters for a dedicated idlwave-shell frame. 2536The frame parameters for a dedicated idlwave-shell frame.
2453@end defopt 2537@end defopt
@@ -2539,6 +2623,9 @@ keywords, system variables, system variable tags etc.
2539(@code{idlwave-update-routine-info}) 2623(@code{idlwave-update-routine-info})
2540@item @kbd{C-c C-v} 2624@item @kbd{C-c C-v}
2541@tab Find the source file of a routine (@code{idlwave-find-module}) 2625@tab Find the source file of a routine (@code{idlwave-find-module})
2626@item @kbd{C-c C-t}
2627@tab Find the source file of a routine in the currently visited file
2628(@code{idlwave-find-module-this-file}).
2542@item @kbd{C-c =} 2629@item @kbd{C-c =}
2543@tab Compile a library routine (@code{idlwave-resolve}) 2630@tab Compile a library routine (@code{idlwave-resolve})
2544@end multitable 2631@end multitable
@@ -2760,16 +2847,20 @@ C-a} (@code{idlwave-clear-all-bp}). Breakpoints can also be disabled
2760and re-enabled: @kbd{C-c C-d C-\} 2847and re-enabled: @kbd{C-c C-d C-\}
2761(@code{idlwave-shell-toggle-enable-current-bp}). 2848(@code{idlwave-shell-toggle-enable-current-bp}).
2762 2849
2763 2850Breakpoint lines are highlighted or indicated with an icon in the source
2764Breakpoint lines are highlighted or indicated with an icon in the 2851code (different icons for conditional, after, and other break types).
2765source code (different icons for conditional, after, and other break 2852Disabled breakpoints are @emph{grayed out} by default. Note that IDL
2766types). Disabled breakpoints are @emph{grayed out} by default. Note 2853places breakpoints as close as possible on or after the line you
2767that IDL places breakpoints as close as possible on or after the line 2854specify. IDLWAVE queries the shell for the actual breakpoint location
2768you specify. IDLWAVE queries the shell for the actual breakpoint 2855which was set, so the exact line you specify may not be marked. You can
2769location which was set, so the exact line you specify may not be 2856re-sync the breakpoint list and update the display at any time (e.g., if
2770marked. You can re-sync the breakpoint list and display at any time 2857you add or remove some on the command line) using @kbd{C-c C-d C-l}.
2771(e.g., if you add or remove some on the command line) using @kbd{C-c 2858
2772C-d C-l}. 2859In recent IDLWAVE versions, the breakpoint line is highlighted when the
2860mouse is moved over it, and a tooltip pops up describing the break
2861details. @kbd{Mouse-3} on the breakpoint line pops up a menu of
2862breakpoint actions, including clearing, disabling, and adding or
2863changing break conditions or ``after'' break count.
2773 2864
2774Once the program has stopped somewhere, you can step through it. The 2865Once the program has stopped somewhere, you can step through it. The
2775most important stepping commands are @kbd{C-c C-d C-s} to execute one 2866most important stepping commands are @kbd{C-c C-d C-s} to execute one
@@ -2785,7 +2876,7 @@ breakpoint and stepping commands:
2785@item @kbd{C-c C-d C-b} 2876@item @kbd{C-c C-d C-b}
2786@tab Set breakpoint (@code{idlwave-shell-break-here}) 2877@tab Set breakpoint (@code{idlwave-shell-break-here})
2787@item @kbd{C-c C-d C-i} 2878@item @kbd{C-c C-d C-i}
2788@tab Set breakpoint in function named here (@code{idlwave-shell-break-in}) 2879@tab Set breakpoint in module named here (@code{idlwave-shell-break-in})
2789@item @kbd{C-c C-d C-d} 2880@item @kbd{C-c C-d C-d}
2790@tab Clear current breakpoint (@code{idlwave-shell-clear-current-bp}) 2881@tab Clear current breakpoint (@code{idlwave-shell-clear-current-bp})
2791@item @kbd{C-c C-d C-a} 2882@item @kbd{C-c C-d C-a}
@@ -2821,7 +2912,14 @@ breakpoint and stepping commands:
2821@end multitable 2912@end multitable
2822 2913
2823All of these commands have equivalents in Electric Debug Mode, which 2914All of these commands have equivalents in Electric Debug Mode, which
2824provides faster access (@pxref{Electric Debug Mode}). 2915provides faster single-key access (@pxref{Electric Debug Mode}).
2916
2917The line where IDL is currently stopped, at breakpoints, halts, and
2918errors, etc., is marked with a color overlay or arrow, depending on the
2919setting in @code{idlwave-shell-mark-stop-line}. If an overlay face is
2920used to mark the stop line (as it is by default), when stepping through
2921code, the face color is temporarily changed to gray, until IDL completes
2922the next command and moves to the new line.
2825 2923
2826@defopt idlwave-shell-mark-breakpoints (@code{t}) 2924@defopt idlwave-shell-mark-breakpoints (@code{t})
2827Non-@code{nil} means mark breakpoints in the source file buffers. The 2925Non-@code{nil} means mark breakpoints in the source file buffers. The
@@ -2834,6 +2932,28 @@ The face for breakpoint lines in the source code if
2834@code{idlwave-shell-mark-breakpoints} has the value @code{face}. 2932@code{idlwave-shell-mark-breakpoints} has the value @code{face}.
2835@end defopt 2933@end defopt
2836 2934
2935@defopt idlwave-shell-breakpoint-popup-menu (@code{t})
2936Whether to pop-up a menu and present a tooltip description on
2937breakpoint lines.
2938@end defopt
2939
2940@defopt idlwave-shell-mark-stop-line (@code{t})
2941Non-@code{nil} means mark the source code line where IDL is currently
2942stopped. The value specifies the preferred method. Valid values are
2943@code{nil}, @code{t}, @code{arrow}, and @code{face}.
2944@end defopt
2945
2946@defopt idlwave-shell-overlay-arrow (@code{">"})
2947The overlay arrow to display at source lines where execution halts, if
2948configured in @code{idlwave-shell-mark-stop-line}.
2949@end defopt
2950
2951@defopt idlwave-shell-stop-line-face
2952The face which highlights the source line where IDL is stopped, if
2953configured in @code{idlwave-shell-mark-stop-line}.
2954@end defopt
2955
2956
2837@node Compiling Programs, Walking the Calling Stack, Breakpoints and Stepping, Debugging IDL Programs 2957@node Compiling Programs, Walking the Calling Stack, Breakpoints and Stepping, Debugging IDL Programs
2838@subsection Compiling Programs 2958@subsection Compiling Programs
2839@cindex Compiling programs 2959@cindex Compiling programs
@@ -2860,22 +2980,6 @@ prefix argument: @kbd{C-u C-c C-d C-y}. If no default command line has
2860been set (or you give two prefix arguments), the last command on the 2980been set (or you give two prefix arguments), the last command on the
2861@code{comint} input history is sent. 2981@code{comint} input history is sent.
2862 2982
2863@defopt idlwave-shell-mark-stop-line (@code{t})
2864Non-@code{nil} means mark the source code line where IDL is currently
2865stopped. The value specifies the preferred method. Valid values are
2866@code{nil}, @code{t}, @code{arrow}, and @code{face}.
2867@end defopt
2868
2869@defopt idlwave-shell-overlay-arrow (@code{">"})
2870The overlay arrow to display at source lines where execution halts, if
2871configured in @code{idlwave-shell-mark-stop-line}.
2872@end defopt
2873
2874@defopt idlwave-shell-stop-line-face
2875The face which highlights the source line where IDL is stopped, if
2876configured in @code{idlwave-shell-mark-stop-line}.
2877@end defopt
2878
2879@node Walking the Calling Stack, Electric Debug Mode, Compiling Programs, Debugging IDL Programs 2983@node Walking the Calling Stack, Electric Debug Mode, Compiling Programs, Debugging IDL Programs
2880@subsection Walking the Calling Stack 2984@subsection Walking the Calling Stack
2881@cindex Calling stack, walking 2985@cindex Calling stack, walking
@@ -2895,26 +2999,27 @@ automatically return to the current level. @xref{Examining Variables},
2895for information how to examine the value of variables and expressions on 2999for information how to examine the value of variables and expressions on
2896higher calling stack levels. 3000higher calling stack levels.
2897 3001
2898@ifhtml 3002@html
2899<A NAME="EDEBUG"></A> 3003<A NAME="EDEBUG"></A>
2900@end ifhtml 3004@end html
2901@node Electric Debug Mode, , Walking the Calling Stack, Debugging IDL Programs 3005@node Electric Debug Mode, , Walking the Calling Stack, Debugging IDL Programs
2902@subsection Electric Debug Mode 3006@subsection Electric Debug Mode
2903@cindex Electric Debug Mode 3007@cindex Electric Debug Mode
2904@cindex @samp{*Debugging*} 3008@cindex @samp{*Debugging*}
2905 3009
2906Even with a convenient debug key prefix enabled, repetitive stepping, 3010Even with a convenient debug key prefix enabled, repetitive stepping,
2907variable examination (@pxref{Examining Variables}), and other 3011variable examination (@pxref{Examining Variables}), and other debugging
2908debugging activities can be awkward and slow using commands which 3012activities can be awkward and slow using commands which require multiple
2909require multiple keystrokes. Luckily, there's a better way, inspired 3013keystrokes. Luckily, there's a better way, inspired by the lisp e-debug
2910by the lisp e-debug mode, and available through the @emph{Electric 3014mode, and available through the @emph{Electric Debug Mode}. By default,
2911Debug Mode}. By default, as soon as a breakpoint is hit, this minor 3015as soon as a breakpoint is hit, this minor mode is enabled. The buffer
2912mode is enabled. The buffer showing the line where execution has 3016showing the line where execution has halted is switched to Electric
2913halted is switched to Electric Debug Mode. This mode is visible as 3017Debug Mode. This mode is visible as @samp{*Debugging*} in the mode
2914@samp{*Debugging*} in the mode line, and a different face (violet by 3018line, and a different face (violet by default, if color is available)
2915default, where color is available) for the line stopped at point. The 3019for the line stopped at point. The buffer is made read-only and
2916buffer is made read-only and single-character bindings for the most 3020single-character bindings for the most commonly used debugging commands
2917commonly used debugging commands are enabled: 3021are enabled. These character commands (a list of which is available
3022with @kbd{C-?}) are:
2918 3023
2919@multitable @columnfractions .2 .8 3024@multitable @columnfractions .2 .8
2920@item @kbd{a} 3025@item @kbd{a}
@@ -2923,10 +3028,12 @@ commonly used debugging commands are enabled:
2923@tab Set breakpoint, @kbd{C-u b} for a conditional break, @kbd{C-n b} for nth hit (@code{idlwave-shell-break-here}) 3028@tab Set breakpoint, @kbd{C-u b} for a conditional break, @kbd{C-n b} for nth hit (@code{idlwave-shell-break-here})
2924@item @kbd{d} 3029@item @kbd{d}
2925@tab Clear current breakpoint (@code{idlwave-shell-clear-current-bp}) 3030@tab Clear current breakpoint (@code{idlwave-shell-clear-current-bp})
3031@item @kbd{e}
3032@tab Prompt for expression to print (@code{idlwave-shell-clear-current-bp}).
2926@item @kbd{h} 3033@item @kbd{h}
2927@tab Continue to the line at cursor position (@code{idlwave-shell-to-here}) 3034@tab Continue to the line at cursor position (@code{idlwave-shell-to-here})
2928@item @kbd{i} 3035@item @kbd{i}
2929@tab Set breakpoint in function named here (@code{idlwave-shell-break-in}) 3036@tab Set breakpoint in module named here (@code{idlwave-shell-break-in})
2930@item @kbd{[} 3037@item @kbd{[}
2931@tab Go to the previous breakpoint in the file (@code{idlwave-shell-goto-previous-bp}) 3038@tab Go to the previous breakpoint in the file (@code{idlwave-shell-goto-previous-bp})
2932@item @kbd{]} 3039@item @kbd{]}
@@ -2978,7 +3085,7 @@ with shortcut of examine type.
2978 3085
2979Most single-character electric debug bindings use the final keystroke 3086Most single-character electric debug bindings use the final keystroke
2980of the equivalent multiple key commands (which are of course also 3087of the equivalent multiple key commands (which are of course also
2981still available), but some differ (e.g. @kbd{t},@kbd{q},@kbd{x}). 3088still available), but some differ (e.g. @kbd{e},@kbd{t},@kbd{q},@kbd{x}).
2982Some have additional convenience bindings (like @kbd{@key{SPACE}} for 3089Some have additional convenience bindings (like @kbd{@key{SPACE}} for
2983stepping). All prefix and other argument options described in this 3090stepping). All prefix and other argument options described in this
2984section for the commands invoked by electric debug bindings are still 3091section for the commands invoked by electric debug bindings are still
@@ -3014,15 +3121,24 @@ execution, or retall). In addition to @code{nil} for never, and
3014halts. 3121halts.
3015@end defopt 3122@end defopt
3016 3123
3124@defopt idlwave-shell-electric-stop-color (Violet)
3125Default color of the stopped line overlay when in electric debug mode.
3126@end defopt
3127
3128@defopt idlwave-shell-electric-stop-line-face
3129The face to use for the stopped line. Defaults to a face similar to the
3130modeline, with color @code{idlwave-shell-electric-stop-color}.
3131@end defopt
3132
3017@defopt idlwave-shell-electric-zap-to-file (@code{t}) 3133@defopt idlwave-shell-electric-zap-to-file (@code{t})
3018If set, when entering electric debug mode, select the window displaying 3134If set, when entering electric debug mode, select the window displaying
3019the file where point is stopped. This takes point away from the shell 3135the file where point is stopped. This takes point away from the shell
3020window, but is useful for immediate stepping, etc. 3136window, but is useful for immediate stepping, etc.
3021@end defopt 3137@end defopt
3022 3138
3023@ifhtml 3139@html
3024<A NAME="EXAMINE"></A> 3140<A NAME="EXAMINE"></A>
3025@end ifhtml 3141@end html
3026@node Examining Variables, Custom Expression Examination, Debugging IDL Programs, The IDLWAVE Shell 3142@node Examining Variables, Custom Expression Examination, Debugging IDL Programs, The IDLWAVE Shell
3027@section Examining Variables 3143@section Examining Variables
3028@cindex @code{PRINT} expressions 3144@cindex @code{PRINT} expressions
@@ -3033,15 +3149,15 @@ window, but is useful for immediate stepping, etc.
3033@cindex Mouse binding to print expressions 3149@cindex Mouse binding to print expressions
3034 3150
3035@kindex C-c C-d C-p 3151@kindex C-c C-d C-p
3036Do you find yourself repeatedly typing, 3152Do you find yourself repeatedly typing, e.g. @code{print,n_elements(x)},
3037e.g. @code{print,n_elements(x)}, and similar statements to remind 3153and similar statements to remind yourself of the
3038yourself of the type/size/structure/value/etc. of variables and 3154type/size/structure/value/etc. of variables and expressions in your code
3039expressions in your code or at the command line? IDLWAVE has a suite 3155or at the command line? IDLWAVE has a suite of special commands to
3040of special commands to automate these types of variable or expression 3156automate these types of variable or expression examinations. They work
3041examinations. They work by sending statements to the shell formatted 3157by sending statements to the shell formatted to include the indicated
3042to include the indicated expression. 3158expression, and can be accessed in several ways.
3043 3159
3044These examination commands can be used in the shell or buffer at any 3160These @emph{examine} commands can be used in the shell or buffer at any
3045time (as long as the shell is running), and are very useful when 3161time (as long as the shell is running), and are very useful when
3046execution is stopped in a buffer due to a triggered breakpoint or error, 3162execution is stopped in a buffer due to a triggered breakpoint or error,
3047or while composing a long command in the IDLWAVE shell. In the latter 3163or while composing a long command in the IDLWAVE shell. In the latter
@@ -3055,19 +3171,23 @@ variable, number, or function you see can be examined.
3055If the variable @code{idlwave-shell-separate-examine-output} is 3171If the variable @code{idlwave-shell-separate-examine-output} is
3056non-@code{nil} (the default), all examine output will be sent to a 3172non-@code{nil} (the default), all examine output will be sent to a
3057special @file{*Examine*} buffer, rather than the shell. The output of 3173special @file{*Examine*} buffer, rather than the shell. The output of
3058prior examine commands is saved. In this buffer @key{c} clears the 3174prior examine commands is saved in this buffer. In this buffer @key{c}
3059contents, and @key{q} hides the buffer. 3175clears the contents, and @key{q} hides the buffer.
3060 3176
3061The two most basic examine commands are bound to @kbd{C-c C-d C-p}, to 3177The two most basic examine commands are bound to @kbd{C-c C-d C-p}, to
3062print the expression at point, and @kbd{C-c C-d ?}, to invoke help on 3178print the expression at point, and @kbd{C-c C-d ?}, to invoke help on
3063this expression@footnote{Available as @kbd{p} and @kbd{?} in Electric 3179this expression@footnote{Available as @kbd{p} and @kbd{?} in Electric
3064Debug Mode (@pxref{Electric Debug Mode})}. The expression at point is 3180Debug Mode (@pxref{Electric Debug Mode})}. The expression at point is
3065either an array expression or a function call, or the contents of a 3181either an array expression or a function call, or the contents of a pair
3066pair of parentheses. The selected expression is highlighted, and 3182of parentheses. The chosen expression is highlighted, and
3067simultaneously the resulting output is highlighted in the shell. 3183simultaneously the resulting output is highlighted in the shell or
3068Calling the above commands with a prefix argument will use the current 3184separate output buffer. Calling the above commands with a prefix
3069region as expression instead of using the one at point. Two prefix 3185argument will use the current region as expression instead of using the
3070arguments (@kbd{C-u C-u C-c C-d C-p}) will prompt for an expression. 3186one at point. which can be useful for examining complicated, multi-line
3187expressions. Two prefix arguments (@kbd{C-u C-u C-c C-d C-p}) will
3188prompt for an expression to print directly. By default, when invoking
3189print, only an initial portion of long arrays will be printed, up to
3190@code{idlwave-shell-max-print-length}.
3071 3191
3072For added speed and convenience, there are mouse bindings which allow 3192For added speed and convenience, there are mouse bindings which allow
3073you to click on expressions and examine their values. Use 3193you to click on expressions and examine their values. Use
@@ -3121,6 +3241,11 @@ If non-@code{nil}, re-direct the output of examine commands to a special
3121@file{*Examine*} buffer, instead of in the shell itself. 3241@file{*Examine*} buffer, instead of in the shell itself.
3122@end defopt 3242@end defopt
3123 3243
3244@defopt idlwave-shell-max-print-length (200)
3245The maximum number of leading array entries to print, when examining
3246array expressions.
3247@end defopt
3248
3124@node Custom Expression Examination, , Examining Variables, The IDLWAVE Shell 3249@node Custom Expression Examination, , Examining Variables, The IDLWAVE Shell
3125@section Custom Expression Examination 3250@section Custom Expression Examination
3126@cindex Expressions, custom examination 3251@cindex Expressions, custom examination
@@ -3192,7 +3317,68 @@ examine command strings to send, after all instances of @code{___}
3192@end defopt 3317@end defopt
3193 3318
3194 3319
3320@ifclear PARTOFEMACS
3321@node Installation, Acknowledgements, The IDLWAVE Shell, Top
3322@chapter Installation
3323@cindex Installation
3324
3325@menu
3326* Installing IDLWAVE:: How to install the distribution
3327* Installing Online Help:: Where to get the additional files needed
3328@end menu
3329
3330@node Installing IDLWAVE, Installing Online Help, Installation, Installation
3331@section Installing IDLWAVE
3332
3333@cindex FTP site
3334@cindex URL, homepage for IDLWAVE
3335@cindex Homepage for IDLWAVE
3336@cindex IDLWAVE, homepage
3337@cindex XEmacs package IDLWAVE
3338@cindex Emacs, distributed with IDLWAVE
3339IDLWAVE is part of Emacs 21.1 and later. It is also an XEmacs package
3340and can be installed from
3341@uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,the XEmacs ftp site}
3342with the normal package management system on XEmacs 21. You can also
3343download IDLWAVE and install it yourself from
3344@uref{@value{IDLWAVEHOMEPAGE}, the maintainers webpage}. Follow the
3345instructions in the INSTALL file.
3346
3347@node Installing Online Help, , Installing IDLWAVE, Installation
3348@section Installing Online Help
3349@cindex Installing online help
3350@cindex Online Help, Installation
3351
3352Starting with IDL v6.2, all necessary online help files and routine
3353information are distributed directly with IDL. Nothing additional is
3354required.
3355
3356For version of IDL prior to 6.2 (and IDLWAVE prior to version 6.0), if
3357you want to use the online help display, an additional set of files
3358(HTML versions of the IDL documentation) must be installed. These files
3359can also be downloaded from @uref{@value{IDLWAVEHOMEPAGE}, the
3360maintainers webpage}. You need to place the files somewhere on your
3361system and tell IDLWAVE where they are with:
3362
3363@lisp
3364; e.g. /usr/local/etc/
3365(setq idlwave-html-help-location "/path/to/help/dir/")
3366@end lisp
3367
3368@noindent The default location is @file{/usr/local/etc}, and if you
3369install the directory there, you do not need to set this variable. Note
3370that the help package only changes with new versions of the IDL
3371documentation, and need not be updated unless your version of IDL
3372changes. Since the help system is distributed with IDL starting at
3373version 6.2, no new help packages will be created for these versions.
3374
3375@node Acknowledgements, Sources of Routine Info, Installation, Top
3376@end ifclear
3377
3378@ifset PARTOFEMACS
3195@node Acknowledgements, Sources of Routine Info, The IDLWAVE Shell, Top 3379@node Acknowledgements, Sources of Routine Info, The IDLWAVE Shell, Top
3380@end ifset
3381
3196@chapter Acknowledgements 3382@chapter Acknowledgements
3197@cindex Acknowledgements 3383@cindex Acknowledgements
3198@cindex Maintainer, of IDLWAVE 3384@cindex Maintainer, of IDLWAVE
@@ -3219,8 +3405,8 @@ manual.
3219@item 3405@item
3220@uref{mailto:jdsmith@@as.arizona.edu, @b{J.D. Smith}}, the current 3406@uref{mailto:jdsmith@@as.arizona.edu, @b{J.D. Smith}}, the current
3221maintainer, as of version 4.10, helped shape object method completion 3407maintainer, as of version 4.10, helped shape object method completion
3222and most new features introduced in versions 4.x, and added 3408and most new features introduced in versions 4.x, and introduced many
3223significant new capabilities for versions 5.x. 3409new features for IDLWAVE versions 5.x and 6.x.
3224@end itemize 3410@end itemize
3225 3411
3226@noindent 3412@noindent
@@ -3264,6 +3450,10 @@ Phil Sterne <sterne__at__dublin.llnl.gov>
3264Paul Sorenson <aardvark62__at__msn.com> 3450Paul Sorenson <aardvark62__at__msn.com>
3265@end itemize 3451@end itemize
3266 3452
3453Doug Dirks was instrumental in providing the crucial IDL XML catalog to
3454support HTML help with IDL v6.2 and later, and Ali Bahrami provided
3455scripts and documentation to interface with the IDL Assistant.
3456
3267@noindent 3457@noindent
3268Thanks to everyone! 3458Thanks to everyone!
3269 3459
@@ -3298,24 +3488,26 @@ several places:
3298 3488
3299@enumerate 3489@enumerate
3300@item 3490@item
3301@emph{Builtin routines} are defined inside IDL itself. The source 3491@emph{Builtin routines} are defined inside IDL itself. The source code
3302code of such routines is not available. 3492of such routines is not available, but instead are learned about through
3493the IDL documentation.
3303@item 3494@item
3304Routines which are @emph{part of the current program}, are defined in a 3495Routines which are @emph{part of the current program}, are defined in a
3305file explicitly compiled by the user. This file may or may not be 3496file explicitly compiled by the user. This file may or may not be
3306located on the IDL search path. 3497located on the IDL search path.
3307@item 3498@item
3308@emph{Library routines} are defined in files located on IDL's search 3499@emph{Library routines} are defined in files located on IDL's search
3309path, and will not need to be manually compiled. When a library routine 3500path. When a library routine is called for the first time, IDL will
3310is called for the first time, IDL will find the source file and compile 3501find the source file and compile it dynamically. A special sub-category
3311it dynamically. A special sub-category of library routines are the 3502of library routines are the @emph{system routines} distributed with IDL,
3312@emph{system routines} distributed with IDL, and usually available in 3503and usually available in the @file{lib} subdirectory of the IDL
3313the @file{lib} subdirectory of the IDL distribution. 3504distribution.
3314@item 3505@item
3315External routines written in other languages (like Fortran or C) can be 3506External routines written in other languages (like Fortran or C) can be
3316called with @code{CALL_EXTERNAL}, linked into IDL via @code{LINKIMAGE}, 3507called with @code{CALL_EXTERNAL}, linked into IDL via @code{LINKIMAGE},
3317or included as dynamically loaded modules (DLMs). Currently IDLWAVE 3508or included as dynamically loaded modules (DLMs). Currently IDLWAVE
3318cannot provide routine info and completion for such external routines. 3509cannot provide routine info and completion for such external routines,
3510except by querying the Shell for calling information (DLMs only).
3319@end enumerate 3511@end enumerate
3320 3512
3321@node Routine Information Sources, Catalogs, Routine Definitions, Sources of Routine Info 3513@node Routine Information Sources, Catalogs, Routine Definitions, Sources of Routine Info
@@ -3335,15 +3527,15 @@ routines on a system, IDLWAVE collects data from many sources:
3335@item 3527@item
3336It has a @emph{builtin list} with information about the routines IDL 3528It has a @emph{builtin list} with information about the routines IDL
3337ships with. IDLWAVE @value{VERSION} is distributed with a list of 3529ships with. IDLWAVE @value{VERSION} is distributed with a list of
3338@value{NSYSROUTINES} routines and @value{NSYSKEYWORDS} keywords, 3530@value{NSYSROUTINES} routines, reflecting IDL version
3339reflecting IDL version @value{IDLVERSION}. This list has been created 3531@value{IDLVERSION}. As of IDL v6.2, the routine info is distributed
3340by scanning the IDL manuals and is stored in the file 3532directly with IDL in the form of an XML catalog which IDLWAVE scans.
3341@file{idlw-rinfo.el}. @xref{Documentation Scan}, for information on 3533Formerly, this list was created by scanning the IDL manuals to produce
3342how to regenerate this file for new versions of IDL. 3534the file @file{idlw-rinfo.el}.
3343 3535
3344@item 3536@item
3345It @emph{scans} all @emph{buffers} of the current Emacs session for 3537IDLWAVE @emph{scans} all its @emph{buffers} in the current Emacs session
3346routine definitions. This is done automatically when routine 3538for routine definitions. This is done automatically when routine
3347information or completion is first requested by the user. Each new 3539information or completion is first requested by the user. Each new
3348buffer and each buffer saved after making changes is also scanned. The 3540buffer and each buffer saved after making changes is also scanned. The
3349command @kbd{C-c C-i} (@code{idlwave-update-routine-info}) can be used 3541command @kbd{C-c C-i} (@code{idlwave-update-routine-info}) can be used
@@ -3353,16 +3545,18 @@ at any time to rescan all buffers.
3353If you have an IDLWAVE-Shell running in the Emacs session, IDLWAVE will 3545If you have an IDLWAVE-Shell running in the Emacs session, IDLWAVE will
3354@emph{query the shell} for compiled routines and their arguments. This 3546@emph{query the shell} for compiled routines and their arguments. This
3355happens automatically when routine information or completion is first 3547happens automatically when routine information or completion is first
3356requested by the user, and each time an Emacs buffer is compiled with 3548requested by the user. Each time an Emacs buffer is compiled with
3357@kbd{C-c C-d C-c}. Though rarely necessary, the command @kbd{C-c C-i} 3549@kbd{C-c C-d C-c}, the routine info for that file is queried. Though
3358(@code{idlwave-update-routine-info}) can be used to update the shell 3550rarely necessary, the command @kbd{C-c C-i}
3359routine data. 3551(@code{idlwave-update-routine-info}) can be used to explicitly update
3552the shell routine data.
3360 3553
3361@item 3554@item
3362Many popular libraries are distributed with routine information 3555Many popular libraries are distributed with routine information already
3363already scanned into @emph{library catalogs} (@pxref{Library 3556scanned into @emph{library catalogs} (@pxref{Library Catalogs}). These
3364Catalogs}). These per-directory catalog files can also be built by 3557per-directory catalog files can also be built by the user with the
3365the user with the supplied @file{idlwave_catalog} tool. 3558supplied @file{idlwave_catalog} tool. They are automatically discovered
3559by IDLWAVE.
3366 3560
3367@item 3561@item
3368IDLWAVE can scan selected directories of source files and store the 3562IDLWAVE can scan selected directories of source files and store the
@@ -3371,9 +3565,10 @@ automatically loaded just like @file{idlw-rinfo.el}. @xref{User
3371Catalog}, for information on how to scan files in this way. 3565Catalog}, for information on how to scan files in this way.
3372@end enumerate 3566@end enumerate
3373 3567
3374Loading routine and catalog information can be a time consuming process, 3568Loading all the routine and catalog information can be a time consuming
3375especially over slow networks. Depending on the system and network 3569process, especially over slow networks. Depending on the system and
3376configuration it could take up to 30 seconds. In order to minimize the 3570network configuration it could take up to 30 seconds (though locally on
3571fast systems is usually only a few seconds). In order to minimize the
3377wait time upon your first completion or routine info command in a 3572wait time upon your first completion or routine info command in a
3378session, IDLWAVE uses Emacs idle time to do the initialization in six 3573session, IDLWAVE uses Emacs idle time to do the initialization in six
3379steps, yielding to user input in between. If this gets into your way, 3574steps, yielding to user input in between. If this gets into your way,
@@ -3399,9 +3594,9 @@ Non-@code{nil} means query the shell for info about compiled routines.
3399Controls under what circumstances routine info is updated automatically. 3594Controls under what circumstances routine info is updated automatically.
3400@end defopt 3595@end defopt
3401 3596
3402@ifhtml 3597@html
3403<A NAME="CATALOGS"></A> 3598<A NAME="CATALOGS"></A>
3404@end ifhtml 3599@end html
3405@node Catalogs, Load-Path Shadows, Routine Information Sources, Sources of Routine Info 3600@node Catalogs, Load-Path Shadows, Routine Information Sources, Sources of Routine Info
3406@appendixsec Catalogs 3601@appendixsec Catalogs
3407@cindex Catalogs 3602@cindex Catalogs
@@ -3426,7 +3621,12 @@ Info}). On systems with no shell from which to discover the path
3426information (e.g. Windows), a library path must be specified in 3621information (e.g. Windows), a library path must be specified in
3427@code{idlwave-library-path} to allow library catalogs to be located, and 3622@code{idlwave-library-path} to allow library catalogs to be located, and
3428to setup directories for user catalog scan (@pxref{User Catalog} for 3623to setup directories for user catalog scan (@pxref{User Catalog} for
3429more on this variable). 3624more on this variable). Note that, before the shell is running, IDLWAVE
3625can only know about the IDL search path by consulting the file pointed
3626to by @code{idlwave-path-file} (@file{~/.idlwave/idlpath.el}, by
3627default). If @code{idlwave-auto-write-path} is enabled (which is the
3628default), the paths are written out whenever the IDLWAVE shell is
3629started.
3430 3630
3431@defopt idlwave-auto-write-path (@code{t}) 3631@defopt idlwave-auto-write-path (@code{t})
3432Write out information on the !PATH and !DIR paths from IDL automatically 3632Write out information on the !PATH and !DIR paths from IDL automatically
@@ -3435,17 +3635,20 @@ to locate library catalogs.
3435@end defopt 3635@end defopt
3436 3636
3437@defopt idlwave-library-path 3637@defopt idlwave-library-path
3438IDL library path for Windows and MacOS. Not needed under Unix/MacOSX. 3638IDL library path for Windows and MacOS. Under Unix/MacOSX, will be
3639obtained from the Shell when run.
3439@end defopt 3640@end defopt
3440 3641
3441@defopt idlwave-system-directory 3642@defopt idlwave-system-directory
3442The IDL system directory for Windows and MacOS. Not needed under 3643The IDL system directory for Windows and MacOS. Also needed for
3443Unix/MacOSX (obtained from the Shell). 3644locating HTML help and the IDL Assistant for IDL v6.2 and later. Under
3645Unix/MacOSX, will be obtained from the Shell and recorded, if run.
3444@end defopt 3646@end defopt
3445 3647
3446@defopt idlwave-config-directory (@file{~/.idlwave}) 3648@defopt idlwave-config-directory (@file{~/.idlwave})
3447Default path where IDLWAVE saves configuration information and any 3649Default path where IDLWAVE saves configuration information, a user
3448user catalog. 3650catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and
3651later).
3449@end defopt 3652@end defopt
3450 3653
3451@menu 3654@menu
@@ -3453,23 +3656,23 @@ user catalog.
3453* User Catalog:: 3656* User Catalog::
3454@end menu 3657@end menu
3455 3658
3456@ifhtml 3659@html
3457<A NAME="LIBRARY_CATALOGS"></A> 3660<A NAME="LIBRARY_CATALOGS"></A>
3458@end ifhtml 3661@end html
3459@node Library Catalogs, User Catalog, Catalogs, Catalogs 3662@node Library Catalogs, User Catalog, Catalogs, Catalogs
3460@appendixsubsec Library Catalogs 3663@appendixsubsec Library Catalogs
3461@cindex @file{.idlwave_catalog} 3664@cindex @file{.idlwave_catalog}
3462@cindex Library catalogs 3665@cindex Library catalogs
3463@cindex @code{idlwave_catalog} 3666@cindex @code{idlwave_catalog}
3464 3667
3465Library catalogs are files named @file{.idlwave_catalog} stored in 3668Library catalogs consist of files named @file{.idlwave_catalog} stored
3466directories containing @code{.pro} routine files. They are discovered 3669in directories containing @code{.pro} routine files. They are
3467on the IDL search path and loaded automatically when routine information 3670discovered on the IDL search path and loaded automatically when routine
3468is read. Each catalog file documents the routines found in that 3671information is read. Each catalog file documents the routines found in
3469directory --- one catalog per directory. Every catalog has a library 3672that directory --- one catalog per directory. Every catalog has a
3470name associated with it (e.g. @emph{AstroLib}). This name will be shown 3673library name associated with it (e.g. @emph{AstroLib}). This name will
3471briefly when the catalog is found, and in the routine info of routines 3674be shown briefly when the catalog is found, and in the routine info of
3472it documents. 3675routines it documents.
3473 3676
3474Many popular libraries of routines are shipped with IDLWAVE catalog 3677Many popular libraries of routines are shipped with IDLWAVE catalog
3475files by default, and so will be automatically discovered. Library 3678files by default, and so will be automatically discovered. Library
@@ -3482,7 +3685,8 @@ scanned catalog). Since all catalogs are independent, they can be
3482re-scanned automatically to gather updates, e.g. in a @file{cron} job. 3685re-scanned automatically to gather updates, e.g. in a @file{cron} job.
3483Scanning is much faster than with the built-in user catalog method. One 3686Scanning is much faster than with the built-in user catalog method. One
3484minor disadvantage: the entire IDL search path is scanned for catalog 3687minor disadvantage: the entire IDL search path is scanned for catalog
3485files every time IDLWAVE starts up, which might be slow over a network. 3688files every time IDLWAVE starts up, which might be slow if accessing IDL
3689routines over a slow network.
3486 3690
3487A Perl tool to create library catalogs is distributed with IDLWAVE: 3691A Perl tool to create library catalogs is distributed with IDLWAVE:
3488@code{idlwave_catalog}. It can be called quite simply: 3692@code{idlwave_catalog}. It can be called quite simply:
@@ -3490,9 +3694,10 @@ A Perl tool to create library catalogs is distributed with IDLWAVE:
3490idlwave_catalog MyLib 3694idlwave_catalog MyLib
3491@end example 3695@end example
3492 3696
3493@noindent This would scan all directories recursively beneath the current and 3697@noindent This will scan all directories recursively beneath the current and
3494populate them with @file{.idlwave_catalog} files, tagging the routines 3698populate them with @file{.idlwave_catalog} files, tagging the routines
3495found with the name library ``MyLib''. The full usage information: 3699found there with the name library ``MyLib''. The full usage
3700information:
3496 3701
3497@example 3702@example
3498Usage: idlwave_catalog [-l] [-v] [-d] [-s] [-f] [-h] libname 3703Usage: idlwave_catalog [-l] [-v] [-d] [-s] [-f] [-h] libname
@@ -3514,8 +3719,8 @@ info update using a single prefix to @code{idlwave-update-routine-info}:
3514@kbd{C-u C-c C-i}. 3719@kbd{C-u C-c C-i}.
3515 3720
3516@defopt idlwave-use-library-catalogs (@code{t}) 3721@defopt idlwave-use-library-catalogs (@code{t})
3517Whether to search for and load library catalogs. Only disable if 3722Whether to search for and load library catalogs. Disable if load
3518performance is a problem and the catalogs are not needed. 3723performance is a problem and/or the catalogs are not needed.
3519@end defopt 3724@end defopt
3520 3725
3521@node User Catalog, , Library Catalogs, Catalogs 3726@node User Catalog, , Library Catalogs, Catalogs
@@ -3560,11 +3765,11 @@ leads to recursive expansion of the path, just like in IDL}:
3560(setq idlwave-system-directory "c:/RSI/IDL56/") 3765(setq idlwave-system-directory "c:/RSI/IDL56/")
3561@end lisp 3766@end lisp
3562 3767
3563@noindent Under GNU and UNIX, these values will be automatically gathered from 3768@noindent Under GNU/Linux and UNIX, these values will be automatically
3564the IDLWAVE shell. 3769gathered from the IDLWAVE shell, if run.
3565 3770
3566The command @kbd{M-x idlwave-create-user-catalog-file} (or the menu item 3771The command @kbd{M-x idlwave-create-user-catalog-file} (or the menu item
3567@samp{IDLWAVE->Routine Info->Select Catalog Directories} can then be 3772@samp{IDLWAVE->Routine Info->Select Catalog Directories}) can then be
3568used to create a user catalog. It brings up a widget in which you can 3773used to create a user catalog. It brings up a widget in which you can
3569select some or all directories on the search path. Directories which 3774select some or all directories on the search path. Directories which
3570already contain a library catalog are marked with @samp{[LIB]}, and need 3775already contain a library catalog are marked with @samp{[LIB]}, and need
@@ -3642,7 +3847,7 @@ many other reasons.
3642@cindex MacOS 3847@cindex MacOS
3643@cindex IDL variable @code{!DIR} 3848@cindex IDL variable @code{!DIR}
3644@cindex @code{!DIR}, IDL variable 3849@cindex @code{!DIR}, IDL variable
3645Users of Windows and MacOS also must set the variable 3850Users of Windows and MacOS (not X) also must set the variable
3646@code{idlwave-system-directory} to the value of the @code{!DIR} system 3851@code{idlwave-system-directory} to the value of the @code{!DIR} system
3647variable in IDL. IDLWAVE appends @file{lib} to the value of this 3852variable in IDL. IDLWAVE appends @file{lib} to the value of this
3648variable and assumes that all files found on that path are system 3853variable and assumes that all files found on that path are system
@@ -3658,21 +3863,36 @@ on the load path is routine info display (@pxref{Routine Info}).
3658@cindex Scanning the documentation 3863@cindex Scanning the documentation
3659@cindex Perl program, to create @file{idlw-rinfo.el} 3864@cindex Perl program, to create @file{idlw-rinfo.el}
3660 3865
3866@strong{Starting with version 6.2, IDL is distributed directly with HTML
3867online help, and an XML-based catalog of routine information}. This
3868makes scanning the manuals with the tool @file{get_html_rinfo}, and the
3869@file{idlw-rinfo.el} file it produced, as described here, entirely
3870unnecessary. The information is left here for users wishing to produce
3871a catalog of older IDL versions' help.
3872
3873
3661IDLWAVE derives its knowledge about system routines from the IDL 3874IDLWAVE derives its knowledge about system routines from the IDL
3662manuals. The file @file{idlw-rinfo.el} contains the routine information 3875manuals. The file @file{idlw-rinfo.el} contains the routine information
3663for the IDL system routines, and links to relevant sections of the HTML 3876for the IDL system routines, and links to relevant sections of the HTML
3664documentation. The Online Help feature of IDLWAVE requires HTML 3877documentation. The Online Help feature of IDLWAVE requires HTML
3665versions of the IDL manuals to be available. 3878versions of the IDL manuals to be available; the HTML documentation is
3879not distributed with IDLWAVE by default, but must be downloaded
3880separately@c
3881@ifclear PARTOFEMACS
3882@ from @uref{@value{IDLWAVEHOMEPAGE}, the maintainers
3883webpage}@c
3884@end ifclear
3885.
3666 3886
3667The HTML files and related images can be produced from the 3887The HTML files and related images can be produced from the
3668@file{idl.chm} HTMLHelp file distributed with IDL using the free 3888@file{idl.chm} HTMLHelp file distributed with IDL using the free
3669Microsoft HTML Help Workshop. If you are lucky, the maintainer of 3889Microsoft HTML Help Workshop. If you are lucky, the maintainer of
3670IDLWAVE will always have access to the newest version of IDL and 3890IDLWAVE will always have access to the newest version of IDL and provide
3671provide updates. The IDLWAVE distribution also contains the Perl 3891updates. The IDLWAVE distribution also contains the Perl program
3672program @file{get_html_rinfo} which constructs the 3892@file{get_html_rinfo} which constructs the @file{idlw-rinfo.el} file by
3673@file{idlw-rinfo.el} file by scanning the HTML documents produced from 3893scanning the HTML documents produced from the IDL documentation.
3674the IDL documentation. Instructions on how to use 3894Instructions on how to use @file{get_html_rinfo} are in the program
3675@file{get_html_rinfo} are in the program itself. 3895itself.
3676 3896
3677@node HTML Help Browser Tips, Configuration Examples, Sources of Routine Info, Top 3897@node HTML Help Browser Tips, Configuration Examples, Sources of Routine Info, Top
3678@appendix HTML Help Browser Tips 3898@appendix HTML Help Browser Tips
@@ -3680,39 +3900,41 @@ the IDL documentation. Instructions on how to use
3680 3900
3681There are a wide variety of possible browsers to use for displaying 3901There are a wide variety of possible browsers to use for displaying
3682the online HTML help available with IDLWAVE (starting with version 3902the online HTML help available with IDLWAVE (starting with version
36835.0). Since IDLWAVE runs on a many different system types, a single 39035.0). Since IDL v6.2, a single cross-platform HTML help browser, the
3684browser configuration is not possible, but choices abound. 3904@emph{IDL Assistant} is distributed with IDL. If this help browser is
3685 3905available, it is the preferred choice, and the default. The variable
3686Unfortunately, the HTML manuals decompiled from the original 3906@code{idlwave-help-use-assistant}, enabled by default, controls
3687source contain formatting structures which Netscape 4.x does not 3907whether this help browser is used. If you use the IDL Assistant, the
3688handle well, though they are still readable. A much better choice is 3908tips here are not relevant.
3689Mozilla, or one of the Mozilla-derived browsers such as 3909
3910Since IDLWAVE runs on a many different system types, a single browser
3911configuration is not possible, but choices abound. On many systems,
3912the default browser configured in @code{browse-url-browser-function},
3913and hence inherited by default by
3914@code{idlwave-help-browser-function}, is Netscape. Unfortunately, the
3915HTML manuals decompiled from the original source contain formatting
3916structures which Netscape 4.x does not handle well, though they are
3917still readable. A much better choice is Mozilla, or one of the
3918Mozilla-derived browsers such as
3690@uref{http://galeon.sourceforge.net/,Galeon} (GNU/Linux), 3919@uref{http://galeon.sourceforge.net/,Galeon} (GNU/Linux),
3691@uref{http://www.mozilla.org/projects/camino/,Camino} (MacOSX), or 3920@uref{http://www.mozilla.org/projects/camino/,Camino} (MacOSX), or
3692@uref{http://www.mozilla.org/projects/firebird/,Firebird} (all 3921@uref{http://www.mozilla.org/projects/firebird/,Firebird} (all
3693platforms). Newer versions of Emacs provide a browser-function choice 3922platforms). Newer versions of Emacs provide a browser-function choice
3694@code{browse-url-gnome-moz} which uses the Gnome-configured browser. 3923@code{browse-url-gnome-moz} which uses the Gnome-configured browser.
3695 3924
3696Note that the HTML files decompiled from Microsoft Help sources 3925Note that the HTML files decompiled from the help sources contain
3697contain specific references to the @samp{Symbol} font, which by default 3926specific references to the @samp{Symbol} font, which by default is not
3698is not permitted in normal encodings (it's invalid, technically). Though 3927permitted in normal encodings (it's invalid, technically). Though it
3699it only impacts a few symbols, you can trick Mozilla-based browsers into 3928only impacts a few symbols, you can trick Mozilla-based browsers into
3700recognizing @samp{Symbol} by following the directions 3929recognizing @samp{Symbol} by following the directions
3701@uref{http://hutchinson.belmont.ma.us/tth/Xfonts.html, here}. With this 3930@uref{http://hutchinson.belmont.ma.us/tth/Xfonts.html, here}. With
3702fix in place, HTML help pages look almost identical to their PDF 3931this fix in place, HTML help pages look almost identical to their PDF
3703equivalents (yet can be bookmarked, browsed as history, searched, etc.). 3932equivalents (yet can be bookmarked, browsed as history, searched,
3933etc.).
3704 3934
3705@noindent Individual platform recommendations: 3935@noindent Individual platform recommendations:
3706 3936
3707@itemize @bullet 3937@itemize @bullet
3708@item Windows: The native Microsoft HTMLHelp browser is preferred,
3709with even better results using the free
3710@uref{http://www.keyworks.net/keyhh.htm,@code{KEYHH}} program to
3711permit IDL help to be targetted to a single window. To use HTMLHelp,
3712specify @code{idlwave-help-use-hh} as @code{'hh} or @code{'keyhh}.
3713One bonus: since IDL is shipped with the @file{idl.chm} help file, you
3714don't need to download the HTML help package. @xref{Help with HTML
3715Documentation}.
3716@item Unix/MacOSX: The @uref{http://www.w3m.org,@code{w3m}} browser 3938@item Unix/MacOSX: The @uref{http://www.w3m.org,@code{w3m}} browser
3717and its associated 3939and its associated
3718@uref{http://emacs-w3m.namazu.org/,@code{emacs-w3m}} emacs mode 3940@uref{http://emacs-w3m.namazu.org/,@code{emacs-w3m}} emacs mode
@@ -3907,9 +4129,9 @@ user is King!
3907 "help,___,/STRUCTURE")))) 4129 "help,___,/STRUCTURE"))))
3908@end example 4130@end example
3909 4131
3910@ifhtml 4132@html
3911<A NAME="WIN_MAC"></A> 4133<A NAME="WIN_MAC"></A>
3912@end ifhtml 4134@end html
3913@node Windows and MacOS, Troubleshooting, Configuration Examples, Top 4135@node Windows and MacOS, Troubleshooting, Configuration Examples, Top
3914@appendix Windows and MacOS 4136@appendix Windows and MacOS
3915@cindex Windows 4137@cindex Windows
@@ -3920,40 +4142,34 @@ IDLWAVE was developed on a UNIX system. However, thanks to the
3920portability of Emacs, much of IDLWAVE does also work under different 4142portability of Emacs, much of IDLWAVE does also work under different
3921operating systems like Windows (with NTEmacs or NTXEmacs) or MacOS. 4143operating systems like Windows (with NTEmacs or NTXEmacs) or MacOS.
3922 4144
3923The only real problem is that there is no command-line 4145The only real problem is that there is no command-line version of IDL
3924version of IDL for Windows or MacOS(<=9) with which IDLWAVE can 4146for Windows or MacOS(<=9) with which IDLWAVE can interact. As a
3925interact. As a result, the IDLWAVE Shell 4147result, the IDLWAVE Shell does not work and you have to rely on IDLDE
3926does not work and you have to rely on IDLDE to run and debug your 4148to run and debug your programs. However, editing IDL source files
3927programs. However, editing IDL source files with Emacs/IDLWAVE works 4149with Emacs/IDLWAVE works with all bells and whistles, including
3928with all bells and whistles, including routine info, completion and fast 4150routine info, completion and fast online help. Only a small amount of
3929online help. Only a small amount of additional information must be 4151additional information must be specified in your @file{.emacs} file:
3930specified in your @file{.emacs} file: the path names which, on a UNIX 4152the path names which, on a UNIX system, are automatically gathered by
3931system, are automatically gathered by talking to the IDL program. 4153talking to the IDL program.
3932 4154
3933Here is an example of the additional configuration needed for a Windows 4155Here is an example of the additional configuration needed for a Windows
3934system. I am assuming that IDLWAVE has been installed in 4156system. I am assuming that IDLWAVE has been installed in
3935@w{@samp{C:\Program Files\IDLWAVE}} and that IDL is installed in 4157@w{@samp{C:\Program Files\IDLWAVE}} and that IDL is installed in
3936@w{@samp{C:\RSI\IDL55}}. 4158@w{@samp{C:\RSI\IDL62}}.
3937 4159
3938@lisp 4160@lisp
3939;; location of the lisp files (needed if IDLWAVE is not part of 4161;; location of the lisp files (only needed if IDLWAVE is not part of
3940;; the X/Emacs installation) 4162;; your default X/Emacs installation)
3941(setq load-path (cons "c:/program files/IDLWAVE" load-path)) 4163(setq load-path (cons "c:/program files/IDLWAVE" load-path))
3942 4164
3943;; The location of the IDL library files, both standard and your own. 4165;; The location of the IDL library directories, both standard, and your own.
3944;; note that the initial "+" expands the path recursively 4166;; note that the initial "+" expands the path recursively
3945(setq idlwave-library-path 4167(setq idlwave-library-path
3946 '("+c:/RSI/IDL55/lib/" "+c:/user/me/idllibs" )) 4168 '("+c:/RSI/IDL55/lib/" "+c:/path/to/my/idllibs" ))
3947 4169
3948;; location of the IDL system directory (try "print,!DIR") 4170;; location of the IDL system directory (try "print,!DIR")
3949(setq idlwave-system-directory "c:/RSI/IDL55/") 4171(setq idlwave-system-directory "c:/RSI/IDL62/")
3950
3951;; specify using the HTMLHelp documentation for online help, with the
3952;; KEYHH helper routine (Windows only)
3953(setq idlwave-use-hh 'keyhh)
3954 4172
3955;; file in which to store the user catalog info
3956(setq idlwave-user-catalog-file "c:/IDLWAVE/idlcat.el")
3957@end lisp 4173@end lisp
3958 4174
3959@noindent Furthermore, Windows sometimes tries to outsmart you --- make 4175@noindent Furthermore, Windows sometimes tries to outsmart you --- make
@@ -3971,9 +4187,9 @@ Windows users who'd like to make use of IDLWAVE's context-aware HTML
3971help can skip the browser and use the HTMLHelp functionality directly. 4187help can skip the browser and use the HTMLHelp functionality directly.
3972@xref{Help with HTML Documentation}. 4188@xref{Help with HTML Documentation}.
3973 4189
3974@ifhtml 4190@html
3975<A NAME="TROUBLE"></A> 4191<A NAME="TROUBLE"></A>
3976@end ifhtml 4192@end html
3977@node Troubleshooting, Index, Windows and MacOS, Top 4193@node Troubleshooting, Index, Windows and MacOS, Top
3978@appendix Troubleshooting 4194@appendix Troubleshooting
3979@cindex Troubleshooting 4195@cindex Troubleshooting
@@ -3996,7 +4212,7 @@ customize the variable @code{idlwave-shell-automatic-electric-debug}
3996if you prefer not to enter electric debug on breakpoints@dots{} but 4212if you prefer not to enter electric debug on breakpoints@dots{} but
3997you really should try it before you disable it! You can also 4213you really should try it before you disable it! You can also
3998customize this variable to enter debug mode when errors are 4214customize this variable to enter debug mode when errors are
3999encountered too. 4215encountered.
4000 4216
4001@item @strong{I get errors like @samp{Searching for program: no such 4217@item @strong{I get errors like @samp{Searching for program: no such
4002file or directory, idl} when attempting to start the IDL shell.} 4218file or directory, idl} when attempting to start the IDL shell.}
@@ -4020,11 +4236,11 @@ configuration files (e.g. @file{.cshrc}), but from the file
4020there, or start Emacs and IDLWAVE from the shell. 4236there, or start Emacs and IDLWAVE from the shell.
4021 4237
4022@item @strong{I get errors like @samp{Symbol's function is void: 4238@item @strong{I get errors like @samp{Symbol's function is void:
4023overlayp} when trying to start the shell in XEmacs} 4239overlayp}}
4024 4240
4025You don't have the @samp{fsf-compat} package installed, which IDLWAVE 4241You don't have the @samp{fsf-compat} package installed, which IDLWAVE
4026needs to run under XEmacs. Install it and, if necessary, insert 4242needs to run under XEmacs. Install it, or find an XEmacs distribution
4027@code{(require 'overlay)} in your @file{.emacs}. 4243which includes it by default.
4028 4244
4029@item @strong{I'm getting errors like @samp{Symbol's value as variable is void: 4245@item @strong{I'm getting errors like @samp{Symbol's value as variable is void:
4030cl-builtin-gethash} on completion or routine info.} 4246cl-builtin-gethash} on completion or routine info.}
@@ -4035,7 +4251,12 @@ in compiled lisp files. Presumably, you kept the original .elc files in
4035place, and this is the source of the error. If you recompile (or just 4251place, and this is the source of the error. If you recompile (or just
4036"make; make install") from source, it should resolve this problem. 4252"make; make install") from source, it should resolve this problem.
4037Another option is to recompile the @file{idlw*.el} files by hand using 4253Another option is to recompile the @file{idlw*.el} files by hand using
4038@kbd{M-x byte-compile-file}. 4254@kbd{M-x byte-compile-file}.
4255@ifclear PARTOFEMACS
4256Why not take the opportunity to grab the
4257latest IDLWAVE version at @uref{@value{IDLWAVEHOMEPAGE}, the
4258maintainers webpage}.
4259@end ifclear
4039 4260
4040@item @strong{@kbd{M-@key{TAB}} doesn't complete words, it switches 4261@item @strong{@kbd{M-@key{TAB}} doesn't complete words, it switches
4041windows on my desktop.} 4262windows on my desktop.}
@@ -4063,7 +4284,7 @@ with it, as long as you update the prompt it's looking for (@samp{IDL>
4063in your @file{.emacs}: 4284in your @file{.emacs}:
4064 4285
4065@lisp 4286@lisp
4066(setq idlwave-shell-prompt-pattern "^\\(ENVI\\|IDL\\)> ") 4287(setq idlwave-shell-prompt-pattern "^\r? ?\\(ENVI\\|IDL\\)> ")
4067@end lisp 4288@end lisp
4068 4289
4069@item @strong{Attempts to set breakpoints fail: no breakpoint is 4290@item @strong{Attempts to set breakpoints fail: no breakpoint is
@@ -4095,7 +4316,8 @@ accomplish this by putting the following in your @file{.emacs}:
4095@end lisp 4316@end lisp
4096 4317
4097@noindent You can check on your load-path value using @kbd{C-h v 4318@noindent You can check on your load-path value using @kbd{C-h v
4098load-path @key{RET}}. 4319load-path @key{RET}}, and @kbd{C-h m} in an IDLWAVE buffer should show
4320you the version Emacs is using.
4099 4321
4100@item @strong{IDLWAVE is screwing up the formatting of my @file{.idl} files.} 4322@item @strong{IDLWAVE is screwing up the formatting of my @file{.idl} files.}
4101 4323
@@ -4117,10 +4339,10 @@ Information Sources}). Routines in files visited in a buffer or
4117compiled in the shell should be up to date. For other routines, the 4339compiled in the shell should be up to date. For other routines, the
4118information is only as current as the most recent scan. If you have a 4340information is only as current as the most recent scan. If you have a
4119rapidly changing set of routines, and you'd like the latest routine 4341rapidly changing set of routines, and you'd like the latest routine
4120information to be available for it, one powerful technique makes use of 4342information to be available for it, one powerful technique is to make
4121the library catalog tool, @samp{idlwave_catalog}. Simply add a line to 4343use of the library catalog tool, @samp{idlwave_catalog}. Simply add a
4122your @samp{cron} file (@samp{crontab -e} will let you edit this on some 4344line to your @samp{cron} file (@samp{crontab -e} will let you edit this
4123systems), like this: 4345on some systems), like this
4124 4346
4125@example 4347@example
412645 3 * * 1-5 (cd /path/to/myidllib; /path/to/idlwave_catalog MyLib) 434845 3 * * 1-5 (cd /path/to/myidllib; /path/to/idlwave_catalog MyLib)
@@ -4130,14 +4352,15 @@ systems), like this:
4130rescan all @file{.pro} files at or below @file{/path/to/myidllib} every 4352rescan all @file{.pro} files at or below @file{/path/to/myidllib} every
4131week night at 3:45am. You can even scan site-wide libraries with this 4353week night at 3:45am. You can even scan site-wide libraries with this
4132method, and the most recent information will be available to all users. 4354method, and the most recent information will be available to all users.
4355Since the scanning is very fast, there is very little impact.
4133 4356
4134@item @strong{All the Greek-font characters in the HTML help are 4357@item @strong{All the Greek-font characters in the HTML help are
4135displayed as Latin characters!} 4358displayed as Latin characters!}
4136 4359
4137Unfortunately, the HTMLHelp files attempt to switch to 4360Unfortunately, the HTMLHelp files RSI provides attempt to switch to
4138@samp{Symbol} font to display Greek characters, which is not really an 4361@samp{Symbol} font to display Greek characters, which is not really an
4139permitted method for doing this in HTML. There is a "workaround" for 4362permitted method for doing this in HTML. There is a "workaround" for
4140many browsers: @xref{HTML Help Browser Tips}. 4363some browsers: @xref{HTML Help Browser Tips}.
4141 4364
4142@item @strong{In the shell, my long commands are truncated at 256 characters!} 4365@item @strong{In the shell, my long commands are truncated at 256 characters!}
4143 4366
@@ -4150,6 +4373,36 @@ and give you a 512 character limit. You won't be able to use
4150memory-bounded limit), but disables the processing of background 4373memory-bounded limit), but disables the processing of background
4151widget events (those with @code{/NO_BLOCK} passed to @code{XManager}). 4374widget events (those with @code{/NO_BLOCK} passed to @code{XManager}).
4152 4375
4376@item @strong{When I invoke IDL HTML help on a routine, the page which
4377is loaded is one page off, e.g. for @code{CONVERT_COORD}, I get
4378@code{CONTOUR}.}
4379
4380You have a mismatch between your help index and the HTML help package
4381you downloaded. You need to ensure you download a ``downgrade kit'' if
4382you are using anything older than the latest HTML help package. A new
4383help package apppears with each IDL release (assuming the documentation
4384is updated).
4385@ifclear PARTOFEMACS
4386See @uref{@value{IDLWAVEHOMEPAGE}, the maintainers
4387webpage} for more.
4388@end ifclear
4389Note that, starting with IDL 6.2, the HTML help and its catalog are
4390distributed with IDL, and so should never be inconsistent.
4391
4392@item @strong{I get errors such as @samp{void-variable
4393browse-url-browser-function} or similar when attempting to load IDLWAVE
4394under XEmacs.}
4395
4396You don't have the @samp{browse-url} (or other required) XEmacs package.
4397Unlike GNU Emacs, XEmacs distributes many packages separately from the
4398main program. IDLWAVE is actually among these, but is not always the
4399most up to date. When installing IDLWAVE as an XEmacs package, it
4400should prompt you for required additional packages. When installing it
4401from source, it won't and you'll get this error. The easiest solution
4402is to install all the packages when you install XEmacs (the so-called
4403@samp{sumo} bundle). The minimum set of XEmacs packages required by
4404IDLWAVE is @samp{fsf-compat, xemacs-base, mail-lib}.
4405
4153@end enumerate 4406@end enumerate
4154 4407
4155@node Index, , Troubleshooting, Top 4408@node Index, , Troubleshooting, Top
@@ -4157,7 +4410,3 @@ widget events (those with @code{/NO_BLOCK} passed to @code{XManager}).
4157@printindex cp 4410@printindex cp
4158 4411
4159@bye 4412@bye
4160
4161@ignore
4162 arch-tag: f1d73958-1423-4127-b8aa-f7b953d64492
4163@end ignore