2 |
@c %**start of header |
@c %**start of header |
3 |
@setfilename ../info/idlwave |
@setfilename ../info/idlwave |
4 |
@settitle IDLWAVE User Manual |
@settitle IDLWAVE User Manual |
5 |
@dircategory Editors |
@dircategory Emacs |
6 |
@direntry |
@direntry |
7 |
* IDLWAVE: (idlwave). Major mode and shell for IDL files. |
* IDLWAVE: (idlwave). Major mode and shell for IDL files. |
8 |
@end direntry |
@end direntry |
33 |
Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software Foundation, |
Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software Foundation, |
34 |
Inc. |
Inc. |
35 |
|
|
36 |
Permission is granted to make and distribute verbatim |
Permission is granted to copy, distribute and/or modify this document |
37 |
copies of this manual provided the copyright notice and |
under the terms of the GNU Free Documentation License, Version 1.1 or |
38 |
this permission notice are preserved on all copies. |
any later version published by the Free Software Foundation; with no |
39 |
|
Invariant Sections, with the Front-Cover texts being ``A GNU |
40 |
@ignore |
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the |
41 |
Permission is granted to process this file through TeX and print the |
license is included in the section entitled ``GNU Free Documentation |
42 |
results, provided the printed document carries a copying permission |
License'' in the Emacs manual. |
43 |
notice identical to this one except for the removal of this paragraph |
|
44 |
(this paragraph not being relevant to the printed manual). |
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify |
45 |
|
this GNU Manual, like GNU software. Copies published by the Free |
46 |
@end ignore |
Software Foundation raise funds for GNU development.'' |
47 |
Permission is granted to copy and distribute modified |
|
48 |
versions of this manual under the conditions for |
This document is part of a collection distributed under the GNU Free |
49 |
verbatim copying, provided that the entire resulting |
Documentation License. If you want to distribute this document |
50 |
derived work is distributed under the terms of a permission |
separately from the collection, you can do so by adding a copy of the |
51 |
notice identical to this one. |
license to the document, as described in section 6 of the license. |
|
|
|
|
Permission is granted to copy and distribute |
|
|
translations of this manual into another language, |
|
|
under the above conditions for modified versions, |
|
|
except that this permission notice may be stated in a |
|
|
translation approved by the Free Software Foundation. |
|
52 |
@end ifinfo |
@end ifinfo |
53 |
|
|
54 |
@titlepage |
@titlepage |
58 |
|
|
59 |
@author by Carsten Dominik & J.D. Smith |
@author by Carsten Dominik & J.D. Smith |
60 |
@page |
@page |
|
Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
|
|
|
|
@sp 2 |
|
61 |
This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for |
This is edition @value{EDITION} of the @cite{IDLWAVE User Manual} for |
62 |
IDLWAVE version @value{VERSION}, @value{DATE}. |
IDLWAVE version @value{VERSION}, @value{DATE}. |
|
|
|
63 |
@sp 2 |
@sp 2 |
64 |
|
Copyright @copyright{} 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
65 |
|
@sp 2 |
66 |
@cindex Copyright, of IDLWAVE |
@cindex Copyright, of IDLWAVE |
67 |
Permission is granted to make and distribute verbatim |
Permission is granted to copy, distribute and/or modify this document |
68 |
copies of this manual provided the copyright notice and |
under the terms of the GNU Free Documentation License, Version 1.1 or |
69 |
this permission notice are preserved on all copies. |
any later version published by the Free Software Foundation; with no |
70 |
|
Invariant Sections, with the Front-Cover texts being ``A GNU |
71 |
Permission is granted to copy and distribute modified |
Manual'', and with the Back-Cover Texts as in (a) below. A copy of the |
72 |
versions of this manual under the conditions for |
license is included in the section entitled ``GNU Free Documentation |
73 |
verbatim copying, provided that the entire resulting |
License'' in the Emacs manual. |
74 |
derive work is distributed under the terms of a permission |
|
75 |
notice identical to this one. |
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify |
76 |
|
this GNU Manual, like GNU software. Copies published by the Free |
77 |
Permission is granted to copy and distribute |
Software Foundation raise funds for GNU development.'' |
78 |
translations of this manual into another language, |
|
79 |
under the above conditions for modified versions, |
This document is part of a collection distributed under the GNU Free |
80 |
except that this permission notice may be stated in a |
Documentation License. If you want to distribute this document |
81 |
translation approved by the Free Software Foundation. |
separately from the collection, you can do so by adding a copy of the |
82 |
|
license to the document, as described in section 6 of the license. |
83 |
@end titlepage |
@end titlepage |
84 |
@contents |
@contents |
85 |
|
|
1249 |
@kindex M-? |
@kindex M-? |
1250 |
In any IDL program (or, as with most IDLWAVE commands, in the IDL |
In any IDL program (or, as with most IDLWAVE commands, in the IDL |
1251 |
Shell), press @kbd{M-?} (@code{idlwave-context-help}), or click with |
Shell), press @kbd{M-?} (@code{idlwave-context-help}), or click with |
1252 |
@kbd{S-mouse-3} to access context sensitive online help. The following |
@kbd{S-Mouse-3} to access context sensitive online help. The following |
1253 |
locations are recognized context for help: |
locations are recognized context for help: |
1254 |
|
|
1255 |
@cindex Context, for online help |
@cindex Context, for online help |
1287 |
@itemize @bullet |
@itemize @bullet |
1288 |
@item |
@item |
1289 |
Online help for routines and keywords can be accessed through the |
Online help for routines and keywords can be accessed through the |
1290 |
Routine Info display. Click with @kbd{mouse-3} on an item to see the |
Routine Info display. Click with @kbd{Mouse-3} on an item to see the |
1291 |
corresponding help (@pxref{Routine Info}). |
corresponding help (@pxref{Routine Info}). |
1292 |
@item |
@item |
1293 |
When using completion and Emacs pops up a window with possible |
When using completion and Emacs pops up a window with possible |
1294 |
completions, clicking with @kbd{mouse-3} on a completion item invokes |
completions, clicking with @kbd{Mouse-3} on a completion item invokes |
1295 |
help on that item (@pxref{Completion}). |
help on that item (@pxref{Completion}). |
1296 |
@end itemize |
@end itemize |
1297 |
@noindent |
@noindent |
1299 |
IDL manual, but an attempt will be made to visit non-blue items directly |
IDL manual, but an attempt will be made to visit non-blue items directly |
1300 |
in the originating source file. |
in the originating source file. |
1301 |
|
|
1302 |
@cindex Help application, keybindings |
@cindex Help application, key bindings |
1303 |
@cindex Keybindings, in help application |
@cindex Key bindings, in help application |
1304 |
The help window is normally displayed in a separate frame. The |
The help window is normally displayed in a separate frame. The |
1305 |
following commands can be used to navigate inside the help system: |
following commands can be used to navigate inside the help system: |
1306 |
|
|
1317 |
@tab Move back and forward through the help topic history. |
@tab Move back and forward through the help topic history. |
1318 |
@item @kbd{c} |
@item @kbd{c} |
1319 |
@tab Clear the history. |
@tab Clear the history. |
1320 |
@item @kbd{mouse-2} |
@item @kbd{Mouse-2} |
1321 |
@tab Follow a link. Active links are displayed in a different font. |
@tab Follow a link. Active links are displayed in a different font. |
1322 |
Items under @i{See Also} are active, and classes have links to their |
Items under @i{See Also} are active, and classes have links to their |
1323 |
methods and back. |
methods and back. |
1360 |
@end defopt |
@end defopt |
1361 |
|
|
1362 |
@defopt idlwave-max-popup-menu-items (@code{20}) |
@defopt idlwave-max-popup-menu-items (@code{20}) |
1363 |
Maximum number of items per pane in popup menus. |
Maximum number of items per pane in pop-up menus. |
1364 |
@end defopt |
@end defopt |
1365 |
|
|
1366 |
@defopt idlwave-extra-help-function |
@defopt idlwave-extra-help-function |
1443 |
If the list of completions is too long to fit in the |
If the list of completions is too long to fit in the |
1444 |
@file{*Completions*} window, the window can be scrolled by pressing |
@file{*Completions*} window, the window can be scrolled by pressing |
1445 |
@kbd{M-@key{TAB}} repeatedly. Online help (if installed) for each |
@kbd{M-@key{TAB}} repeatedly. Online help (if installed) for each |
1446 |
possible completion is available by clicking with @kbd{mouse-3} on the |
possible completion is available by clicking with @kbd{Mouse-3} on the |
1447 |
item. Items for which system online help (from the IDL manual) is |
item. Items for which system online help (from the IDL manual) is |
1448 |
available will be displayed in a different font (e.g. colored blue). |
available will be displayed in a different font (e.g. colored blue). |
1449 |
For other items, the corresponding source code or DocLib header will be |
For other items, the corresponding source code or DocLib header will be |
1690 |
@cindex Templates |
@cindex Templates |
1691 |
|
|
1692 |
IDLWAVE can insert IDL code templates into the buffer. For a few |
IDLWAVE can insert IDL code templates into the buffer. For a few |
1693 |
templates, this is done with direct keybindings: |
templates, this is done with direct key bindings: |
1694 |
|
|
1695 |
@multitable @columnfractions .15 .85 |
@multitable @columnfractions .15 .85 |
1696 |
@item @kbd{C-c C-c} |
@item @kbd{C-c C-c} |
1857 |
@end multitable |
@end multitable |
1858 |
|
|
1859 |
@noindent You can easily add your own abbreviations or override existing |
@noindent You can easily add your own abbreviations or override existing |
1860 |
abbrevs with @code{define-abbrev} in your mode hook using the |
abbrevs with @code{define-abbrev} in your mode hook, using the |
1861 |
convenience function @code{idlwave-define-abbrev}: |
convenience function @code{idlwave-define-abbrev}: |
1862 |
|
|
1863 |
@lisp |
@lisp |
2172 |
@cindex Comint, Emacs package |
@cindex Comint, Emacs package |
2173 |
@cindex Windows |
@cindex Windows |
2174 |
@cindex MacOS |
@cindex MacOS |
|
@cindex Unix |
|
2175 |
|
|
2176 |
The IDLWAVE shell is an Emacs major mode which permits running the IDL |
The IDLWAVE shell is an Emacs major mode which permits running the IDL |
2177 |
program as an inferior process of Emacs, and works closely with the |
program as an inferior process of Emacs, and works closely with the |
2183 |
versions and thus do not allow the interaction with |
versions and thus do not allow the interaction with |
2184 |
Emacs@footnote{Please inform the maintainer if you come up with a way to |
Emacs@footnote{Please inform the maintainer if you come up with a way to |
2185 |
make the IDLWAVE shell work on these systems.} --- so the IDLWAVE shell |
make the IDLWAVE shell work on these systems.} --- so the IDLWAVE shell |
2186 |
currently only works under Unix. |
currently only works under GNU and Unix. |
2187 |
|
|
2188 |
@menu |
@menu |
2189 |
* Starting the Shell:: How to launch IDL as a subprocess |
* Starting the Shell:: How to launch IDL as a subprocess |
2420 |
|
|
2421 |
@kindex C-c C-d |
@kindex C-c C-d |
2422 |
Programs can be compiled, run, and debugged directly from the source |
Programs can be compiled, run, and debugged directly from the source |
2423 |
buffer in Emacs. The IDLWAVE shell installs keybindings both in the |
buffer in Emacs. The IDLWAVE shell installs key bindings both in the |
2424 |
shell buffer and in all IDL code buffers of the current Emacs session. |
shell buffer and in all IDL code buffers of the current Emacs session. |
2425 |
On Emacs versions which support this, it also installs a debugging |
On Emacs versions which support this, it also installs a debugging |
2426 |
toolbar. The display of the toolbar can be toggled with @kbd{C-c C-d |
toolbar. The display of the toolbar can be toggled with @kbd{C-c C-d |
2427 |
C-t} (@code{idlwave-shell-toggle-toolbar}). |
C-t} (@code{idlwave-shell-toggle-toolbar}). |
2428 |
|
|
2429 |
The debugging keybindings are by default on the prefix key @kbd{C-c |
The debugging key bindings are by default on the prefix key @kbd{C-c |
2430 |
C-d}, so for example setting a breakpoint is done with @kbd{C-c C-d |
C-d}, so for example setting a breakpoint is done with @kbd{C-c C-d |
2431 |
C-b}, compiling a source file with @kbd{C-c C-d C-c}. If you find this |
C-b}, compiling a source file with @kbd{C-c C-d C-c}. If you find this |
2432 |
too much work, you can add bindings for one or more modifier keys which |
too much work, you can add bindings for one or more modifier keys which |
2650 |
|
|
2651 |
For added speed and convenience, there are mouse bindings which allow |
For added speed and convenience, there are mouse bindings which allow |
2652 |
you to click on expressions and examine their values. Use |
you to click on expressions and examine their values. Use |
2653 |
@kbd{S-mouse-2} to print an expression and @kbd{C-M-mouse-2} to invoke |
@kbd{S-Mouse-2} to print an expression and @kbd{C-M-Mouse-2} to invoke |
2654 |
help (i.e. you need to hold down @key{META} and @key{CONTROL} while |
help (i.e. you need to hold down @key{META} and @key{CONTROL} while |
2655 |
clicking with the middle mouse button). If you simply click, the |
clicking with the middle mouse button). If you simply click, the |
2656 |
nearest expression will be selected in the same manner as described |
nearest expression will be selected in the same manner as described |
2712 |
bindings. |
bindings. |
2713 |
|
|
2714 |
The most powerful and flexible mouse examine command is available on |
The most powerful and flexible mouse examine command is available on |
2715 |
@kbd{C-S-mouse-2}. Just as for all the other mouse examine commands, it |
@kbd{C-S-Mouse-2}. Just as for all the other mouse examine commands, it |
2716 |
permits click or drag expression selection, but instead of sending |
permits click or drag expression selection, but instead of sending |
2717 |
hard-coded commands to the shell, it pops-up a customizable selection |
hard-coded commands to the shell, it pops-up a customizable selection |
2718 |
list of examine functions to choose among, configured with the |
list of examine functions to choose among, configured with the |
2722 |
@code{___} (three underscores) will be replaced by the selected |
@code{___} (three underscores) will be replaced by the selected |
2723 |
expression before being sent to the shell. An example might be key |
expression before being sent to the shell. An example might be key |
2724 |
@code{Structure Help} with value @code{help,___,/STRUCTURE}. |
@code{Structure Help} with value @code{help,___,/STRUCTURE}. |
2725 |
|
@code{idlwave-shell-examine-alist} comes by default with a large list of |
2726 |
|
examine commands, but can be easily customized to add more. |
2727 |
|
|
2728 |
In addition to the popup mouse command, you can easily create your own |
In addition to the pop-up mouse command, you can easily create your own |
2729 |
customized bindings to inspect expressions using the two convenience |
customized bindings to inspect expressions using the two convenience |
2730 |
macros @code{idlwave-shell-inspect} and |
macros @code{idlwave-shell-inspect} and |
2731 |
@code{idlwave-shell-mouse-inspect}. These create keyboard or |
@code{idlwave-shell-mouse-inspect}. These create keyboard or |
2756 |
|
|
2757 |
@defopt idlwave-shell-examine-alist |
@defopt idlwave-shell-examine-alist |
2758 |
An alist of examine commands in which the keys name the command and are |
An alist of examine commands in which the keys name the command and are |
2759 |
displayed in the selection popup, and the values are custom IDL examine |
displayed in the selection pop-up, and the values are custom IDL examine |
2760 |
command strings to send, after all instances of @code{___} are replaced |
command strings to send, after all instances of @code{___} are replaced |
2761 |
by the indicated expression. |
by the indicated expression. |
2762 |
@end defopt |
@end defopt |
2840 |
@end lisp |
@end lisp |
2841 |
@item |
@item |
2842 |
The key sequence @kbd{M-@key{TAB}} no longer inserts a TAB character. |
The key sequence @kbd{M-@key{TAB}} no longer inserts a TAB character. |
2843 |
Like in in many other Emacs modes, @kbd{M-@key{TAB}} now does |
Like in many other Emacs modes, @kbd{M-@key{TAB}} now does |
2844 |
completion. Inserting a TAB has therefore been moved to |
completion. Inserting a TAB has therefore been moved to |
2845 |
@kbd{C-@key{TAB}}. On a character based terminal you can also use |
@kbd{C-@key{TAB}}. On a character based terminal you can also use |
2846 |
@kbd{C-c @key{SPC}}. |
@kbd{C-c @key{SPC}}. |
3046 |
@cindex IDL library routine info |
@cindex IDL library routine info |
3047 |
@cindex Windows |
@cindex Windows |
3048 |
@cindex MacOS |
@cindex MacOS |
|
@cindex Unix |
|
3049 |
@cindex IDL variable @code{!DIR} |
@cindex IDL variable @code{!DIR} |
3050 |
@cindex @code{!DIR}, IDL variable |
@cindex @code{!DIR}, IDL variable |
3051 |
|
|
3068 |
(setq idlwave-system-directory "c:/RSI/IDL54/") |
(setq idlwave-system-directory "c:/RSI/IDL54/") |
3069 |
@end lisp |
@end lisp |
3070 |
|
|
3071 |
@noindent Under UNIX, these values will be automatically inferred from |
@noindent Under GNU and UNIX, these values will be automatically inferred from |
3072 |
an IDLWAVE shell. |
an IDLWAVE shell. |
3073 |
|
|
3074 |
The command @kbd{M-x idlwave-create-libinfo-file} can then be used to |
The command @kbd{M-x idlwave-create-libinfo-file} can then be used to |
3089 |
selected directories, write an updated version of the libinfo file and |
selected directories, write an updated version of the libinfo file and |
3090 |
rebuild IDLWAVE's internal lists. If you give three prefix arguments |
rebuild IDLWAVE's internal lists. If you give three prefix arguments |
3091 |
@w{@kbd{C-u C-u C-u C-c C-i}}, updating will be done with a background |
@w{@kbd{C-u C-u C-u C-c C-i}}, updating will be done with a background |
3092 |
job@footnote{Unix systems only, I think.}. You can continue to work, |
job@footnote{GNU and Unix systems only, I think.}. You can continue to work, |
3093 |
and the library catalog will be re-read when it is ready. |
and the library catalog will be re-read when it is ready. |
3094 |
|
|
3095 |
A note of caution: Depending on your local installation, the IDL |
A note of caution: Depending on your local installation, the IDL |
3103 |
@end defopt |
@end defopt |
3104 |
|
|
3105 |
@defopt idlwave-library-path |
@defopt idlwave-library-path |
3106 |
IDL library path for Windows and MacOS. Not needed under Unix. |
IDL library path for Windows and MacOS. Not needed under GNU and Unix. |
3107 |
@end defopt |
@end defopt |
3108 |
|
|
3109 |
@defopt idlwave-system-directory |
@defopt idlwave-system-directory |
3110 |
The IDL system directory for Windows and MacOS. Not needed under UNIX. |
The IDL system directory for Windows and MacOS. Not needed under GNU and Unix. |
3111 |
@end defopt |
@end defopt |
3112 |
|
|
3113 |
@defopt idlwave-special-lib-alist |
@defopt idlwave-special-lib-alist |
3291 |
(font-lock-mode 1) ; Turn on font-lock mode |
(font-lock-mode 1) ; Turn on font-lock mode |
3292 |
(idlwave-auto-fill-mode 0) ; Turn off auto filling |
(idlwave-auto-fill-mode 0) ; Turn off auto filling |
3293 |
|
|
3294 |
;; Pad with with 1 space (if -n is used then make the |
;; Pad with 1 space (if -n is used then make the |
3295 |
;; padding a minimum of n spaces.) The defaults use -1 |
;; padding a minimum of n spaces.) The defaults use -1 |
3296 |
;; instead of 1. |
;; instead of 1. |
3297 |
(idlwave-action-and-binding "=" '(idlwave-expand-equal 1 1)) |
(idlwave-action-and-binding "=" '(idlwave-expand-equal 1 1)) |
3370 |
editing IDL source files with Emacs/IDLWAVE works with all bells and |
editing IDL source files with Emacs/IDLWAVE works with all bells and |
3371 |
whistles, including routine info, completion and fast online help. Only |
whistles, including routine info, completion and fast online help. Only |
3372 |
a small amount of additional information must be specified in your |
a small amount of additional information must be specified in your |
3373 |
.emacs file: You must specify path names which on a UNIX can be |
.emacs file: you must specify path names which on a GNU or UNIX system |
3374 |
automatically gathered by talking to the IDL program. |
are automatically gathered by talking to the IDL program. |
3375 |
|
|
3376 |
Here is an example of the additional configuration needed for a Windows |
Here is an example of the additional configuration needed for a Windows |
3377 |
system. I am assuming that IDLWAVE has been installed in |
system. I am assuming that IDLWAVE has been installed in |