EMACS wave-mode now available [message #655] |
Thu, 28 January 1993 08:02 |
lubosp
Messages: 3 Registered: January 1993
|
Junior Member |
|
|
Beta version of wave.el, EMACS wave mode for editing of applications
written in WAVE Command Language is now available on Visual Numerics, Inc.
anonymous ftp site.
This version was tested in-house with emacs versions 18.57, and 19.1
(lemacs), and WAVE CL. It is used extensively for internal development.
Because there have been numerous questions on this newsgroup in the past,
we thought it might be of public interest so we are making it available.
In accordance with Free Software Foundation policy, wave-mode is
distributed free of charge; standard FSF copyright policy applies.
Mail bugs, suggestions, improvements to lubosp@pvi.com.
Please read following release notes about wave-mode functionality, how to
get it, how to install it, and where to mail bug reports:
Emacs WAVE Mode (wave-mode) for WAVE Command Language.
Features:
o Case Conversion
o reserved words are converted to upper case
o system variables are capitalized
o COMMON name is capitalized
o PRO or FUNCTION name is capitalized
o Spacing
o space inserted around:
& - multiple statement
,
= - including keywords
<
>
o Defined Keys
C-c ; - comment region
M-; - insert and indent parallel comment
M-C-d - mark library documentation region
C-M-a - beginning of subprogram
C-M-e - end of subprogram
M-C-h - mark subprogram
M-C-q - indent subprogram
M-RET - start continuation line
M-TAB - insert TAB
C-c C-p - previous statement
C-c C-n - next statement
TAB - indent line
o User Option Variables
Variables controlling indentation style and extra features:
wave-block-indent
Extra indentation within blocks. (default 3)
wave-continuation-indent
Extra indentation within continuation lines. (default 2)
wave-doclib-start
Start of Wave CL document library header. (default ^[;*]\+)
wave-doclib-end
End of Wave CL document library header. (default ^[;*]-)
wave-minimum-statement-indent
Minimum indentation for wave statements. (default 0)
wave-newline-and-indent
Automatically indents current line, inserts newline and
indents it. (default is t)
wave-comment-region
String inserted by \\[wave-comment-region] at start of each line in
region. (default \";; \")
wave-surround-by-blank
Automatically surrounds '=','<','>','&' with blanks,
appends blank to comma. (default is t)
wave-startup-message
Set to nil to inhibit message first time wave-mode is used.
wave-block-match-back-max
Maximum number of lines to search for matching block delimiter
to blocks lines. (default is 40)
Set to 0 to suppress block matching.
o Indentation
By default current and next comment line is indented, when RET is
entered. This can be suppressed by setting `wave-newline-and-indent'
to nil. TAB is used for explicit indentation.
After the line is indented, all abbreviations on that line are
expanded, spacing ant case conversion is performed.
Code Indentation:
Variable `wave-block-indent' specifies relative indent for
block statements(begin...end),
variable `wave-continuation-indent' specifies relative indent for
continuation lines.
Continuation lines inside [], (), {} (structures) are indented by
`wave-continuation-indent' chars after opening parenthesis.
Continuation lines in PRO, FUNCTION declarations are indented
just after the procedure/function name followed by comma.
Labels not followed by code are left justified to the beginning
of the line.
Include files introduced by '@' are left justified to the beginning
of the line.
Comment Indentation:
Full line comments starting at the beginning of the line are
are not indented.
Full lin comments starting with white space are indented as
a code.
Code line comment is indented to the value of `comment-column'.
o Block Statement, Quote Matching
When end of the block statement is entered (ENDCASE, ENDELSE,
ENDIF, ENDREP, ENDWHILE, or END), cursor flashes shortly to the
beginning of the block.
When closing double or single quote is entered, cursor flashes
shortly to the beginning of the block.
o Abbreviations
Abbreviations are available for all reserved words, often used
functions, and WAVE Toolbox and Widget routines.
'.' character is used as a prefix for abbreviations.
To get entire list of abbreviations type .?, while in wave-mode.
List of abbreviations:
.b BEGIN .c CASE OF
.cb BYTE( ) .cc COMPLEX( )
.cd DOUBLE( ) .cf FLOAT( )
.cl LONG( ) .co COMMON
.cs STRING( ) .cx FIX( )
.d DO .e ELSE
.ec ENDCASE .ee ENDELSE
.ef ENDFOR .ei ENDIF ELSE IF
.el ENDIF ELSE .en ENDIF
.er ENDREP .ew ENDWHILE
.f FOR DO .fu FUNCTION
.g GOTO, .h HELP,
.i IF .k KEYWORD_SET( )
.n N_ELEMENTS( ) .oi ON_IOERROR,
.on ON_ERROR, .or OPENR,
.ou OPENU, .ow OPENW,
.p PRO .pr PRINT,
.pt PLOT, .r REPEAT UNTIL
.re READ, .rf READF,
.rt RETURN .ru READU,
.sc STRCOMPRESS( ) .sl STRLOWCASE( )
.sm STRMID( ) .sn STRLEN( )
.sp STRPOS( ) .sr STRTRIM( )
.st STRPUT( ) .su STRUPCASE( )
.t THEN .tac WtAddCallback( )
.tah WtAddHandler( ) .tc WtCreate( )
.tca WtCallback( ) .tcl WtClose( )
.tg WtGet( ) .ti WtInit( )
.tl WtList( ) .tlo WtLoop( )
.tml WtMainLoop( ) .tp WtPointer( )
.ts WtSet( ) .tt WtTimer( )
.u UNTIL .w WHILE DO
.wb WwButtonBox( ) .wcm WwCommand( )
.wco WwControlBox( ) .wdi WwDialog( )
.wdr WwDrawing( ) .wf WwFileSelection( )
.wg WwGetValue( ) .wi WwInit( )
.wla WwLayout( ) .wli WwList( )
.wlo WwLoop .wm WwMessage( )
.wmb WwMenuBar( ) .wmw WwMainWindow( )
.wo WwOptionMenu( ) .wp WwPopupMenu( )
.wr WwRadioBox( ) .ws WwSetValue( )
.wt WwText( ) .wto WwToolBox( )
.wu WRITEU,
o Modifying in Batch Mode
You can modify your WAVE CL *.pro file in batch mode using
following function and command:
Example:
1. Create following Lisp function in wave-indent.el file:
(wave-mode)
(let ((start 1) (end (save-excursion (end-of-buffer) (point))))
(indent-region start end nil))
(save-buffer)
2. Issue following command:
emacs -batch <filename> -l wave-indent.el
o Installation
To install:
1. Download wave.el file (and other files, if you wish), and place
them to appropriate 'load' directory.
2. Put in your ~/.emacs file:
(you may want to specify a file path for wave.el file)
(setq auto-mode-alist
(append
'(("\\.pro$" . wave-mode))
auto-mode-alist))
(autoload 'wave-mode "wave"
"Major mode for edition WAVE CL .pro files" t)
o Customization
Turning on Wave mode calls the value of the variable wave-mode-hook
with no args, if that value is non-nil.
Example:
;;
;; To customize wave-mode put following code to your .emacs file
;;
(setq wave-mode-hook
(function (lambda ()
(setq wave-block-indent 6
wave-continuation-indent 3
wave-minimum-statement-indent 2
wave-newline-and-indent nil
wave-surround-by-blank nil))))
o Distribution
WAVE CL wave-mode Emacs mode is available on Visual Numerics, Inc.
anonymous ftp:
address: ftp.pvi.com (128.138.213.22)
files: PVI/emacs/README
PVI/emacs/wave.el
PVI/emacs/wave.elc
PVI/emacs/wave-indent.el
PVI/emacs/wave-mode-hook.el
PVI/emacs/wave-mode.txt
For better performance byte compile wave.el file after download.
In accordance with Free Software Foundation policy, wave-mode is
distributed free of charge; standard FSF copyright policy applies.
Mail bugs, suggestions, improvements to lubosp@pvi.com.
--
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++
Lubos Pochman, Visual Numerics, Inc. phone: (303)530-9000,ext.355
email: lubosp@pvi.com
|
|
|