home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / lang / idlpvwa / 638 < prev    next >
Encoding:
Text File  |  1993-01-29  |  8.3 KB  |  288 lines

  1. Newsgroups: comp.lang.idl-pvwave
  2. Path: sparky!uunet!europa.eng.gtefsd.com!emory!swrinde!sdd.hp.com!usc!howland.reston.ans.net!spool.mu.edu!agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!csn!pvi.com!pvi.com!baloo!lubosp
  3. From: lubosp@judy.pvi.com (Lubos Pochman x355)
  4. Subject: EMACS wave-mode now available
  5. Message-ID: <LUBOSP.93Jan28090221@judy.pvi.com>
  6. Sender: news@pvi.com
  7. Organization: /depot/home/eng1/lubosp/.organization
  8. Date: Thu, 28 Jan 1993 16:02:21 GMT
  9. Lines: 277
  10.  
  11.  
  12. Beta version of wave.el, EMACS wave mode for editing of applications
  13. written in WAVE Command Language is now available on Visual Numerics, Inc.
  14. anonymous ftp site.
  15.  
  16. This version was tested in-house with emacs versions 18.57, and 19.1
  17. (lemacs), and WAVE CL. It is used extensively for internal development.
  18. Because there have been numerous questions on this newsgroup in the past,
  19. we thought it might be of public interest so we are making it available.
  20.  
  21. In accordance with Free Software Foundation policy, wave-mode is
  22. distributed free of charge; standard FSF copyright policy applies.
  23.  
  24. Mail bugs, suggestions, improvements to lubosp@pvi.com.
  25.  
  26. Please read following release notes about wave-mode functionality, how to
  27. get it, how to install it, and where to mail bug reports:
  28.  
  29.  
  30.  
  31.  
  32.     Emacs WAVE Mode (wave-mode) for WAVE Command Language.
  33.  
  34.  
  35. Features:
  36.  
  37.   o Case Conversion
  38.  
  39.     o reserved words are converted to upper case
  40.     o system variables are capitalized
  41.     o COMMON name is capitalized
  42.     o PRO or FUNCTION name is capitalized
  43.  
  44.   o Spacing
  45.  
  46.     o space inserted around:
  47.         &    - multiple statement
  48.         ,
  49.         =    - including keywords
  50.         <
  51.         >
  52.  
  53.   o Defined Keys
  54.  
  55.     C-c ;    - comment region
  56.     M-;    - insert and indent parallel comment
  57.     M-C-d    - mark library documentation region
  58.  
  59.     C-M-a    - beginning of subprogram
  60.     C-M-e    - end of subprogram
  61.     M-C-h    - mark subprogram
  62.     M-C-q    - indent subprogram
  63.  
  64.     M-RET    - start continuation line
  65.     M-TAB    - insert TAB
  66.     C-c C-p    - previous statement
  67.     C-c C-n    - next statement
  68.     TAB    - indent line
  69.  
  70.  
  71.   o User Option Variables
  72.  
  73.   Variables controlling indentation style and extra features:
  74.  
  75.    wave-block-indent
  76.     Extra indentation within blocks.  (default 3)
  77.  
  78.    wave-continuation-indent
  79.     Extra indentation within continuation lines.  (default 2)
  80.  
  81.  wave-doclib-start
  82.     Start of Wave CL document library header.  (default ^[;*]\+)
  83.  
  84.  wave-doclib-end
  85.     End of Wave CL document library header.    (default ^[;*]-)
  86.  
  87.  wave-minimum-statement-indent
  88.     Minimum indentation for wave statements. (default 0)
  89.  
  90.  wave-newline-and-indent
  91.     Automatically indents current line, inserts newline and
  92.     indents it.   (default is t) 
  93.  
  94.  wave-comment-region
  95.     String inserted by \\[wave-comment-region] at start of each line in 
  96.     region.  (default \";; \")
  97.  
  98.  wave-surround-by-blank
  99.     Automatically surrounds '=','<','>','&' with blanks,
  100.     appends blank to comma. (default is t)
  101.  
  102.  wave-startup-message
  103.     Set to nil to inhibit message first time wave-mode is used.
  104.  
  105.  wave-block-match-back-max
  106.     Maximum number of lines to search for matching block delimiter
  107.     to blocks lines. (default is 40)
  108.     Set to 0 to suppress block matching.
  109.  
  110.  
  111.   o Indentation
  112.  
  113.   By default current and next comment line is indented, when RET is
  114.   entered. This can be suppressed by setting `wave-newline-and-indent'
  115.   to nil. TAB is used for explicit indentation.
  116.  
  117.   After the line is indented, all abbreviations on that line are
  118.   expanded, spacing ant case conversion is performed.
  119.  
  120.   Code Indentation:
  121.     Variable `wave-block-indent' specifies relative indent for
  122.     block statements(begin...end),
  123.     variable `wave-continuation-indent' specifies relative indent for
  124.     continuation lines.
  125.     Continuation lines inside [], (), {} (structures) are indented by
  126.     `wave-continuation-indent' chars after opening parenthesis. 
  127.     Continuation lines in PRO, FUNCTION declarations are indented
  128.     just after the procedure/function name followed by comma.
  129.     Labels not followed by code are left justified to the beginning
  130.     of the line.
  131.     Include files introduced by '@' are left justified to the beginning
  132.     of the line.
  133.  
  134.   Comment Indentation:
  135.     Full line comments starting at the beginning of the line are
  136.     are not indented.
  137.     Full lin comments starting with white space are indented as
  138.     a code.
  139.     Code line comment is indented to the value of `comment-column'.
  140.  
  141.  
  142.   o Block Statement, Quote Matching
  143.  
  144.     When end of the block statement is entered (ENDCASE, ENDELSE,
  145.     ENDIF, ENDREP, ENDWHILE, or END), cursor flashes shortly to the
  146.     beginning of the block.
  147.  
  148.     When closing double or single quote is entered, cursor flashes
  149.     shortly to the beginning of the block.
  150.  
  151.  
  152.   o Abbreviations
  153.  
  154.     Abbreviations are available for all reserved words, often used
  155.     functions, and WAVE Toolbox and Widget routines.
  156.  
  157.     '.' character is used as a prefix for abbreviations.
  158.  
  159.     To get entire list of abbreviations type .?, while in wave-mode.
  160.  
  161.     List of abbreviations:
  162.  
  163.     .b    BEGIN                .c    CASE OF
  164.         .cb    BYTE( )                .cc    COMPLEX( )
  165.         .cd    DOUBLE( )            .cf    FLOAT( )
  166.         .cl    LONG( )                .co    COMMON
  167.         .cs    STRING( )            .cx    FIX( )
  168.         .d    DO                .e    ELSE
  169.         .ec    ENDCASE                .ee    ENDELSE
  170.         .ef    ENDFOR                .ei    ENDIF ELSE IF
  171.         .el    ENDIF ELSE            .en    ENDIF
  172.         .er    ENDREP                .ew    ENDWHILE
  173.         .f    FOR DO                .fu    FUNCTION
  174.         .g    GOTO,                .h    HELP,
  175.         .i    IF                .k    KEYWORD_SET( )
  176.         .n    N_ELEMENTS( )            .oi    ON_IOERROR,
  177.         .on    ON_ERROR,            .or    OPENR,
  178.         .ou    OPENU,                .ow    OPENW,
  179.         .p    PRO                .pr    PRINT,
  180.         .pt    PLOT,                .r    REPEAT UNTIL
  181.         .re    READ,                .rf    READF,
  182.     .rt    RETURN                .ru    READU,
  183.         .sc    STRCOMPRESS( )            .sl    STRLOWCASE( )
  184.         .sm    STRMID( )            .sn    STRLEN( )
  185.         .sp    STRPOS( )            .sr    STRTRIM( )
  186.         .st    STRPUT( )            .su    STRUPCASE( )
  187.         .t    THEN                .tac    WtAddCallback( )
  188.         .tah    WtAddHandler( )            .tc    WtCreate( )
  189.         .tca    WtCallback( )            .tcl    WtClose( )
  190.         .tg    WtGet( )            .ti    WtInit( )
  191.         .tl    WtList( )            .tlo    WtLoop( )
  192.         .tml    WtMainLoop( )            .tp    WtPointer( )
  193.         .ts    WtSet( )            .tt    WtTimer( )
  194.         .u    UNTIL                .w    WHILE DO
  195.         .wb    WwButtonBox( )            .wcm    WwCommand( )
  196.         .wco    WwControlBox( )            .wdi    WwDialog( )
  197.         .wdr    WwDrawing( )            .wf    WwFileSelection( )
  198.         .wg    WwGetValue( )            .wi    WwInit( )
  199.         .wla    WwLayout( )            .wli    WwList( )
  200.         .wlo    WwLoop                .wm    WwMessage( )
  201.     .wmb    WwMenuBar( )            .wmw    WwMainWindow( )
  202.     .wo    WwOptionMenu( )            .wp    WwPopupMenu( )
  203.     .wr    WwRadioBox( )            .ws    WwSetValue( )
  204.     .wt    WwText( )            .wto    WwToolBox( )
  205.     .wu    WRITEU,
  206.  
  207.  
  208.   o Modifying in Batch Mode
  209.  
  210.     You can modify your WAVE CL *.pro file in batch mode using
  211.     following function and command:
  212.  
  213.     Example:
  214.  
  215.     1. Create following Lisp function in wave-indent.el file:
  216.  
  217.     (wave-mode)
  218.     (let ((start 1) (end (save-excursion (end-of-buffer) (point))))
  219.       (indent-region start end nil))
  220.     (save-buffer)
  221.  
  222.     2. Issue following command:
  223.  
  224.     emacs -batch <filename> -l wave-indent.el
  225.  
  226.  
  227.   o Installation
  228.  
  229.   To install:
  230.  
  231.   1. Download wave.el file (and other files, if you wish), and place
  232.      them to appropriate 'load' directory.
  233.  
  234.   2. Put in your ~/.emacs file:
  235.   (you may want to specify a file path for wave.el file)
  236.  
  237.   (setq auto-mode-alist
  238.       (append
  239.        '(("\\.pro$" . wave-mode))
  240.        auto-mode-alist))
  241.   (autoload 'wave-mode "wave"
  242.    "Major mode for edition WAVE CL .pro files" t)
  243.  
  244.  
  245.   o Customization
  246.  
  247.     Turning on Wave mode calls the value of the variable wave-mode-hook 
  248.     with no args, if that value is non-nil.
  249.  
  250.  
  251.     Example:
  252.     ;;
  253.     ;; To customize wave-mode put following code to your .emacs file
  254.     ;;
  255.     (setq wave-mode-hook
  256.           (function (lambda ()
  257.             (setq wave-block-indent 6
  258.                   wave-continuation-indent 3
  259.                   wave-minimum-statement-indent 2
  260.                       wave-newline-and-indent nil
  261.                       wave-surround-by-blank nil))))
  262.  
  263.  
  264.   o  Distribution
  265.  
  266.     WAVE CL wave-mode Emacs mode is available on Visual Numerics, Inc.
  267.     anonymous ftp:
  268.  
  269.         address:    ftp.pvi.com (128.138.213.22)
  270.  
  271.         files:        PVI/emacs/README
  272.                 PVI/emacs/wave.el
  273.                 PVI/emacs/wave.elc
  274.                 PVI/emacs/wave-indent.el
  275.                 PVI/emacs/wave-mode-hook.el
  276.                 PVI/emacs/wave-mode.txt
  277.  
  278.     For better performance byte compile wave.el file after download.
  279.  
  280.     In accordance with Free Software Foundation policy, wave-mode is
  281.     distributed free of charge; standard FSF copyright policy applies.
  282.  
  283.     Mail bugs, suggestions, improvements to lubosp@pvi.com.
  284. --
  285. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  286.      Lubos Pochman, Visual Numerics, Inc. phone: (303)530-9000,ext.355
  287.                         email: lubosp@pvi.com
  288.