File: idlwave.el.html
NOTE: IDLWAVE has been moved to GNU ELPA. The version bundled with
Emacs is out-of-date, marked as obsolete, and will be removed
in a future release. Please use M-x list-packages to install
IDLWAVE from GNU ELPA instead of using this version.
IDLWAVE enables feature-rich development and interaction with IDL, the Interactive Data Language. It provides a compelling, full-featured alternative to the IDLDE development environment bundled with IDL.
In the remotely distant past, based on pascal.el, though bears little resemblance to it now.
Incorporates many ideas, such as abbrevs, action routines, and continuation line indenting, from wave.el. wave.el original written by Lubos Pochman, Precision Visuals, Boulder.
See the mode description ("C-h m" in idlwave-mode or "C-h f idlwave-mode")
for features, key bindings, and info.
Also, Info format documentation is available with M-x idlwave-info
New versions of IDLWAVE, documentation, and more information
available from:
https://github.com/jdtsmith/idlwave
INSTALLATION
============
Follow the instructions in the INSTALL file of the distribution. In short, put this file on your load path and add the following lines to your init file:
(autoload 'idlwave-mode "idlwave" "IDLWAVE Mode" t)
(autoload 'idlwave-shell "idlw-shell" "IDLWAVE Shell" t)
(setq auto-mode-alist (cons '("\\\\.pro\\\\'" . idlwave-mode) auto-mode-alist))
SOURCE
======
The newest version of this file is available from the maintainer's Webpage:
https://github.com/jdtsmith/idlwave
DOCUMENTATION
=============
IDLWAVE is documented online in info format. A printable version of the documentation is available from the maintainers webpage (see SOURCE).
ACKNOWLEDGMENTS
===============
Thanks to the following people for their contributions and comments:
Ulrik Dickow <dickow_at_nbi.dk>
Eric E. Dors <edors_at_lanl.gov>
Stein Vidar H. Haugan <s.v.h.haugan_at_astro.uio.no>
David Huenemoerder <dph_at_space.mit.edu>
Kevin Ivory <Kevin.Ivory_at_linmpi.mpg.de>
Dick Jackson <dick_at_d-jackson.com>
Xuyong Liu <liu_at_stsci.edu>
Simon Marshall <Simon.Marshall_at_esrin.esa.it>
Laurent Mugnier <mugnier_at_onera.fr>
Lubos Pochman <lubos_at_rsinc.com>
Bob Portmann <portmann_at_al.noaa.gov>
Patrick M. Ryan <pat_at_jaameri.gsfc.nasa.gov>
Marty Ryba <ryba_at_ll.mit.edu>
Paul Sorenson <aardvark62_at_msn.com>
Phil Sterne <sterne_at_dublin.llnl.gov>
Phil Williams <williams_at_irc.chmcc.org>
CUSTOMIZATION:
=============
IDLWAVE has extensive customize support; to learn about the
variables which control the mode's behavior, use M-x
idlwave-customize.
You can set your own preferred values with Customize, or with Lisp code in .emacs. For an example of what to put into .emacs, check the TexInfo documentation or see a complete .emacs available at the website.
KNOWN PROBLEMS:
==============
IDLWAVE support for the IDL-derived PV-WAVE CL language of Visual
Numerics, Inc. is growing less and less complete as the two
languages grow increasingly apart. The mode probably shouldn't
even have "WAVE" in its title, but it's catchy, and was required
to avoid conflict with the CORBA idl.el mode. Caveat WAVEor.
Moving the point backwards in conjunction with abbrev expansion
does not work as I would like it, but this is a problem with
Emacs abbrev expansion done by the self-insert-command. It ends
up inserting the character that expanded the abbrev after moving
point backward, e.g., "\\cl" expanded with a space becomes
"LONG( )" with point before the close paren. This is solved by
using a temporary function in post-command-hook - not pretty,
but it works.
Tabs and spaces are treated equally as whitespace when filling a
comment paragraph. To accomplish this, tabs are permanently
replaced by spaces in the text surrounding the paragraph, which
may be an undesirable side-effect. Replacing tabs with spaces is
limited to comments only and occurs only when a comment
paragraph is filled via idlwave-fill-paragraph.
Multi-statement lines (using "&") on block begin and end lines can
ruin the formatting. For example, multiple end statements on a
line: endif & endif. Using "&" outside of block begin/end lines
should be okay.
Determining the expression at point for printing and other
examination commands is somewhat rough: currently only fairly
simple entities are found. You can always drag-select or examine
a pre-selected region.
When forcing completion of method keywords, the initial
query for a method has multiple entries for some methods. Would
be too difficult to fix this hardly used case.
Defined variables (129)
idlwave--command-function | If non-nil, a function called from ‘post-command-hook’. |
idlwave--complete-after-success-force-function | A function to evaluate after completion selection in *Completions* buffer. |
idlwave--complete-after-success-function | A function to evaluate after successful completion. |
idlwave-abbrev-change-case | Non-nil means all abbrevs will be forced to either upper or lower case. |
idlwave-abbrev-move | Non-nil means the abbrev hook can move point. |
idlwave-abbrev-start-char | A single character string used to start abbreviations in abbrev mode. |
idlwave-auto-fill-split-string | If non-nil then auto fill will split strings with the IDL ‘+’ operator. |
idlwave-auto-routine-info-updates | Controls under what circumstances routine info is updated automatically. |
idlwave-auto-write-paths | Write out path (!PATH) and system directory (!DIR) info automatically. |
idlwave-before-completion-wconf | The window configuration just before the completion buffer was displayed. |
idlwave-begin-block-reg | Regular expression to find the beginning of a block. |
idlwave-begin-line-comment | A comment anchored at the beginning of line. |
idlwave-begin-unit-reg | Regular expression to find the beginning of a unit. |
idlwave-block-indent | Extra indentation applied to block lines. |
idlwave-block-match-regexp | Regular expression matching reserved words which can stand before |
idlwave-block-matches | Matches between statements and the corresponding END variant. |
idlwave-buffer-case-takes-precedence | Non-nil means, the case of tokens in buffers dominates over system stuff. |
idlwave-buffer-routines | Holds the routine-info obtained by scanning buffers. |
idlwave-catalog-process | The background process currently updating the catalog. |
idlwave-class-alist | Holds the class names known to IDLWAVE. |
idlwave-class-arrow-face | Face to highlight object operator arrows ‘->’ which carry a class property. |
idlwave-class-history | The history of classes selected with the minibuffer. |
idlwave-code-comment | A comment that starts with this regular expression on a line by |
idlwave-comment-indent-char | Character to be inserted for IDL comment indentation. |
idlwave-comment-indent-function | IDL mode comment indent function. |
idlwave-comment-line-start-skip | Regexp to match the start of a full-line comment. |
idlwave-compiled-routines | Holds the routine-info obtained by asking the shell. |
idlwave-complete-empty-string-as-lower-case | Non-nil means, the empty string is considered downcase for completion. |
idlwave-complete-functions | List of special completion functions. |
idlwave-complete-special | List of special completion functions. |
idlwave-completion-case | Association list setting the case of completed words. |
idlwave-completion-fontify-classes | Non-nil means, fontify the classes in completions buffer. |
idlwave-completion-force-default-case | Non-nil means, completion will always honor ‘idlwave-completion-case’. |
idlwave-completion-map | Keymap for ‘completion-list-mode’ with ‘idlwave-complete’. |
idlwave-completion-mark | A mark pointing to the beginning of the completion string. |
idlwave-completion-restore-window-configuration | Non-nil means, try to restore the window configuration after completion. |
idlwave-completion-show-classes | Number of classes to show when completing object methods and keywords. |
idlwave-config-directory | Directory for configuration files and user-library catalog. |
idlwave-continuation-char | Character which is inserted as a last character on previous line by |
idlwave-continuation-indent | Extra indentation applied to continuation lines. |
idlwave-continue-line-reg | Regular expression to match a continued line. |
idlwave-default-font-lock-items | Items which should be fontified on the default fontification level 2. |
idlwave-determine-class-functions | Special hook to determine a class. |
idlwave-determine-class-special | Special hook to determine a class. |
idlwave-do-actions | Non-nil means performs actions when indenting. |
idlwave-doc-modifications-keyword | The modifications keyword to use with the log documentation commands. |
idlwave-doclib-end | Regexp matching the end of a document library header. |
idlwave-doclib-start | Regexp matching the start of a document library header. |
idlwave-end-block-reg | Regular expression to find the end of a block. |
idlwave-end-offset | Extra indentation applied to block END lines. |
idlwave-end-unit-reg | Regular expression to find the line that indicates the end of unit. |
idlwave-executive-commands-alist | Alist of system variables and their help files. |
idlwave-expand-generic-end | Non-nil means expand generic END to ENDIF/ENDELSE/ENDWHILE etc. |
idlwave-experimental | Non-nil means turn on a few experimental features. |
idlwave-file-header | A list (PATHNAME STRING) specifying the doc-header template to use for |
idlwave-fill-comment-line-only | If non-nil then auto fill will only operate on comment lines. |
idlwave-find-symbol-syntax-table | Syntax table that treats symbol characters as word characters. |
idlwave-font-lock-keywords | Default expressions to highlight in IDLWAVE mode. |
idlwave-font-lock-keywords-1 | Subdued level highlighting for IDLWAVE mode. |
idlwave-font-lock-keywords-2 | Medium level highlighting for IDLWAVE mode. |
idlwave-font-lock-keywords-3 | Gaudy level highlighting for IDLWAVE mode. |
idlwave-function-completion-adds-paren | Non-nil means, completion automatically adds ‘(’ after completed function. |
idlwave-hang-indent-regexp | Regular expression matching the position of the hanging indent |
idlwave-hanging-indent | If set non-nil then comment paragraphs are indented under the |
idlwave-header-to-beginning-of-file | Non-nil means, the documentation header will always be at start of file. |
idlwave-help-application | The external application providing reference help for programming. |
idlwave-highlight-help-links-in-completion | Non-nil means, highlight completions for which system help is available. |
idlwave-identifier | Regular expression matching an IDL identifier. |
idlwave-idlwave_routine_info-compiled | Remember if the routine info procedure is already compiled. |
idlwave-indent-action-table | Associated array containing action lists of search string (car), |
idlwave-indent-expand-table | Associated array containing action lists of search string (car), |
idlwave-indent-parens-nested | Non-nil means indent continuation lines with parens by nesting |
idlwave-indent-to-open-paren | Non-nil means, indent continuation lines to innermost open parenthesis. |
idlwave-init-rinfo-when-idle-after | Seconds of idle time before routine info is automatically initialized. |
idlwave-keyword-class-inheritance | List of regular expressions for class-driven keyword inheritance. |
idlwave-keyword-completion-adds-equal | Non-nil means, completion automatically adds ‘=’ after completed keywords. |
idlwave-label | Regular expression matching IDL labels. |
idlwave-last-system-routine-info-cons-cell | The last cons cell in the system routine info. |
idlwave-library-catalog-libname | Name of library catalog loaded from .idlwave_catalog files. |
idlwave-library-catalog-routines | Holds the procedure routine-info from the .idlwave_catalog library files. |
idlwave-library-path | Library path for Windows and Mac OS (OS9). Not needed under UNIX. |
idlwave-load-hook | Normal hook. Executed when idlwave.el is loaded. |
idlwave-main-block-indent | Extra indentation for the main block of code. |
idlwave-max-extra-continuation-indent | Maximum additional indentation for special continuation indent. |
idlwave-mode-abbrev-table | Abbreviation table used for IDLWAVE mode. |
idlwave-mode-hook | Normal hook. Executed when a buffer is put into ‘idlwave-mode’. |
idlwave-mode-map | Keymap used in IDL mode. |
idlwave-mode-menu | IDL and WAVE CL editing menu. |
idlwave-mode-syntax-table | Syntax table in use in ‘idlwave-mode’ buffers. |
idlwave-no-change-comment | The indentation of a comment that starts with this regular |
idlwave-outlawed-buffers | List of buffers pulled up by IDLWAVE for special reasons. |
idlwave-pad-keyword | Non-nil means pad ‘=’ in keywords (routine calls or defs) like assignment. |
idlwave-path-alist | Alist with !PATH directories and zero or more flags if the dir has |
idlwave-query-class | Association list governing specification of object classes for completion. |
idlwave-query-shell-for-routine-info | Non-nil means query the shell for info about compiled routines. |
idlwave-reindent-end | Non-nil means re-indent line after END was typed. |
idlwave-reserved-word-upcase | Non-nil means, reserved words will be made upper case via abbrev expansion. |
idlwave-resize-routine-help-window | Non-nil means, resize the Routine-info *Help* window to fit the content. |
idlwave-rinfo-max-source-lines | Maximum number of source files displayed in the Routine Info window. |
idlwave-routine-info.pro | The IDL programs to get info from the shell. |
idlwave-routines | Holds the combined procedure/function/method routine-info. |
idlwave-scan-all-buffers-for-routine-info | Non-nil means, scan buffers for IDL programs when updating info. |
idlwave-shell-automatic-start | If non-nil attempt invoke ‘idlwave-shell’ if not already running. |
idlwave-shell-command-line-options | A list of command line options for calling the IDL program. |
idlwave-shell-debug-modifiers | List of modifiers to be used for the debugging commands. |
idlwave-shell-explicit-file-name | If non-nil, this is the command to run IDL. |
idlwave-show-block | Non-nil means point blinks to block beginning for ‘idlwave-show-begin’. |
idlwave-sort-prefer-buffer-info | Internal variable used to influence ‘idlwave-routine-twin-compare’. |
idlwave-special-lib-alist | Alist of regular expressions matching special library directories. |
idlwave-split-line-string | If non-nil then ‘idlwave-split-line’ will split strings with ‘+’. |
idlwave-startup-message | Non-nil displays a startup message when ‘idlwave-mode’ is first called. |
idlwave-statement-match | Associated list of statement matching regular expressions. |
idlwave-store-inquired-class | Non-nil means, store class of a method call as text property on ‘->’. |
idlwave-struct-skip | Regexp for skipping continued blank or comment-only lines in structures. |
idlwave-struct-tag-regexp | Regexp for structure tags. |
idlwave-support-inheritance | Non-nil means, treat inheritance with completion, online help etc. |
idlwave-surround-by-blank | Non-nil means, enable ‘idlwave-surround’. |
idlwave-system-directory | The IDL system directory for Windows and Mac OS. Not needed under |
idlwave-system-routines | Holds the routine-info obtained by scanning buffers. |
idlwave-system-variables-alist | Alist of system variables and the associated structure tags. |
idlwave-sysvar | Regular expression matching IDL system variables. |
idlwave-timestamp-hook | The hook function used to update the timestamp of a function. |
idlwave-true-path-alist | Like ‘idlwave-path-alist’, but with true filenames. |
idlwave-unresolved-routines | Holds the unresolved routine-info obtained by asking the shell. |
idlwave-update-rinfo-hook | List of functions which should run after a global rinfo update. |
idlwave-use-last-hang-indent | If non-nil then use last match on line for ‘idlwave-hang-indent-regexp’. |
idlwave-use-library-catalogs | Non-nil means search the IDL path for library catalog files. |
idlwave-user-catalog-routines | Holds the procedure routine-info from the user scan. |
idlwave-variable | Regular expression matching IDL variable names. |