diff options
| author | J.D. Smith | 2006-04-06 18:56:09 +0000 |
|---|---|---|
| committer | J.D. Smith | 2006-04-06 18:56:09 +0000 |
| commit | 4111a42be76f9cce94a78cf811d72d4fcd0777ca (patch) | |
| tree | 30b771daf81eae6b2ae7b07c43c98387e26a00c2 | |
| parent | cbc285b245f2c0baa70dcc8c63b78daaa757d802 (diff) | |
| download | emacs-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.texi | 957 |
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. | |||
| 29 | This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE | 30 | This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE |
| 30 | @value{VERSION} | 31 | @value{VERSION} |
| 31 | 32 | ||
| 32 | Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, | 33 | Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, |
| 33 | 2005, 2006 Free Software Foundation, Inc. | 34 | 2006 Free Software Foundation, Inc. |
| 34 | 35 | ||
| 35 | Permission is granted to copy, distribute and/or modify this document | 36 | Permission is granted to copy, distribute and/or modify this document |
| 36 | under the terms of the GNU Free Documentation License, Version 1.2 or | 37 | under 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. | |||
| 60 | This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for | 61 | This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for |
| 61 | IDLWAVE version @value{VERSION}, @value{DATE}. | 62 | IDLWAVE version @value{VERSION}, @value{DATE}. |
| 62 | @sp 2 | 63 | @sp 2 |
| 63 | Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, | 64 | Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, |
| 64 | 2005, 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 |
| 67 | Permission is granted to copy, distribute and/or modify this document | 68 | Permission 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 | ||
| 186 | Installation | ||
| 187 | |||
| 188 | * Installing IDLWAVE:: How to install the distribution | ||
| 189 | * Installing Online Help:: Where to get the additional files needed | ||
| 190 | @end ifclear | ||
| 191 | |||
| 181 | Sources of Routine Info | 192 | Sources 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 | ||
| 206 | IDLWAVE is a package which supports editing source files written in | 219 | IDLWAVE is a package which supports editing source files written in |
| 207 | the Interactive Data Language, and running | 220 | the Interactive Data Language (IDL@c |
| 208 | IDL as an inferior shell@footnote{Note that this package has nothing | 221 | @ifclear PARTOFEMACS |
| 209 | to do with the Interface Definition Language, part of the Common | 222 | @footnote{IDL is a registered |
| 210 | Object Request Broker Architecture (CORBA)}@footnote{IDLWAVE can also | 223 | trademark of Research Systems, Inc.}@c |
| 211 | be used for editing source files for the related WAVE/CL language, but | 224 | @end ifclear |
| 212 | with 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 |
| 213 | IDLDE development environment included with IDL, and uses the full | 226 | for editing source files for the related WAVE/CL language, but with only |
| 214 | power of Emacs to make editing and running IDL programs easier, | 227 | limited support.}. It is a feature-rich replacement for the IDLDE |
| 215 | quicker, and more structured. | 228 | development environment included with IDL, and uses the full power of |
| 229 | Emacs to make editing and running IDL programs easier, quicker, and more | ||
| 230 | structured. | ||
| 216 | 231 | ||
| 217 | IDLWAVE consists of two main parts: a major mode for editing IDL | 232 | IDLWAVE consists of two main parts: a major mode for editing IDL |
| 218 | source files (@code{idlwave-mode}) and a mode for running the IDL | 233 | source 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 | |||
| 231 | than 1000 native IDL routines, extendible to any additional number of | 246 | than 1000 native IDL routines, extendible to any additional number of |
| 232 | local routines, and already available with many pre-scanned libraries. | 247 | local routines, and already available with many pre-scanned libraries. |
| 233 | @item | 248 | @item |
| 234 | Routine name space conflict search with likelihood-of-use ranking. | ||
| 235 | @item | ||
| 236 | Fast, context-sensitive online HTML help, or source-header help for | 249 | Fast, context-sensitive online HTML help, or source-header help for |
| 237 | undocumented routines. | 250 | undocumented routines. |
| 238 | @item | 251 | @item |
| @@ -246,6 +259,8 @@ standards. | |||
| 246 | @item | 259 | @item |
| 247 | Integrity checks and auto-termination of logical blocks. | 260 | Integrity checks and auto-termination of logical blocks. |
| 248 | @item | 261 | @item |
| 262 | Routine name space conflict search with likelihood-of-use ranking. | ||
| 263 | @item | ||
| 249 | Support for @file{imenu} (Emacs) and @file{func-menu} (XEmacs). | 264 | Support for @file{imenu} (Emacs) and @file{func-menu} (XEmacs). |
| 250 | @item | 265 | @item |
| 251 | Documentation support. | 266 | Documentation support. |
| @@ -254,6 +269,9 @@ Running IDL as an inferior Shell with history search, command line | |||
| 254 | editing and all the completion and routine info capabilities present in | 269 | editing and all the completion and routine info capabilities present in |
| 255 | IDL source buffers. | 270 | IDL source buffers. |
| 256 | @item | 271 | @item |
| 272 | Full handling of debugging with breakpoints, with interactive setting | ||
| 273 | of break conditions, and easy stepping through code. | ||
| 274 | @item | ||
| 257 | Compilation, execution and interactive single-keystroke debugging of | 275 | Compilation, execution and interactive single-keystroke debugging of |
| 258 | programs directly from the source buffer. | 276 | programs 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 | |||
| 411 | shoulder of your nearest IDLWAVE guru for a few days. | 429 | shoulder of your nearest IDLWAVE guru for a few days. |
| 412 | 430 | ||
| 413 | It is assumed that you have access to Emacs or XEmacs with the full | 431 | It is assumed that you have access to Emacs or XEmacs with the full |
| 414 | IDLWAVE package including online help. We also assume that you are | 432 | IDLWAVE package including online help@c |
| 415 | familiar with Emacs and can read the nomenclature of key presses in | 433 | @ifclear PARTOFEMACS |
| 416 | Emacs (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 | ||
| 437 | nomenclature of key presses in Emacs (in particular, @kbd{C} stands | ||
| 438 | for @key{CONTROL} and @kbd{M} for @key{META} (often the @key{ALT} key | ||
| 439 | carries this functionality)). | ||
| 418 | 440 | ||
| 419 | Open a new source file by typing: | 441 | Open 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 | ||
| 491 | Now go back to the source window and type @kbd{C-c C-d C-c} to compile | 513 | Now go back to the source window and type @kbd{C-c C-d C-c} to compile |
| 492 | the program. If you watch the shell buffer, you see that IDLWAVE types | 514 | the 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 |
| 494 | there is a comma in the line @samp{years=...}. The line with the error | 516 | there is a comma in the line @samp{years=...}. The line with the error |
| 495 | is highlighted and the cursor positioned at the error, so remove the | 517 | is highlighted and the cursor positioned at the error, so remove the |
| 496 | comma (you should only need to hit @kbd{Delete}!). Compile again, using | 518 | comma (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? | |||
| 548 | plot_wday,1,4 | 570 | plot_wday,1,4 |
| 549 | @end example | 571 | @end example |
| 550 | 572 | ||
| 551 | Oops, this looks very wrong. All April fool's days cannot be Fridays! | 573 | Oops, this looks very wrong. All April Fool's days cannot be Fridays! |
| 552 | We've got a bug in the program, perhaps in the @code{daynr} function. | 574 | We've got a bug in the program, perhaps in the @code{daynr} function. |
| 553 | Let's put a breakpoint on the last line there. Position the cursor on | 575 | Let's put a breakpoint on the last line there. Position the cursor on |
| 554 | the @samp{return, d+...} line and press @kbd{C-c C-d C-b}. IDL sets a | 576 | the @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 | ||
| 579 | Emacs is probably the most customizable piece of software ever | 601 | Emacs is probably the most customizable piece of software ever written, |
| 580 | written, and it would be a shame if you did not make use of this and | 602 | and it would be a shame if you did not make use of this to adapt IDLWAVE |
| 581 | adapt IDLWAVE to your own preferences. Customizing Emacs or IDLWAVE | 603 | to your own preferences. Customizing Emacs or IDLWAVE is accomplished |
| 582 | is accomplished by setting Lisp variables in the @file{.emacs} file in | 604 | by setting Lisp variables in the @file{.emacs} file in your home |
| 583 | your home directory --- but do not be dismayed; for the most part, you | 605 | directory --- but do not be dismayed; for the most part, you can just |
| 584 | can just copy and work from the examples given here. | 606 | copy and work from the examples given here. |
| 585 | 607 | ||
| 586 | Let's first use a boolean variable. These are variables which you turn | 608 | Let's first use a boolean variable. These are variables which you turn |
| 587 | on or off, much like a checkbox. A value of @samp{t} means on, a value | 609 | on 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 | |||
| 600 | restart Emacs. | 622 | restart Emacs. |
| 601 | 623 | ||
| 602 | You likely have your own indentation preferences for IDL code. For | 624 | You likely have your own indentation preferences for IDL code. For |
| 603 | example, some like to indent the main block of an IDL program from the | 625 | example, some may prefer to indent the main block of an IDL program |
| 604 | margin and use only 3 spaces as indentation between @code{BEGIN} and | 626 | slightly 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-\ |
| 813 | To re-indent a larger portion of code (e.g. when working with foreign code | 835 | To re-indent a larger portion of code (e.g. when working with foreign |
| 814 | written with different conventions), use @kbd{C-M-\} | 836 | code 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 |
| 816 | commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the | 838 | commands are @kbd{C-x h} (the entire file) or @kbd{C-M-h} (the current |
| 817 | current subprogram). @xref{Actions}, for information how to impose | 839 | subprogram). The command @kbd{C-M-q} reindents the entire current |
| 818 | additional formatting conventions on foreign code. | 840 | routine. @xref{Actions}, for information how to impose additional |
| 841 | formatting conventions on foreign code. | ||
| 819 | 842 | ||
| 820 | @defopt idlwave-main-block-indent (@code{0}) | 843 | @defopt idlwave-main-block-indent (@code{2}) |
| 821 | Extra indentation for the main block of code. That is the block between | 844 | Extra indentation for the main block of code. That is the block between |
| 822 | the FUNCTION/PRO statement and the END statement for that program | 845 | the FUNCTION/PRO statement and the END statement for that program |
| 823 | unit. | 846 | unit. |
| 824 | @end defopt | 847 | @end defopt |
| 825 | 848 | ||
| 826 | @defopt idlwave-block-indent (@code{4}) | 849 | @defopt idlwave-block-indent (@code{3}) |
| 827 | Extra indentation applied to block lines. If you change this, you | 850 | Extra indentation applied to block lines. If you change this, you |
| 828 | probably also want to change @code{idlwave-end-offset}. | 851 | probably 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}) |
| 832 | Extra indentation applied to block END lines. A value equal to negative | 855 | Extra 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 |
| 834 | BEGIN lines. | 857 | BEGIN lines. |
| @@ -884,8 +907,8 @@ Also, since the indentation level can be somewhat dynamic in continued | |||
| 884 | statements with special continuation indentation, especially if | 907 | statements 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. |
| 887 | Note that @code{idlwave-indent-to-open-paren}, if non-@code{nil}, overrides | 910 | Note that @code{idlwave-indent-to-open-paren}, if non-@code{nil}, |
| 888 | the @code{idlwave-max-extra-continuation-indent} limit, for | 911 | overrides the @code{idlwave-max-extra-continuation-indent} limit, for |
| 889 | parentheses only, forcing them always to line up. | 912 | parentheses 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 | |
| 1270 | IDLWAVE can display help from an HTML version of the IDL documentation | 1293 | |
| 1271 | if it is available. This is @emph{much} faster than using the IDL | 1294 | For IDL system routines, extensive documentation is supplied with IDL. |
| 1272 | online help application, because IDLWAVE usually gets you to the right | 1295 | IDLWAVE can access the HTML version of this documentation very quickly |
| 1273 | place in the documentation directly --- e.g. a specific keyword of a | 1296 | and accurately, based on the local context. This can be @emph{much} |
| 1274 | routine --- without any additional browsing and scrolling. There are | 1297 | faster than using the IDL online help application, because IDLWAVE |
| 1275 | a variety of options for displaying the HTML help: see below. Help | 1298 | usually gets you to the right place in the documentation directly --- |
| 1276 | for routines without HTML documentation is also available, using the | 1299 | e.g. a specific keyword of a routine --- without any additional browsing |
| 1277 | routine documentation header and/or source. | 1300 | and scrolling. |
| 1278 | 1301 | ||
| 1279 | To make this feature work, you should set | 1302 | For this online help to work, an HTML version of the IDL documentation |
| 1280 | @code{idlwave-html-help-location} to the directory name of the | 1303 | is required. Beginning with IDL 6.2, HTML documentation is distributed |
| 1281 | directory where the IDL help files are installed. | 1304 | directly with IDL, along with an XML-based catalog of routine |
| 1305 | information. By default, IDLWAVE automatically attempts to convert this | ||
| 1306 | XML catalog into a format Emacs can more easily understand, and caches | ||
| 1307 | this information in your @code{idlwave_config_directory} | ||
| 1308 | (@file{~/.idlwave/}, by default). It also re-scans the XML catalog if | ||
| 1309 | it is newer than the current cached version. You can force rescan with | ||
| 1310 | the menu entry @code{IDLWAVE->Routine Info->Rescan XML Help Catalog}. | ||
| 1311 | |||
| 1312 | Before IDL 6.2, the HTML help was not distributed with IDL, and was not | ||
| 1313 | part of the standalone IDLWAVE distribution, but had to be downloaded | ||
| 1314 | separately. This is no longer necessary: all help and routine | ||
| 1315 | information is supplied with IDL versions 6.2 and later. | ||
| 1316 | |||
| 1317 | There are a variety of options for displaying the HTML help: see below. | ||
| 1318 | Help for routines without HTML documentation is also available, by using | ||
| 1319 | the routine documentation header and/or routine source. | ||
| 1282 | 1320 | ||
| 1283 | @kindex M-? | 1321 | @kindex M-? |
| 1284 | In any IDL program (or, as with most IDLWAVE commands, in the IDL | 1322 | In 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 | ||
| 1356 | Help using the HTML documentation is invoked with the built-in Emacs | 1397 | Help using the HTML documentation is invoked with the built-in Emacs |
| 1357 | command @code{browse-url}, which displays the relevant help topic in a | 1398 | command @code{browse-url}, which displays the relevant help topic in a |
| 1358 | browser of your choosing. There are many possible browsers to choose | 1399 | browser of your choosing. Beginning with version 6.2, IDL comes with |
| 1400 | the help browser @emph{IDL Assistant}, which it uses by default for | ||
| 1401 | displaying online help on all supported platforms. This browser | ||
| 1402 | offers topical searches, an index, and is also now the default and | ||
| 1403 | recommended IDLWAVE help browser. The variable | ||
| 1404 | @code{idlwave-help-use-assistant} controls whether this browser is | ||
| 1405 | used. Note that, due to limitations in the Assistant, invoking help | ||
| 1406 | within IDLWAVE and @code{? topic} within IDL will result in two | ||
| 1407 | running copies of Assistant. | ||
| 1408 | |||
| 1409 | Aside from the IDL Assistant, there are many possible browsers to choose | ||
| 1359 | among, with differing advantages and disadvantages. The variable | 1410 | among, 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 |
| 1361 | sent to. This function is used to set the variable | 1412 | to (as long as @code{idlwave-help-use-assistant} is not set). This |
| 1362 | @code{browse-url-browser-function} locally for IDLWAVE help only. | 1413 | function is used to set the variable @code{browse-url-browser-function} |
| 1363 | Customize this variable to see what choices of browsers your system | 1414 | locally for IDLWAVE help only. Customize the latter variable to see |
| 1364 | offers. | 1415 | what choices of browsers your system offers. Certain browsers like |
| 1365 | 1416 | @code{w3} (bundled with many versions of Emacs) and @code{w3m} | |
| 1366 | Certain 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 | 1418 | Emacs buffers to display the HTML help. This can be convenient, |
| 1368 | choice) are run within Emacs, and use Emacs buffers to display the | 1419 | especially on small displays, and images can even be displayed in-line |
| 1369 | HTML help. This can be convenient, especially on small displays, and | 1420 | on newer Emacs versions. However, better formatting results are often |
| 1370 | images can even be displayed in-line on new Emacs versions. However, | 1421 | achieved with external browsers, like Mozilla. IDLWAVE assumes any |
| 1371 | better formatting results are often achieved with external browsers, | 1422 | browser function containing "w3" is displayed in a local buffer. If you |
| 1372 | like Mozilla. IDLWAVE assumes any browser function containing "w3" is | 1423 | are using another Emacs-local browser for which this is not true, set |
| 1373 | displayed in a local buffer. If you are using another Emacs-local | 1424 | the variable @code{idlwave-help-browser-is-local}. |
| 1374 | browser for which this is not true, set the variable | 1425 | |
| 1375 | @code{idlwave-help-browser-is-local}. | 1426 | With 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 | 1428 | to ensure this is to run the IDL Shell (@kbd{C-c C-s}). It will be |
| 1378 | from the Microsoft HTMLHelp documentation supplied with IDL: no | 1429 | queried for this directory, and the results will be cached to file for |
| 1379 | additional help files are needed. Be sure to set | 1430 | subsequent use. |
| 1380 | @code{idlwave-system-directory} and the help file will be found | ||
| 1381 | automatically (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 | ||
| 1384 | which application is called to invoke it (@code{HH} is the default). | ||
| 1385 | The free helper application @code{KEYHH} | ||
| 1386 | (@uref{http://www.keyworks.net/keyhh.htm}) can be used instead, and is | ||
| 1387 | preferrable, as it permits loading new help topics into the same help | ||
| 1388 | window. @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 |
| 1391 | configuring a browser for use with IDL's HTML help system. | 1433 | configuring 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} |
| 1394 | The directory where the @file{idl_html_help} dir or @file{idl.chm} | 1436 | Relative directory of the system-supplied HTML help directory, |
| 1395 | HTMLHelp files live. | 1437 | considered with respect to @code{idlwave-system-directory}. Relevant |
| 1438 | for IDL 6.2 and greater. Should not change. | ||
| 1439 | @end defopt | ||
| 1440 | |||
| 1441 | @defopt idlwave-html-help-location @file{/usr/local/etc/} | ||
| 1442 | The directory where the @file{idl_html_help} HTML directory live. | ||
| 1443 | Obsolete 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} |
| 1399 | If set to @code{'hh} or @code{'keyhh}, use Windows native HTMLHelp | 1448 | If set, use the IDL Assistant if possible for online HTML help, |
| 1400 | with the specified help application. | 1449 | otherwise 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 |
| 1410 | Is the browser selected in @code{idlwave-help-browser-function} run in a | 1460 | Is the browser selected in @code{idlwave-help-browser-function} run in a |
| 1411 | local Emacs buffer? Defaults to @code{t} if the function contains | 1461 | local Emacs buffer or window? Defaults to @code{t} if the function |
| 1412 | "-w3". | 1462 | contains "-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 |
| 1518 | IDLWAVE offers completion for class names, routine names, keywords, | 1568 | IDLWAVE offers completion for class names, routine names, keywords, |
| 1519 | system variables, system variable tags, class structure tags, regular | 1569 | system variables, system variable tags, class structure tags, regular |
| 1520 | structure tags and file names. As in many programming modes, | 1570 | structure tags and file names. As in many programming modes, completion |
| 1521 | completion is bound to @kbd{M-@key{TAB}} (or @kbd{@key{TAB}} in the | 1571 | is bound to @kbd{M-@key{TAB}} (or simply @kbd{@key{TAB}} in the IDLWAVE |
| 1522 | IDLWAVE Shell --- @pxref{Using the Shell}). Completion uses exactly | 1572 | Shell --- @pxref{Using the Shell}). Completion uses exactly the same |
| 1523 | the same internal information as routine info, so when necessary | 1573 | internal information as routine info, so when necessary (rarely) it can |
| 1524 | (rarely) it can be updated with @kbd{C-c C-i} | 1574 | be updated with @kbd{C-c C-i} (@code{idlwave-update-routine-info}). |
| 1525 | (@code{idlwave-update-routine-info}). | ||
| 1526 | 1575 | ||
| 1527 | The completion function is context sensitive and figures out what to | 1576 | The completion function is context sensitive and figures out what to |
| 1528 | complete based location of the point. Here are example lines and what | 1577 | complete 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 | 1578 | what @kbd{M-@key{TAB}} would try to complete when the cursor is on the |
| 1530 | position marked with a @samp{_}: | 1579 | position marked with a @samp{_}: |
| 1531 | 1580 | ||
| 1532 | @example | 1581 | @example |
| @@ -1536,7 +1585,7 @@ plot,xra_ @r{Keyword of @code{plot} procedure} | |||
| 1536 | plot,x,y,/x_ @r{Keyword of @code{plot} procedure} | 1585 | plot,x,y,/x_ @r{Keyword of @code{plot} procedure} |
| 1537 | plot,min(_ @r{Keyword of @code{min} function} | 1586 | plot,min(_ @r{Keyword of @code{min} function} |
| 1538 | obj -> a_ @r{Object method (procedure)} | 1587 | obj -> a_ @r{Object method (procedure)} |
| 1539 | a(2,3) = obj -> a_ @r{Object method (function)} | 1588 | a[2,3] = obj -> a_ @r{Object method (function)} |
| 1540 | x = obj_new('IDL_ @r{Class name} | 1589 | x = obj_new('IDL_ @r{Class name} |
| 1541 | x = obj_new('MyCl',a_ @r{Keyword to @code{Init} method in class @code{MyCl}} | 1590 | x = obj_new('MyCl',a_ @r{Keyword to @code{Init} method in class @code{MyCl}} |
| 1542 | pro A_ @r{Class name} | 1591 | pro 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 |
| 1657 | An object method is not uniquely determined without the object's class. | 1706 | An object method is not uniquely determined without the object's class. |
| 1658 | Since the class is almost always omitted in the calling source, IDLWAVE | 1707 | Since the class is almost always omitted in the calling source (as |
| 1659 | considers all available methods in all classes as possible method name | 1708 | required to obtain the true benefits of object-based programming), |
| 1660 | completions. The combined list of keywords of the current method in | 1709 | IDLWAVE considers all available methods in all classes as possible |
| 1661 | @emph{all} known classes which contain that method will be considered | 1710 | method name completions. The combined list of keywords of the current |
| 1662 | for keyword completion. In the @file{*Completions*} buffer, the | 1711 | method in @emph{all} known classes which contain that method will be |
| 1663 | matching classes will be shown next to each item (see option | 1712 | considered for keyword completion. In the @file{*Completions*} buffer, |
| 1713 | the 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 |
| 1665 | of an object called @samp{self} is always taken to be the class of the | 1715 | of an object called @samp{self} is always taken to be the class of the |
| 1666 | current routine. All classes it inherits from are considered as well | 1716 | current routine, when in an IDLWAVE buffer. All inherits classes are |
| 1667 | where appropriate. | 1717 | considered 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 |
| 1675 | default for all methods (not recommended), or selectively for very | 1725 | default for all methods (not recommended), or selectively for very |
| 1676 | common methods for which the number of completing keywords would be too | 1726 | common methods for which the number of completing keywords would be too |
| 1677 | large (e.g. @code{Init}). | 1727 | large (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 | |||
| 1683 | editing session. Subsequent completions in the same statement | 1733 | editing 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 |
| 1685 | placing a text property on the method invocation operator @samp{->}, | 1735 | placing a text property on the method invocation operator @samp{->}, |
| 1686 | after which the operator will be shown in a different face. This is not | 1736 | after which the operator will be shown in a different face (bold by |
| 1687 | enabled by default --- the variable @code{idlwave-store-inquired-class} | 1737 | default). The variable @code{idlwave-store-inquired-class} can be used |
| 1688 | can be used to turn it on. | 1738 | to turn it off or on. |
| 1689 | 1739 | ||
| 1690 | @defopt idlwave-completion-show-classes (@code{1}) | 1740 | @defopt idlwave-completion-show-classes (@code{1}) |
| 1691 | Non-@code{nil} means show up to that many classes in | 1741 | Non-@code{nil} means show up to that many classes in |
| @@ -1701,14 +1751,14 @@ Non-@code{nil} means fontify the classes in completions buffer. | |||
| 1701 | Association list governing query for object classes during completion. | 1751 | Association 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}) |
| 1705 | Non-@code{nil} means store class of a method call as text property on | 1755 | Non-@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 |
| 1710 | Face to highlight object operator arrows @samp{->} which carry a class | 1760 | Face to highlight object operator arrows @samp{->} which carry a saved |
| 1711 | text property. | 1761 | class 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 | |||
| 1722 | determine the class of the object. If this query is successful, the | 1772 | determine the class of the object. If this query is successful, the |
| 1723 | class found will be used to select appropriate completions, routine | 1773 | class found will be used to select appropriate completions, routine |
| 1724 | info, or help. If unsuccessful, information from all known classes will | 1774 | info, or help. If unsuccessful, information from all known classes will |
| 1725 | be used (as in the buffer). Setting the variable | 1775 | be used (as in the buffer). |
| 1726 | @code{idlwave-store-inquired-class} can eliminate unnecessary repetitive | ||
| 1727 | queries 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 | ||
| 1804 | Once enabled, you'll also be able to access online help on the structure | 1852 | Once enabled, you'll also be able to access online help on the structure |
| 1805 | tags, using the usual methods (@pxref{Online Help}). | 1853 | tags, using the usual methods (@pxref{Online Help}). In addition, |
| 1854 | structure variables in the shell will be queried for tag names, similar | ||
| 1855 | to the way object variables in the shell are queried for method names. | ||
| 1856 | So, e.g.: | ||
| 1857 | |||
| 1858 | @example | ||
| 1859 | IDL> 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 |
| 1818 | contents. In the minibuffer, specify a complete routine name (including | 1876 | contents. In the minibuffer, specify a complete routine name (including |
| 1819 | any class part). IDLWAVE will display the source file in another | 1877 | any class part). IDLWAVE will display the source file in another |
| 1820 | window, positioned at the routine in question. You can also visit a | 1878 | window, positioned at the routine in question. You can also limit this |
| 1821 | routine in the current buffer, with completion, by using a single prefix | 1879 | to a routine in the current buffer only, with completion, and a |
| 1822 | (@kbd{C-u C-c C-v}). | 1880 | context-sensitive default, by using a single prefix (@kbd{C-u C-c C-v}) |
| 1881 | or 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. | |||
| 1838 | The key sequence @kbd{C-c =} calls the command @code{idlwave-resolve} | 1897 | The key sequence @kbd{C-c =} calls the command @code{idlwave-resolve} |
| 1839 | and sends the line @samp{RESOLVE_ROUTINE, '@var{routine_name}'} to IDL | 1898 | and sends the line @samp{RESOLVE_ROUTINE, '@var{routine_name}'} to IDL |
| 1840 | in order to resolve (compile) it. The default routine to be resolved is | 1899 | in order to resolve (compile) it. The default routine to be resolved is |
| 1841 | taken from context, but you get a chance to edit it. | 1900 | taken from context, but you get a chance to edit it. Usually this is |
| 1901 | not 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 |
| 1844 | of IDLWAVE's routine info collecting functions. A better way is to | 1904 | of 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 | ||
| 2145 | Some operators can be automatically surrounded by spaces. This can | 2207 | Some operators can be automatically surrounded by spaces. This can |
| 2146 | happen when the operator is typed, or later when the line is indented. | 2208 | happen when the operator is typed, or later when the line is indented. |
| 2147 | IDLWAVE can pad the operators @samp{&}, @samp{<}, @samp{>}, @samp{,}, | 2209 | IDLWAVE can pad the operators @samp{<}, @samp{>}, @samp{,}, @samp{=}, |
| 2148 | @samp{=}, and @samp{->}, but this feature is turned off by default. If | 2210 | and @samp{->}, as well as the modified assignment operators |
| 2149 | you 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 | 2212 | If you want to turn it on, customize the variables |
| 2151 | also 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 | 2214 | both on. You can also define similar actions for other operators by |
| 2153 | enforce space padding of the @samp{+} and @samp{*} operators, try this | 2215 | using the function @code{idlwave-action-and-binding} in the mode hook. |
| 2154 | in @file{.emacs} | 2216 | For example, to enforce space padding of the @samp{+} and @samp{*} |
| 2217 | operators (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 | ||
| 2228 | Note that the modified assignment operators which begin with a word | ||
| 2229 | (@samp{AND=}, @samp{OR=}, @samp{NOT=}, etc.) require a leading space to | ||
| 2230 | be 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 | ||
| 2232 | both valid operators, it is impossible to surround both by blanks while | ||
| 2233 | they are being typed. Similarly with @code{&} and @code{&&}. For | ||
| 2234 | these, a compromise is made: the padding is placed on the left, and if | ||
| 2235 | the longer operator is keyed in, on the right as well (otherwise you | ||
| 2236 | must insert spaces to pad right yourself, or press simply press Tab to | ||
| 2237 | repad 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}) |
| 2165 | Non-@code{nil} means enable @code{idlwave-surround}. If non-@code{nil}, | 2240 | Non-@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 |
| 2242 | modified assignment operators (@samp{AND=}, @samp{OR=}, etc.) are | ||
| 2167 | surrounded with spaces by @code{idlwave-surround}. | 2243 | surrounded 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}) |
| 2171 | Non-@code{nil} means pad @samp{=} for keywords like assignments. | 2247 | Non-@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}. | |||
| 2328 | Normal hook. Executed when @file{idlwave.el} is loaded. | 2404 | Normal 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 | |||
| 2346 | interactively, to compile and run IDL programs in Emacs buffers and to | 2427 | interactively, to compile and run IDL programs in Emacs buffers and to |
| 2347 | debug these programs. The IDLWAVE shell is built on @file{comint}, an | 2428 | debug these programs. The IDLWAVE shell is built on @file{comint}, an |
| 2348 | Emacs packages which handles the communication with the IDL program. | 2429 | Emacs packages which handles the communication with the IDL program. |
| 2349 | Unfortunately IDL for Windows does not have command-prompt versions | 2430 | Unfortunately, IDL for Windows does not have command-prompt versions and |
| 2350 | and thus do not allow the interaction with Emacs@footnote{Please | 2431 | thus do not allow the interaction with Emacs --- so the IDLWAVE shell |
| 2351 | inform the maintainer if you come up with a way to make the IDLWAVE | 2432 | currently only works under Unix and MacOSX. |
| 2352 | shell work on these systems.} --- so the IDLWAVE shell currently only | ||
| 2353 | works 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 | |||
| 2448 | shell buffer. | 2527 | shell buffer. |
| 2449 | @end defopt | 2528 | @end defopt |
| 2450 | 2529 | ||
| 2530 | @defopt idlwave-shell-use-dedicated-window (@code{nil}) | ||
| 2531 | Non-@code{nil} means use a dedicated window for the shell, taking care | ||
| 2532 | not it replace it with other buffers. | ||
| 2533 | @end defopt | ||
| 2534 | |||
| 2451 | @defopt idlwave-shell-frame-parameters | 2535 | @defopt idlwave-shell-frame-parameters |
| 2452 | The frame parameters for a dedicated idlwave-shell frame. | 2536 | The 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 | |||
| 2760 | and re-enabled: @kbd{C-c C-d C-\} | 2847 | and 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 | 2850 | Breakpoint lines are highlighted or indicated with an icon in the source | |
| 2764 | Breakpoint lines are highlighted or indicated with an icon in the | 2851 | code (different icons for conditional, after, and other break types). |
| 2765 | source code (different icons for conditional, after, and other break | 2852 | Disabled breakpoints are @emph{grayed out} by default. Note that IDL |
| 2766 | types). Disabled breakpoints are @emph{grayed out} by default. Note | 2853 | places breakpoints as close as possible on or after the line you |
| 2767 | that IDL places breakpoints as close as possible on or after the line | 2854 | specify. IDLWAVE queries the shell for the actual breakpoint location |
| 2768 | you specify. IDLWAVE queries the shell for the actual breakpoint | 2855 | which was set, so the exact line you specify may not be marked. You can |
| 2769 | location which was set, so the exact line you specify may not be | 2856 | re-sync the breakpoint list and update the display at any time (e.g., if |
| 2770 | marked. You can re-sync the breakpoint list and display at any time | 2857 | you 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 | |
| 2772 | C-d C-l}. | 2859 | In recent IDLWAVE versions, the breakpoint line is highlighted when the |
| 2860 | mouse is moved over it, and a tooltip pops up describing the break | ||
| 2861 | details. @kbd{Mouse-3} on the breakpoint line pops up a menu of | ||
| 2862 | breakpoint actions, including clearing, disabling, and adding or | ||
| 2863 | changing break conditions or ``after'' break count. | ||
| 2773 | 2864 | ||
| 2774 | Once the program has stopped somewhere, you can step through it. The | 2865 | Once the program has stopped somewhere, you can step through it. The |
| 2775 | most important stepping commands are @kbd{C-c C-d C-s} to execute one | 2866 | most 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 | ||
| 2823 | All of these commands have equivalents in Electric Debug Mode, which | 2914 | All of these commands have equivalents in Electric Debug Mode, which |
| 2824 | provides faster access (@pxref{Electric Debug Mode}). | 2915 | provides faster single-key access (@pxref{Electric Debug Mode}). |
| 2916 | |||
| 2917 | The line where IDL is currently stopped, at breakpoints, halts, and | ||
| 2918 | errors, etc., is marked with a color overlay or arrow, depending on the | ||
| 2919 | setting in @code{idlwave-shell-mark-stop-line}. If an overlay face is | ||
| 2920 | used to mark the stop line (as it is by default), when stepping through | ||
| 2921 | code, the face color is temporarily changed to gray, until IDL completes | ||
| 2922 | the 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}) |
| 2827 | Non-@code{nil} means mark breakpoints in the source file buffers. The | 2925 | Non-@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}) | ||
| 2936 | Whether to pop-up a menu and present a tooltip description on | ||
| 2937 | breakpoint lines. | ||
| 2938 | @end defopt | ||
| 2939 | |||
| 2940 | @defopt idlwave-shell-mark-stop-line (@code{t}) | ||
| 2941 | Non-@code{nil} means mark the source code line where IDL is currently | ||
| 2942 | stopped. 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{">"}) | ||
| 2947 | The overlay arrow to display at source lines where execution halts, if | ||
| 2948 | configured in @code{idlwave-shell-mark-stop-line}. | ||
| 2949 | @end defopt | ||
| 2950 | |||
| 2951 | @defopt idlwave-shell-stop-line-face | ||
| 2952 | The face which highlights the source line where IDL is stopped, if | ||
| 2953 | configured 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 | |||
| 2860 | been set (or you give two prefix arguments), the last command on the | 2980 | been 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}) | ||
| 2864 | Non-@code{nil} means mark the source code line where IDL is currently | ||
| 2865 | stopped. 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{">"}) | ||
| 2870 | The overlay arrow to display at source lines where execution halts, if | ||
| 2871 | configured in @code{idlwave-shell-mark-stop-line}. | ||
| 2872 | @end defopt | ||
| 2873 | |||
| 2874 | @defopt idlwave-shell-stop-line-face | ||
| 2875 | The face which highlights the source line where IDL is stopped, if | ||
| 2876 | configured 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}, | |||
| 2895 | for information how to examine the value of variables and expressions on | 2999 | for information how to examine the value of variables and expressions on |
| 2896 | higher calling stack levels. | 3000 | higher 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 | ||
| 2906 | Even with a convenient debug key prefix enabled, repetitive stepping, | 3010 | Even with a convenient debug key prefix enabled, repetitive stepping, |
| 2907 | variable examination (@pxref{Examining Variables}), and other | 3011 | variable examination (@pxref{Examining Variables}), and other debugging |
| 2908 | debugging activities can be awkward and slow using commands which | 3012 | activities can be awkward and slow using commands which require multiple |
| 2909 | require multiple keystrokes. Luckily, there's a better way, inspired | 3013 | keystrokes. Luckily, there's a better way, inspired by the lisp e-debug |
| 2910 | by the lisp e-debug mode, and available through the @emph{Electric | 3014 | mode, and available through the @emph{Electric Debug Mode}. By default, |
| 2911 | Debug Mode}. By default, as soon as a breakpoint is hit, this minor | 3015 | as soon as a breakpoint is hit, this minor mode is enabled. The buffer |
| 2912 | mode is enabled. The buffer showing the line where execution has | 3016 | showing the line where execution has halted is switched to Electric |
| 2913 | halted is switched to Electric Debug Mode. This mode is visible as | 3017 | Debug Mode. This mode is visible as @samp{*Debugging*} in the mode |
| 2914 | @samp{*Debugging*} in the mode line, and a different face (violet by | 3018 | line, and a different face (violet by default, if color is available) |
| 2915 | default, where color is available) for the line stopped at point. The | 3019 | for the line stopped at point. The buffer is made read-only and |
| 2916 | buffer is made read-only and single-character bindings for the most | 3020 | single-character bindings for the most commonly used debugging commands |
| 2917 | commonly used debugging commands are enabled: | 3021 | are enabled. These character commands (a list of which is available |
| 3022 | with @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 | ||
| 2979 | Most single-character electric debug bindings use the final keystroke | 3086 | Most single-character electric debug bindings use the final keystroke |
| 2980 | of the equivalent multiple key commands (which are of course also | 3087 | of the equivalent multiple key commands (which are of course also |
| 2981 | still available), but some differ (e.g. @kbd{t},@kbd{q},@kbd{x}). | 3088 | still available), but some differ (e.g. @kbd{e},@kbd{t},@kbd{q},@kbd{x}). |
| 2982 | Some have additional convenience bindings (like @kbd{@key{SPACE}} for | 3089 | Some have additional convenience bindings (like @kbd{@key{SPACE}} for |
| 2983 | stepping). All prefix and other argument options described in this | 3090 | stepping). All prefix and other argument options described in this |
| 2984 | section for the commands invoked by electric debug bindings are still | 3091 | section 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 | |||
| 3014 | halts. | 3121 | halts. |
| 3015 | @end defopt | 3122 | @end defopt |
| 3016 | 3123 | ||
| 3124 | @defopt idlwave-shell-electric-stop-color (Violet) | ||
| 3125 | Default color of the stopped line overlay when in electric debug mode. | ||
| 3126 | @end defopt | ||
| 3127 | |||
| 3128 | @defopt idlwave-shell-electric-stop-line-face | ||
| 3129 | The face to use for the stopped line. Defaults to a face similar to the | ||
| 3130 | modeline, 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}) |
| 3018 | If set, when entering electric debug mode, select the window displaying | 3134 | If set, when entering electric debug mode, select the window displaying |
| 3019 | the file where point is stopped. This takes point away from the shell | 3135 | the file where point is stopped. This takes point away from the shell |
| 3020 | window, but is useful for immediate stepping, etc. | 3136 | window, 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 |
| 3036 | Do you find yourself repeatedly typing, | 3152 | Do you find yourself repeatedly typing, e.g. @code{print,n_elements(x)}, |
| 3037 | e.g. @code{print,n_elements(x)}, and similar statements to remind | 3153 | and similar statements to remind yourself of the |
| 3038 | yourself of the type/size/structure/value/etc. of variables and | 3154 | type/size/structure/value/etc. of variables and expressions in your code |
| 3039 | expressions in your code or at the command line? IDLWAVE has a suite | 3155 | or at the command line? IDLWAVE has a suite of special commands to |
| 3040 | of special commands to automate these types of variable or expression | 3156 | automate these types of variable or expression examinations. They work |
| 3041 | examinations. They work by sending statements to the shell formatted | 3157 | by sending statements to the shell formatted to include the indicated |
| 3042 | to include the indicated expression. | 3158 | expression, and can be accessed in several ways. |
| 3043 | 3159 | ||
| 3044 | These examination commands can be used in the shell or buffer at any | 3160 | These @emph{examine} commands can be used in the shell or buffer at any |
| 3045 | time (as long as the shell is running), and are very useful when | 3161 | time (as long as the shell is running), and are very useful when |
| 3046 | execution is stopped in a buffer due to a triggered breakpoint or error, | 3162 | execution is stopped in a buffer due to a triggered breakpoint or error, |
| 3047 | or while composing a long command in the IDLWAVE shell. In the latter | 3163 | or 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. | |||
| 3055 | If the variable @code{idlwave-shell-separate-examine-output} is | 3171 | If the variable @code{idlwave-shell-separate-examine-output} is |
| 3056 | non-@code{nil} (the default), all examine output will be sent to a | 3172 | non-@code{nil} (the default), all examine output will be sent to a |
| 3057 | special @file{*Examine*} buffer, rather than the shell. The output of | 3173 | special @file{*Examine*} buffer, rather than the shell. The output of |
| 3058 | prior examine commands is saved. In this buffer @key{c} clears the | 3174 | prior examine commands is saved in this buffer. In this buffer @key{c} |
| 3059 | contents, and @key{q} hides the buffer. | 3175 | clears the contents, and @key{q} hides the buffer. |
| 3060 | 3176 | ||
| 3061 | The two most basic examine commands are bound to @kbd{C-c C-d C-p}, to | 3177 | The two most basic examine commands are bound to @kbd{C-c C-d C-p}, to |
| 3062 | print the expression at point, and @kbd{C-c C-d ?}, to invoke help on | 3178 | print the expression at point, and @kbd{C-c C-d ?}, to invoke help on |
| 3063 | this expression@footnote{Available as @kbd{p} and @kbd{?} in Electric | 3179 | this expression@footnote{Available as @kbd{p} and @kbd{?} in Electric |
| 3064 | Debug Mode (@pxref{Electric Debug Mode})}. The expression at point is | 3180 | Debug Mode (@pxref{Electric Debug Mode})}. The expression at point is |
| 3065 | either an array expression or a function call, or the contents of a | 3181 | either an array expression or a function call, or the contents of a pair |
| 3066 | pair of parentheses. The selected expression is highlighted, and | 3182 | of parentheses. The chosen expression is highlighted, and |
| 3067 | simultaneously the resulting output is highlighted in the shell. | 3183 | simultaneously the resulting output is highlighted in the shell or |
| 3068 | Calling the above commands with a prefix argument will use the current | 3184 | separate output buffer. Calling the above commands with a prefix |
| 3069 | region as expression instead of using the one at point. Two prefix | 3185 | argument will use the current region as expression instead of using the |
| 3070 | arguments (@kbd{C-u C-u C-c C-d C-p}) will prompt for an expression. | 3186 | one at point. which can be useful for examining complicated, multi-line |
| 3187 | expressions. Two prefix arguments (@kbd{C-u C-u C-c C-d C-p}) will | ||
| 3188 | prompt for an expression to print directly. By default, when invoking | ||
| 3189 | print, only an initial portion of long arrays will be printed, up to | ||
| 3190 | @code{idlwave-shell-max-print-length}. | ||
| 3071 | 3191 | ||
| 3072 | For added speed and convenience, there are mouse bindings which allow | 3192 | For added speed and convenience, there are mouse bindings which allow |
| 3073 | you to click on expressions and examine their values. Use | 3193 | you 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) | ||
| 3245 | The maximum number of leading array entries to print, when examining | ||
| 3246 | array 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 | ||
| 3339 | IDLWAVE is part of Emacs 21.1 and later. It is also an XEmacs package | ||
| 3340 | and can be installed from | ||
| 3341 | @uref{ftp://ftp.xemacs.org/pub/xemacs/packages/,the XEmacs ftp site} | ||
| 3342 | with the normal package management system on XEmacs 21. You can also | ||
| 3343 | download IDLWAVE and install it yourself from | ||
| 3344 | @uref{@value{IDLWAVEHOMEPAGE}, the maintainers webpage}. Follow the | ||
| 3345 | instructions 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 | |||
| 3352 | Starting with IDL v6.2, all necessary online help files and routine | ||
| 3353 | information are distributed directly with IDL. Nothing additional is | ||
| 3354 | required. | ||
| 3355 | |||
| 3356 | For version of IDL prior to 6.2 (and IDLWAVE prior to version 6.0), if | ||
| 3357 | you want to use the online help display, an additional set of files | ||
| 3358 | (HTML versions of the IDL documentation) must be installed. These files | ||
| 3359 | can also be downloaded from @uref{@value{IDLWAVEHOMEPAGE}, the | ||
| 3360 | maintainers webpage}. You need to place the files somewhere on your | ||
| 3361 | system 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 | ||
| 3369 | install the directory there, you do not need to set this variable. Note | ||
| 3370 | that the help package only changes with new versions of the IDL | ||
| 3371 | documentation, and need not be updated unless your version of IDL | ||
| 3372 | changes. Since the help system is distributed with IDL starting at | ||
| 3373 | version 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 |
| 3221 | maintainer, as of version 4.10, helped shape object method completion | 3407 | maintainer, as of version 4.10, helped shape object method completion |
| 3222 | and most new features introduced in versions 4.x, and added | 3408 | and most new features introduced in versions 4.x, and introduced many |
| 3223 | significant new capabilities for versions 5.x. | 3409 | new 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> | |||
| 3264 | Paul Sorenson <aardvark62__at__msn.com> | 3450 | Paul Sorenson <aardvark62__at__msn.com> |
| 3265 | @end itemize | 3451 | @end itemize |
| 3266 | 3452 | ||
| 3453 | Doug Dirks was instrumental in providing the crucial IDL XML catalog to | ||
| 3454 | support HTML help with IDL v6.2 and later, and Ali Bahrami provided | ||
| 3455 | scripts and documentation to interface with the IDL Assistant. | ||
| 3456 | |||
| 3267 | @noindent | 3457 | @noindent |
| 3268 | Thanks to everyone! | 3458 | Thanks 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 |
| 3302 | code of such routines is not available. | 3492 | of such routines is not available, but instead are learned about through |
| 3493 | the IDL documentation. | ||
| 3303 | @item | 3494 | @item |
| 3304 | Routines which are @emph{part of the current program}, are defined in a | 3495 | Routines which are @emph{part of the current program}, are defined in a |
| 3305 | file explicitly compiled by the user. This file may or may not be | 3496 | file explicitly compiled by the user. This file may or may not be |
| 3306 | located on the IDL search path. | 3497 | located 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 |
| 3309 | path, and will not need to be manually compiled. When a library routine | 3500 | path. When a library routine is called for the first time, IDL will |
| 3310 | is called for the first time, IDL will find the source file and compile | 3501 | find the source file and compile it dynamically. A special sub-category |
| 3311 | it dynamically. A special sub-category of library routines are the | 3502 | of library routines are the @emph{system routines} distributed with IDL, |
| 3312 | @emph{system routines} distributed with IDL, and usually available in | 3503 | and usually available in the @file{lib} subdirectory of the IDL |
| 3313 | the @file{lib} subdirectory of the IDL distribution. | 3504 | distribution. |
| 3314 | @item | 3505 | @item |
| 3315 | External routines written in other languages (like Fortran or C) can be | 3506 | External routines written in other languages (like Fortran or C) can be |
| 3316 | called with @code{CALL_EXTERNAL}, linked into IDL via @code{LINKIMAGE}, | 3507 | called with @code{CALL_EXTERNAL}, linked into IDL via @code{LINKIMAGE}, |
| 3317 | or included as dynamically loaded modules (DLMs). Currently IDLWAVE | 3508 | or included as dynamically loaded modules (DLMs). Currently IDLWAVE |
| 3318 | cannot provide routine info and completion for such external routines. | 3509 | cannot provide routine info and completion for such external routines, |
| 3510 | except 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 |
| 3336 | It has a @emph{builtin list} with information about the routines IDL | 3528 | It has a @emph{builtin list} with information about the routines IDL |
| 3337 | ships with. IDLWAVE @value{VERSION} is distributed with a list of | 3529 | ships 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 |
| 3339 | reflecting IDL version @value{IDLVERSION}. This list has been created | 3531 | @value{IDLVERSION}. As of IDL v6.2, the routine info is distributed |
| 3340 | by scanning the IDL manuals and is stored in the file | 3532 | directly with IDL in the form of an XML catalog which IDLWAVE scans. |
| 3341 | @file{idlw-rinfo.el}. @xref{Documentation Scan}, for information on | 3533 | Formerly, this list was created by scanning the IDL manuals to produce |
| 3342 | how to regenerate this file for new versions of IDL. | 3534 | the file @file{idlw-rinfo.el}. |
| 3343 | 3535 | ||
| 3344 | @item | 3536 | @item |
| 3345 | It @emph{scans} all @emph{buffers} of the current Emacs session for | 3537 | IDLWAVE @emph{scans} all its @emph{buffers} in the current Emacs session |
| 3346 | routine definitions. This is done automatically when routine | 3538 | for routine definitions. This is done automatically when routine |
| 3347 | information or completion is first requested by the user. Each new | 3539 | information or completion is first requested by the user. Each new |
| 3348 | buffer and each buffer saved after making changes is also scanned. The | 3540 | buffer and each buffer saved after making changes is also scanned. The |
| 3349 | command @kbd{C-c C-i} (@code{idlwave-update-routine-info}) can be used | 3541 | command @kbd{C-c C-i} (@code{idlwave-update-routine-info}) can be used |
| @@ -3353,16 +3545,18 @@ at any time to rescan all buffers. | |||
| 3353 | If you have an IDLWAVE-Shell running in the Emacs session, IDLWAVE will | 3545 | If 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 |
| 3355 | happens automatically when routine information or completion is first | 3547 | happens automatically when routine information or completion is first |
| 3356 | requested by the user, and each time an Emacs buffer is compiled with | 3548 | requested 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 | 3550 | rarely necessary, the command @kbd{C-c C-i} |
| 3359 | routine data. | 3551 | (@code{idlwave-update-routine-info}) can be used to explicitly update |
| 3552 | the shell routine data. | ||
| 3360 | 3553 | ||
| 3361 | @item | 3554 | @item |
| 3362 | Many popular libraries are distributed with routine information | 3555 | Many popular libraries are distributed with routine information already |
| 3363 | already scanned into @emph{library catalogs} (@pxref{Library | 3556 | scanned into @emph{library catalogs} (@pxref{Library Catalogs}). These |
| 3364 | Catalogs}). These per-directory catalog files can also be built by | 3557 | per-directory catalog files can also be built by the user with the |
| 3365 | the user with the supplied @file{idlwave_catalog} tool. | 3558 | supplied @file{idlwave_catalog} tool. They are automatically discovered |
| 3559 | by IDLWAVE. | ||
| 3366 | 3560 | ||
| 3367 | @item | 3561 | @item |
| 3368 | IDLWAVE can scan selected directories of source files and store the | 3562 | IDLWAVE can scan selected directories of source files and store the |
| @@ -3371,9 +3565,10 @@ automatically loaded just like @file{idlw-rinfo.el}. @xref{User | |||
| 3371 | Catalog}, for information on how to scan files in this way. | 3565 | Catalog}, for information on how to scan files in this way. |
| 3372 | @end enumerate | 3566 | @end enumerate |
| 3373 | 3567 | ||
| 3374 | Loading routine and catalog information can be a time consuming process, | 3568 | Loading all the routine and catalog information can be a time consuming |
| 3375 | especially over slow networks. Depending on the system and network | 3569 | process, especially over slow networks. Depending on the system and |
| 3376 | configuration it could take up to 30 seconds. In order to minimize the | 3570 | network configuration it could take up to 30 seconds (though locally on |
| 3571 | fast systems is usually only a few seconds). In order to minimize the | ||
| 3377 | wait time upon your first completion or routine info command in a | 3572 | wait time upon your first completion or routine info command in a |
| 3378 | session, IDLWAVE uses Emacs idle time to do the initialization in six | 3573 | session, IDLWAVE uses Emacs idle time to do the initialization in six |
| 3379 | steps, yielding to user input in between. If this gets into your way, | 3574 | steps, 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. | |||
| 3399 | Controls under what circumstances routine info is updated automatically. | 3594 | Controls 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 | |||
| 3426 | information (e.g. Windows), a library path must be specified in | 3621 | information (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 |
| 3428 | to setup directories for user catalog scan (@pxref{User Catalog} for | 3623 | to setup directories for user catalog scan (@pxref{User Catalog} for |
| 3429 | more on this variable). | 3624 | more on this variable). Note that, before the shell is running, IDLWAVE |
| 3625 | can only know about the IDL search path by consulting the file pointed | ||
| 3626 | to by @code{idlwave-path-file} (@file{~/.idlwave/idlpath.el}, by | ||
| 3627 | default). If @code{idlwave-auto-write-path} is enabled (which is the | ||
| 3628 | default), the paths are written out whenever the IDLWAVE shell is | ||
| 3629 | started. | ||
| 3430 | 3630 | ||
| 3431 | @defopt idlwave-auto-write-path (@code{t}) | 3631 | @defopt idlwave-auto-write-path (@code{t}) |
| 3432 | Write out information on the !PATH and !DIR paths from IDL automatically | 3632 | Write 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 |
| 3438 | IDL library path for Windows and MacOS. Not needed under Unix/MacOSX. | 3638 | IDL library path for Windows and MacOS. Under Unix/MacOSX, will be |
| 3639 | obtained from the Shell when run. | ||
| 3439 | @end defopt | 3640 | @end defopt |
| 3440 | 3641 | ||
| 3441 | @defopt idlwave-system-directory | 3642 | @defopt idlwave-system-directory |
| 3442 | The IDL system directory for Windows and MacOS. Not needed under | 3643 | The IDL system directory for Windows and MacOS. Also needed for |
| 3443 | Unix/MacOSX (obtained from the Shell). | 3644 | locating HTML help and the IDL Assistant for IDL v6.2 and later. Under |
| 3645 | Unix/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}) |
| 3447 | Default path where IDLWAVE saves configuration information and any | 3649 | Default path where IDLWAVE saves configuration information, a user |
| 3448 | user catalog. | 3650 | catalog (if any), and a cached scan of the XML catalog (IDL v6.2 and |
| 3651 | later). | ||
| 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 | ||
| 3465 | Library catalogs are files named @file{.idlwave_catalog} stored in | 3668 | Library catalogs consist of files named @file{.idlwave_catalog} stored |
| 3466 | directories containing @code{.pro} routine files. They are discovered | 3669 | in directories containing @code{.pro} routine files. They are |
| 3467 | on the IDL search path and loaded automatically when routine information | 3670 | discovered on the IDL search path and loaded automatically when routine |
| 3468 | is read. Each catalog file documents the routines found in that | 3671 | information is read. Each catalog file documents the routines found in |
| 3469 | directory --- one catalog per directory. Every catalog has a library | 3672 | that directory --- one catalog per directory. Every catalog has a |
| 3470 | name associated with it (e.g. @emph{AstroLib}). This name will be shown | 3673 | library name associated with it (e.g. @emph{AstroLib}). This name will |
| 3471 | briefly when the catalog is found, and in the routine info of routines | 3674 | be shown briefly when the catalog is found, and in the routine info of |
| 3472 | it documents. | 3675 | routines it documents. |
| 3473 | 3676 | ||
| 3474 | Many popular libraries of routines are shipped with IDLWAVE catalog | 3677 | Many popular libraries of routines are shipped with IDLWAVE catalog |
| 3475 | files by default, and so will be automatically discovered. Library | 3678 | files by default, and so will be automatically discovered. Library |
| @@ -3482,7 +3685,8 @@ scanned catalog). Since all catalogs are independent, they can be | |||
| 3482 | re-scanned automatically to gather updates, e.g. in a @file{cron} job. | 3685 | re-scanned automatically to gather updates, e.g. in a @file{cron} job. |
| 3483 | Scanning is much faster than with the built-in user catalog method. One | 3686 | Scanning is much faster than with the built-in user catalog method. One |
| 3484 | minor disadvantage: the entire IDL search path is scanned for catalog | 3687 | minor disadvantage: the entire IDL search path is scanned for catalog |
| 3485 | files every time IDLWAVE starts up, which might be slow over a network. | 3688 | files every time IDLWAVE starts up, which might be slow if accessing IDL |
| 3689 | routines over a slow network. | ||
| 3486 | 3690 | ||
| 3487 | A Perl tool to create library catalogs is distributed with IDLWAVE: | 3691 | A 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: | |||
| 3490 | idlwave_catalog MyLib | 3694 | idlwave_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 |
| 3494 | populate them with @file{.idlwave_catalog} files, tagging the routines | 3698 | populate them with @file{.idlwave_catalog} files, tagging the routines |
| 3495 | found with the name library ``MyLib''. The full usage information: | 3699 | found there with the name library ``MyLib''. The full usage |
| 3700 | information: | ||
| 3496 | 3701 | ||
| 3497 | @example | 3702 | @example |
| 3498 | Usage: idlwave_catalog [-l] [-v] [-d] [-s] [-f] [-h] libname | 3703 | Usage: 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}) |
| 3517 | Whether to search for and load library catalogs. Only disable if | 3722 | Whether to search for and load library catalogs. Disable if load |
| 3518 | performance is a problem and the catalogs are not needed. | 3723 | performance 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 |
| 3564 | the IDLWAVE shell. | 3769 | gathered from the IDLWAVE shell, if run. |
| 3565 | 3770 | ||
| 3566 | The command @kbd{M-x idlwave-create-user-catalog-file} (or the menu item | 3771 | The 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 |
| 3568 | used to create a user catalog. It brings up a widget in which you can | 3773 | used to create a user catalog. It brings up a widget in which you can |
| 3569 | select some or all directories on the search path. Directories which | 3774 | select some or all directories on the search path. Directories which |
| 3570 | already contain a library catalog are marked with @samp{[LIB]}, and need | 3775 | already 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 |
| 3645 | Users of Windows and MacOS also must set the variable | 3850 | Users 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 |
| 3647 | variable in IDL. IDLWAVE appends @file{lib} to the value of this | 3852 | variable in IDL. IDLWAVE appends @file{lib} to the value of this |
| 3648 | variable and assumes that all files found on that path are system | 3853 | variable 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 | ||
| 3867 | online help, and an XML-based catalog of routine information}. This | ||
| 3868 | makes scanning the manuals with the tool @file{get_html_rinfo}, and the | ||
| 3869 | @file{idlw-rinfo.el} file it produced, as described here, entirely | ||
| 3870 | unnecessary. The information is left here for users wishing to produce | ||
| 3871 | a catalog of older IDL versions' help. | ||
| 3872 | |||
| 3873 | |||
| 3661 | IDLWAVE derives its knowledge about system routines from the IDL | 3874 | IDLWAVE derives its knowledge about system routines from the IDL |
| 3662 | manuals. The file @file{idlw-rinfo.el} contains the routine information | 3875 | manuals. The file @file{idlw-rinfo.el} contains the routine information |
| 3663 | for the IDL system routines, and links to relevant sections of the HTML | 3876 | for the IDL system routines, and links to relevant sections of the HTML |
| 3664 | documentation. The Online Help feature of IDLWAVE requires HTML | 3877 | documentation. The Online Help feature of IDLWAVE requires HTML |
| 3665 | versions of the IDL manuals to be available. | 3878 | versions of the IDL manuals to be available; the HTML documentation is |
| 3879 | not distributed with IDLWAVE by default, but must be downloaded | ||
| 3880 | separately@c | ||
| 3881 | @ifclear PARTOFEMACS | ||
| 3882 | @ from @uref{@value{IDLWAVEHOMEPAGE}, the maintainers | ||
| 3883 | webpage}@c | ||
| 3884 | @end ifclear | ||
| 3885 | . | ||
| 3666 | 3886 | ||
| 3667 | The HTML files and related images can be produced from the | 3887 | The 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 |
| 3669 | Microsoft HTML Help Workshop. If you are lucky, the maintainer of | 3889 | Microsoft HTML Help Workshop. If you are lucky, the maintainer of |
| 3670 | IDLWAVE will always have access to the newest version of IDL and | 3890 | IDLWAVE will always have access to the newest version of IDL and provide |
| 3671 | provide updates. The IDLWAVE distribution also contains the Perl | 3891 | updates. The IDLWAVE distribution also contains the Perl program |
| 3672 | program @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 | 3893 | scanning the HTML documents produced from the IDL documentation. |
| 3674 | the IDL documentation. Instructions on how to use | 3894 | Instructions on how to use @file{get_html_rinfo} are in the program |
| 3675 | @file{get_html_rinfo} are in the program itself. | 3895 | itself. |
| 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 | ||
| 3681 | There are a wide variety of possible browsers to use for displaying | 3901 | There are a wide variety of possible browsers to use for displaying |
| 3682 | the online HTML help available with IDLWAVE (starting with version | 3902 | the online HTML help available with IDLWAVE (starting with version |
| 3683 | 5.0). Since IDLWAVE runs on a many different system types, a single | 3903 | 5.0). Since IDL v6.2, a single cross-platform HTML help browser, the |
| 3684 | browser configuration is not possible, but choices abound. | 3904 | @emph{IDL Assistant} is distributed with IDL. If this help browser is |
| 3685 | 3905 | available, it is the preferred choice, and the default. The variable | |
| 3686 | Unfortunately, the HTML manuals decompiled from the original | 3906 | @code{idlwave-help-use-assistant}, enabled by default, controls |
| 3687 | source contain formatting structures which Netscape 4.x does not | 3907 | whether this help browser is used. If you use the IDL Assistant, the |
| 3688 | handle well, though they are still readable. A much better choice is | 3908 | tips here are not relevant. |
| 3689 | Mozilla, or one of the Mozilla-derived browsers such as | 3909 | |
| 3910 | Since IDLWAVE runs on a many different system types, a single browser | ||
| 3911 | configuration is not possible, but choices abound. On many systems, | ||
| 3912 | the default browser configured in @code{browse-url-browser-function}, | ||
| 3913 | and hence inherited by default by | ||
| 3914 | @code{idlwave-help-browser-function}, is Netscape. Unfortunately, the | ||
| 3915 | HTML manuals decompiled from the original source contain formatting | ||
| 3916 | structures which Netscape 4.x does not handle well, though they are | ||
| 3917 | still readable. A much better choice is Mozilla, or one of the | ||
| 3918 | Mozilla-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 |
| 3693 | platforms). Newer versions of Emacs provide a browser-function choice | 3922 | platforms). 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 | ||
| 3696 | Note that the HTML files decompiled from Microsoft Help sources | 3925 | Note that the HTML files decompiled from the help sources contain |
| 3697 | contain specific references to the @samp{Symbol} font, which by default | 3926 | specific references to the @samp{Symbol} font, which by default is not |
| 3698 | is not permitted in normal encodings (it's invalid, technically). Though | 3927 | permitted in normal encodings (it's invalid, technically). Though it |
| 3699 | it only impacts a few symbols, you can trick Mozilla-based browsers into | 3928 | only impacts a few symbols, you can trick Mozilla-based browsers into |
| 3700 | recognizing @samp{Symbol} by following the directions | 3929 | recognizing @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 |
| 3702 | fix in place, HTML help pages look almost identical to their PDF | 3931 | this fix in place, HTML help pages look almost identical to their PDF |
| 3703 | equivalents (yet can be bookmarked, browsed as history, searched, etc.). | 3932 | equivalents (yet can be bookmarked, browsed as history, searched, |
| 3933 | etc.). | ||
| 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, | ||
| 3709 | with even better results using the free | ||
| 3710 | @uref{http://www.keyworks.net/keyhh.htm,@code{KEYHH}} program to | ||
| 3711 | permit IDL help to be targetted to a single window. To use HTMLHelp, | ||
| 3712 | specify @code{idlwave-help-use-hh} as @code{'hh} or @code{'keyhh}. | ||
| 3713 | One bonus: since IDL is shipped with the @file{idl.chm} help file, you | ||
| 3714 | don't need to download the HTML help package. @xref{Help with HTML | ||
| 3715 | Documentation}. | ||
| 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 |
| 3717 | and its associated | 3939 | and 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 | |||
| 3920 | portability of Emacs, much of IDLWAVE does also work under different | 4142 | portability of Emacs, much of IDLWAVE does also work under different |
| 3921 | operating systems like Windows (with NTEmacs or NTXEmacs) or MacOS. | 4143 | operating systems like Windows (with NTEmacs or NTXEmacs) or MacOS. |
| 3922 | 4144 | ||
| 3923 | The only real problem is that there is no command-line | 4145 | The only real problem is that there is no command-line version of IDL |
| 3924 | version of IDL for Windows or MacOS(<=9) with which IDLWAVE can | 4146 | for Windows or MacOS(<=9) with which IDLWAVE can interact. As a |
| 3925 | interact. As a result, the IDLWAVE Shell | 4147 | result, the IDLWAVE Shell does not work and you have to rely on IDLDE |
| 3926 | does not work and you have to rely on IDLDE to run and debug your | 4148 | to run and debug your programs. However, editing IDL source files |
| 3927 | programs. However, editing IDL source files with Emacs/IDLWAVE works | 4149 | with Emacs/IDLWAVE works with all bells and whistles, including |
| 3928 | with all bells and whistles, including routine info, completion and fast | 4150 | routine info, completion and fast online help. Only a small amount of |
| 3929 | online help. Only a small amount of additional information must be | 4151 | additional information must be specified in your @file{.emacs} file: |
| 3930 | specified in your @file{.emacs} file: the path names which, on a UNIX | 4152 | the path names which, on a UNIX system, are automatically gathered by |
| 3931 | system, are automatically gathered by talking to the IDL program. | 4153 | talking to the IDL program. |
| 3932 | 4154 | ||
| 3933 | Here is an example of the additional configuration needed for a Windows | 4155 | Here is an example of the additional configuration needed for a Windows |
| 3934 | system. I am assuming that IDLWAVE has been installed in | 4156 | system. 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 | |||
| 3971 | help can skip the browser and use the HTMLHelp functionality directly. | 4187 | help 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} | |||
| 3996 | if you prefer not to enter electric debug on breakpoints@dots{} but | 4212 | if you prefer not to enter electric debug on breakpoints@dots{} but |
| 3997 | you really should try it before you disable it! You can also | 4213 | you really should try it before you disable it! You can also |
| 3998 | customize this variable to enter debug mode when errors are | 4214 | customize this variable to enter debug mode when errors are |
| 3999 | encountered too. | 4215 | encountered. |
| 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 |
| 4002 | file or directory, idl} when attempting to start the IDL shell.} | 4218 | file or directory, idl} when attempting to start the IDL shell.} |
| @@ -4020,11 +4236,11 @@ configuration files (e.g. @file{.cshrc}), but from the file | |||
| 4020 | there, or start Emacs and IDLWAVE from the shell. | 4236 | there, 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: |
| 4023 | overlayp} when trying to start the shell in XEmacs} | 4239 | overlayp}} |
| 4024 | 4240 | ||
| 4025 | You don't have the @samp{fsf-compat} package installed, which IDLWAVE | 4241 | You don't have the @samp{fsf-compat} package installed, which IDLWAVE |
| 4026 | needs to run under XEmacs. Install it and, if necessary, insert | 4242 | needs to run under XEmacs. Install it, or find an XEmacs distribution |
| 4027 | @code{(require 'overlay)} in your @file{.emacs}. | 4243 | which 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: |
| 4030 | cl-builtin-gethash} on completion or routine info.} | 4246 | cl-builtin-gethash} on completion or routine info.} |
| @@ -4035,7 +4251,12 @@ in compiled lisp files. Presumably, you kept the original .elc files in | |||
| 4035 | place, and this is the source of the error. If you recompile (or just | 4251 | place, 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. |
| 4037 | Another option is to recompile the @file{idlw*.el} files by hand using | 4253 | Another 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 | ||
| 4256 | Why not take the opportunity to grab the | ||
| 4257 | latest IDLWAVE version at @uref{@value{IDLWAVEHOMEPAGE}, the | ||
| 4258 | maintainers 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 |
| 4041 | windows on my desktop.} | 4262 | windows on my desktop.} |
| @@ -4063,7 +4284,7 @@ with it, as long as you update the prompt it's looking for (@samp{IDL> | |||
| 4063 | in your @file{.emacs}: | 4284 | in 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 |
| 4098 | load-path @key{RET}}. | 4319 | load-path @key{RET}}, and @kbd{C-h m} in an IDLWAVE buffer should show |
| 4320 | you 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 | |||
| 4117 | compiled in the shell should be up to date. For other routines, the | 4339 | compiled in the shell should be up to date. For other routines, the |
| 4118 | information is only as current as the most recent scan. If you have a | 4340 | information is only as current as the most recent scan. If you have a |
| 4119 | rapidly changing set of routines, and you'd like the latest routine | 4341 | rapidly changing set of routines, and you'd like the latest routine |
| 4120 | information to be available for it, one powerful technique makes use of | 4342 | information to be available for it, one powerful technique is to make |
| 4121 | the library catalog tool, @samp{idlwave_catalog}. Simply add a line to | 4343 | use of the library catalog tool, @samp{idlwave_catalog}. Simply add a |
| 4122 | your @samp{cron} file (@samp{crontab -e} will let you edit this on some | 4344 | line to your @samp{cron} file (@samp{crontab -e} will let you edit this |
| 4123 | systems), like this: | 4345 | on some systems), like this |
| 4124 | 4346 | ||
| 4125 | @example | 4347 | @example |
| 4126 | 45 3 * * 1-5 (cd /path/to/myidllib; /path/to/idlwave_catalog MyLib) | 4348 | 45 3 * * 1-5 (cd /path/to/myidllib; /path/to/idlwave_catalog MyLib) |
| @@ -4130,14 +4352,15 @@ systems), like this: | |||
| 4130 | rescan all @file{.pro} files at or below @file{/path/to/myidllib} every | 4352 | rescan all @file{.pro} files at or below @file{/path/to/myidllib} every |
| 4131 | week night at 3:45am. You can even scan site-wide libraries with this | 4353 | week night at 3:45am. You can even scan site-wide libraries with this |
| 4132 | method, and the most recent information will be available to all users. | 4354 | method, and the most recent information will be available to all users. |
| 4355 | Since 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 |
| 4135 | displayed as Latin characters!} | 4358 | displayed as Latin characters!} |
| 4136 | 4359 | ||
| 4137 | Unfortunately, the HTMLHelp files attempt to switch to | 4360 | Unfortunately, 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 |
| 4139 | permitted method for doing this in HTML. There is a "workaround" for | 4362 | permitted method for doing this in HTML. There is a "workaround" for |
| 4140 | many browsers: @xref{HTML Help Browser Tips}. | 4363 | some 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 | |||
| 4150 | memory-bounded limit), but disables the processing of background | 4373 | memory-bounded limit), but disables the processing of background |
| 4151 | widget events (those with @code{/NO_BLOCK} passed to @code{XManager}). | 4374 | widget 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 | ||
| 4377 | is loaded is one page off, e.g. for @code{CONVERT_COORD}, I get | ||
| 4378 | @code{CONTOUR}.} | ||
| 4379 | |||
| 4380 | You have a mismatch between your help index and the HTML help package | ||
| 4381 | you downloaded. You need to ensure you download a ``downgrade kit'' if | ||
| 4382 | you are using anything older than the latest HTML help package. A new | ||
| 4383 | help package apppears with each IDL release (assuming the documentation | ||
| 4384 | is updated). | ||
| 4385 | @ifclear PARTOFEMACS | ||
| 4386 | See @uref{@value{IDLWAVEHOMEPAGE}, the maintainers | ||
| 4387 | webpage} for more. | ||
| 4388 | @end ifclear | ||
| 4389 | Note that, starting with IDL 6.2, the HTML help and its catalog are | ||
| 4390 | distributed with IDL, and so should never be inconsistent. | ||
| 4391 | |||
| 4392 | @item @strong{I get errors such as @samp{void-variable | ||
| 4393 | browse-url-browser-function} or similar when attempting to load IDLWAVE | ||
| 4394 | under XEmacs.} | ||
| 4395 | |||
| 4396 | You don't have the @samp{browse-url} (or other required) XEmacs package. | ||
| 4397 | Unlike GNU Emacs, XEmacs distributes many packages separately from the | ||
| 4398 | main program. IDLWAVE is actually among these, but is not always the | ||
| 4399 | most up to date. When installing IDLWAVE as an XEmacs package, it | ||
| 4400 | should prompt you for required additional packages. When installing it | ||
| 4401 | from source, it won't and you'll get this error. The easiest solution | ||
| 4402 | is to install all the packages when you install XEmacs (the so-called | ||
| 4403 | @samp{sumo} bundle). The minimum set of XEmacs packages required by | ||
| 4404 | IDLWAVE 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 | ||