/[emacs]/emacs/lisp/progmodes/dcl-mode.el
ViewVC logotype

Diff of /emacs/lisp/progmodes/dcl-mode.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by sds, Tue Nov 27 15:52:51 2001 UTC revision 1.8.4.1 by miles, Fri Apr 4 06:20:32 2003 UTC
# Line 31  Line 31 
31  ;;  ;;
32  ;; Type `C-h m' when you are editing a .COM file to get more  ;; Type `C-h m' when you are editing a .COM file to get more
33  ;; information about this mode.  ;; information about this mode.
34  ;;  ;;
35  ;; To use templates you will need a version of tempo.el that is at  ;; To use templates you will need a version of tempo.el that is at
36  ;; least later than the buggy 1.1.1, which was included with my versions of  ;; least later than the buggy 1.1.1, which was included with my versions of
37  ;; Emacs.  I used version 1.2.4.  ;; Emacs.  I used version 1.2.4.
38  ;; The latest tempo.el distribution can be fetched from  ;; The latest tempo.el distribution can be fetched from
39  ;; ftp.lysator.liu.se in the directory /pub/emacs.  ;; ftp.lysator.liu.se in the directory /pub/emacs.
40  ;; I recommend setting (setq tempo-interactive t).  This will make  ;; I recommend setting (setq tempo-interactive t).  This will make
# Line 47  Line 47 
47  ;;  ;;
48  ;; Any feedback will be welcomed.  If you write functions for  ;; Any feedback will be welcomed.  If you write functions for
49  ;; dcl-calc-command-indent-function or dcl-calc-cont-indent-function,  ;; dcl-calc-command-indent-function or dcl-calc-cont-indent-function,
50  ;; please send them to the maintainer.  ;; please send them to the maintainer.
51  ;;  ;;
52  ;;  ;;
53  ;; Ideas for improvement:  ;; Ideas for improvement:
54    ;; * Better font-lock support.
55  ;; * Change meaning of `left margin' when dcl-tab-always-indent is nil.  ;; * Change meaning of `left margin' when dcl-tab-always-indent is nil.
56  ;;   Consider the following line (`_' is the cursor):  ;;   Consider the following line (`_' is the cursor):
57  ;;     $ label: _ command  ;;     $ label: _ command
# Line 71  Line 72 
72    
73  ;;; *** Customization *****************************************************  ;;; *** Customization *****************************************************
74    
75    
76    ;; First, font lock.  This is a minimal approach, please improve!
77    
78    (defvar dcl-font-lock-keywords
79      '(("\\<\\(if\\|then\\|else\\|endif\\)\\>"
80         1 font-lock-keyword-face)
81        ("\\<f[$][a-z]+\\>"
82         0 font-lock-builtin-face)
83        ("[.]\\(eq\\|not\\|or\\|and\\|lt\\|gt\\|le\\|ge\\|eqs\\|nes\\)[.]"
84         0 font-lock-builtin-face))
85      "Font lock keyword specification for DCL mode.
86    Presently this includes some syntax, .OP.erators, and \"f$\" lexicals.")
87    
88    (defvar dcl-font-lock-defaults
89      '(dcl-font-lock-keywords nil)
90      "Font lock specification for DCL mode.")
91    
92    
93    ;; Now the rest.
94    
95  (defgroup dcl nil  (defgroup dcl nil
96    "Major mode for editing DCL command files."    "Major mode for editing DCL command files."
97    :group 'languages)    :group 'languages)
# Line 98  dcl-calc-cont-indent-function is set to Line 119  dcl-calc-cont-indent-function is set to
119    
120  (defcustom dcl-margin-offset 8  (defcustom dcl-margin-offset 8
121    "*Indentation for the first command line in DCL.    "*Indentation for the first command line in DCL.
122  The first command line in a file or after a SUBROUTINE statement is indented  The first command line in a file or after a SUBROUTINE statement is indented
123  this much.  Other command lines are indented the same number of columns as  this much.  Other command lines are indented the same number of columns as
124  the preceding command line.  the preceding command line.
125  A command line is a line that starts with `$'."  A command line is a line that starts with `$'."
# Line 137  Set to nil to only indent at THEN-ELSE-E Line 158  Set to nil to only indent at THEN-ELSE-E
158    
159  (defcustom dcl-calc-command-indent-function nil  (defcustom dcl-calc-command-indent-function nil
160    "*Function to calculate indentation for a command line in DCL.    "*Function to calculate indentation for a command line in DCL.
161  If this variable is non-nil it is called as a function:  If this variable is non-nil it is called as a function:
162    
163  \(func INDENT-TYPE CUR-INDENT EXTRA-INDENT LAST-POINT THIS-POINT)  \(func INDENT-TYPE CUR-INDENT EXTRA-INDENT LAST-POINT THIS-POINT)
164    
165  The function must return the number of columns to indent the current line or  The function must return the number of columns to indent the current line or
166  nil to get the default indentation.  nil to get the default indentation.
167    
168  INDENT-TYPE is a symbol indicating what kind of indentation should be done.  INDENT-TYPE is a symbol indicating what kind of indentation should be done.
# Line 150  It can have the following values: Line 171  It can have the following values:
171    outdent     the lines indentation should be decreased, e.g a line with ENDIF.    outdent     the lines indentation should be decreased, e.g a line with ENDIF.
172    first-line  indentation for the first line in a buffer or SUBROUTINE.    first-line  indentation for the first line in a buffer or SUBROUTINE.
173  CUR-INDENT is the indentation of the preceding command line.  CUR-INDENT is the indentation of the preceding command line.
174  EXTRA-INDENT is the default change in indentation for this line  EXTRA-INDENT is the default change in indentation for this line
175  \(a negative number for 'outdent).  \(a negative number for 'outdent).
176  LAST-POINT is the buffer position of the first significant word on the  LAST-POINT is the buffer position of the first significant word on the
177  previous line or nil if the current line is the first line.  previous line or nil if the current line is the first line.
178  THIS-POINT is the buffer position of the first significant word on the  THIS-POINT is the buffer position of the first significant word on the
179  current line.  current line.
180    
181  If this variable is nil, the indentation is calculated as  If this variable is nil, the indentation is calculated as
182  CUR-INDENT + EXTRA-INDENT.  CUR-INDENT + EXTRA-INDENT.
183    
184  This package includes two functions suitable for this:  This package includes two functions suitable for this:
# Line 169  This package includes two functions suit Line 190  This package includes two functions suit
190    
191  (defcustom dcl-calc-cont-indent-function 'dcl-calc-cont-indent-relative  (defcustom dcl-calc-cont-indent-function 'dcl-calc-cont-indent-relative
192    "*Function to calculate indentation for a continuation line.    "*Function to calculate indentation for a continuation line.
193  If this variable is non-nil it is called as a function:  If this variable is non-nil it is called as a function:
194    
195  \(func CUR-INDENT EXTRA-INDENT)  \(func CUR-INDENT EXTRA-INDENT)
196    
197  The function must return the number of columns to indent the current line or  The function must return the number of columns to indent the current line or
198  nil to get the default indentation.  nil to get the default indentation.
199    
200  If this variable is nil, the indentation is calculated as  If this variable is nil, the indentation is calculated as
201  CUR-INDENT + EXTRA-INDENT.  CUR-INDENT + EXTRA-INDENT.
202    
203  This package includes one function suitable for this:  This package includes one function suitable for this:
# Line 189  This package includes one function suita Line 210  This package includes one function suita
210    "*Controls the operation of the TAB key in DCL mode.    "*Controls the operation of the TAB key in DCL mode.
211  If t, pressing TAB always indents the current line.  If t, pressing TAB always indents the current line.
212  If nil, pressing TAB indents the current line if point is at the left margin.  If nil, pressing TAB indents the current line if point is at the left margin.
213  Data lines (i.e. lines not part of a command line or continuation line) are  Data lines (i.e. lines not part of a command line or continuation line) are
214  never indented."  never indented."
215    :type 'boolean    :type 'boolean
216    :group 'dcl)    :group 'dcl)
# Line 246  never indented." Line 267  never indented."
267    "*Default imenu generic expression for DCL.    "*Default imenu generic expression for DCL.
268    
269  The default includes SUBROUTINE labels in the main listing and  The default includes SUBROUTINE labels in the main listing and
270  sub-listings for other labels, CALL, GOTO and GOSUB statements.  sub-listings for other labels, CALL, GOTO and GOSUB statements.
271  See `imenu-generic-expression' for details."  See `imenu-generic-expression' for details."
272    :type '(repeat (sexp :tag "Imenu Expression"))    :type '(repeat (sexp :tag "Imenu Expression"))
273    :group 'dcl)    :group 'dcl)
# Line 270  See `imenu-generic-expression' for detai Line 291  See `imenu-generic-expression' for detai
291    (modify-syntax-entry ?\n ">" dcl-mode-syntax-table) ; comment end    (modify-syntax-entry ?\n ">" dcl-mode-syntax-table) ; comment end
292    (modify-syntax-entry ?< "(>" dcl-mode-syntax-table) ; < and ...    (modify-syntax-entry ?< "(>" dcl-mode-syntax-table) ; < and ...
293    (modify-syntax-entry ?> ")<" dcl-mode-syntax-table) ; > is a matching pair    (modify-syntax-entry ?> ")<" dcl-mode-syntax-table) ; > is a matching pair
294  )  )
295    
296    
297  (defvar dcl-mode-map ()  (defvar dcl-mode-map ()
# Line 357  A label is a name followed by a colon fo Line 378  A label is a name followed by a colon fo
378    :group 'dcl)    :group 'dcl)
379    
380    
381  (defcustom dcl-cmd-r  (defcustom dcl-cmd-r
382    "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*[^!\"\n]*\\(\".*\\(\"\".*\\)*\"\\)*[^!\"\n]*"    "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*[^!\"\n]*\\(\".*\\(\"\".*\\)*\"\\)*[^!\"\n]*"
383    "Regular expression describing a DCL command line up to a trailing comment.    "Regular expression describing a DCL command line up to a trailing comment.
384  A line starting with $, optionally followed by continuation lines,  A line starting with $, optionally followed by continuation lines,
# Line 368  optionally followed by a comment, follow Line 389  optionally followed by a comment, follow
389    :group 'dcl)    :group 'dcl)
390    
391    
392  (defcustom dcl-command-regexp  (defcustom dcl-command-regexp
393    "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*.*\\(\".*\\(\"\".*\\)*\"\\)*"    "^\\$\\(.*-[ \t]*\\(!.*\\)*\n\\)*.*\\(\".*\\(\"\".*\\)*\"\\)*"
394    "Regular expression describing a DCL command line.    "Regular expression describing a DCL command line.
395  A line starting with $, optionally followed by continuation lines,  A line starting with $, optionally followed by continuation lines,
# Line 392  dcl-electric-character and the you have Line 413  dcl-electric-character and the you have
413    :group 'dcl)    :group 'dcl)
414    
415    
416  (defvar dcl-option-alist  (defvar dcl-option-alist
417    '((dcl-basic-offset dcl-option-value-basic)    '((dcl-basic-offset dcl-option-value-basic)
418      (dcl-continuation-offset curval)      (dcl-continuation-offset curval)
419      (dcl-margin-offset dcl-option-value-margin-offset)      (dcl-margin-offset dcl-option-value-margin-offset)
# Line 400  dcl-electric-character and the you have Line 421  dcl-electric-character and the you have
421      (dcl-comment-line-regexp dcl-option-value-comment-line)      (dcl-comment-line-regexp dcl-option-value-comment-line)
422      (dcl-block-begin-regexp curval)      (dcl-block-begin-regexp curval)
423      (dcl-block-end-regexp curval)      (dcl-block-end-regexp curval)
424      (dcl-tab-always-indent toggle)                    (dcl-tab-always-indent toggle)
425      (dcl-electric-characters toggle)          (dcl-electric-characters toggle)
426      (dcl-electric-reindent-regexps curval)      (dcl-electric-reindent-regexps curval)
427      (dcl-tempo-comma curval)                  (dcl-tempo-comma curval)
428      (dcl-tempo-left-paren curval)                    (dcl-tempo-left-paren curval)
429      (dcl-tempo-right-paren curval)                    (dcl-tempo-right-paren curval)
430      (dcl-calc-command-indent-function curval)      (dcl-calc-command-indent-function curval)
431      (dcl-calc-cont-indent-function curval)      (dcl-calc-cont-indent-function curval)
432      (comment-start curval)      (comment-start curval)
# Line 421  curval       the current value Line 442  curval       the current value
442  toggle       the opposite of the current value (for t/nil)")  toggle       the opposite of the current value (for t/nil)")
443    
444    
445  (defvar dcl-option-history  (defvar dcl-option-history
446    (mapcar (lambda (option-assoc)    (mapcar (lambda (option-assoc)
447              (format "%s" (car option-assoc)))              (format "%s" (car option-assoc)))
448            dcl-option-alist)            dcl-option-alist)
# Line 443  Preloaded with all known option names fr Line 464  Preloaded with all known option names fr
464  ;  "*Default imenu generic expression for DCL.  ;  "*Default imenu generic expression for DCL.
465    
466  ;The default includes SUBROUTINE labels in the main listing and  ;The default includes SUBROUTINE labels in the main listing and
467  ;sub-listings for other labels, CALL, GOTO and GOSUB statements.  ;sub-listings for other labels, CALL, GOTO and GOSUB statements.
468  ;See `imenu-generic-expression' in a recent (e.g. Emacs 19.30) imenu.el  ;See `imenu-generic-expression' in a recent (e.g. Emacs 19.30) imenu.el
469  ;for details.")  ;for details.")
470    
# Line 460  THEN-ELSE-ENDIF and between lines matchi Line 481  THEN-ELSE-ENDIF and between lines matchi
481  dcl-block-end-regexp.)  dcl-block-end-regexp.)
482    
483  Labels are indented to a fixed position unless they begin or end a block.  Labels are indented to a fixed position unless they begin or end a block.
484  Whole-line comments (matching dcl-comment-line-regexp) are not indented.  Whole-line comments (matching dcl-comment-line-regexp) are not indented.
485  Data lines are not indented.  Data lines are not indented.
486    
487  Key bindings:  Key bindings:
# Line 488  Variables controlling indentation style Line 509  Variables controlling indentation style
509      Indentation for a label.      Indentation for a label.
510    
511   dcl-comment-line-regexp   dcl-comment-line-regexp
512      Lines matching this regexp will not be indented.      Lines matching this regexp will not be indented.
513    
514   dcl-block-begin-regexp   dcl-block-begin-regexp
515   dcl-block-end-regexp   dcl-block-end-regexp
# Line 511  Variables controlling indentation style Line 532  Variables controlling indentation style
532    
533   dcl-tab-always-indent   dcl-tab-always-indent
534      If t, pressing TAB always indents the current line.      If t, pressing TAB always indents the current line.
535      If nil, pressing TAB indents the current line if point is at the left      If nil, pressing TAB indents the current line if point is at the left
536      margin.      margin.
537    
538   dcl-electric-characters   dcl-electric-characters
539      Non-nil causes lines to be indented at once when a label, ELSE or ENDIF is      Non-nil causes lines to be indented at once when a label, ELSE or ENDIF is
540      typed.      typed.
541    
# Line 530  Variables controlling indentation style Line 551  Variables controlling indentation style
551   dcl-imenu-generic-expression   dcl-imenu-generic-expression
552      Default value for imenu-generic-expression.  The default includes      Default value for imenu-generic-expression.  The default includes
553      SUBROUTINE labels in the main listing and sub-listings for      SUBROUTINE labels in the main listing and sub-listings for
554      other labels, CALL, GOTO and GOSUB statements.      other labels, CALL, GOTO and GOSUB statements.
555    
556   dcl-imenu-label-labels   dcl-imenu-label-labels
557   dcl-imenu-label-goto   dcl-imenu-label-goto
# Line 539  Variables controlling indentation style Line 560  Variables controlling indentation style
560      Change the text that is used as sub-listing labels in imenu.      Change the text that is used as sub-listing labels in imenu.
561    
562  Loading this package calls the value of the variable  Loading this package calls the value of the variable
563  `dcl-mode-load-hook' with no args, if that value is non-nil.  `dcl-mode-load-hook' with no args, if that value is non-nil.
564  Turning on DCL mode calls the value of the variable `dcl-mode-hook'  Turning on DCL mode calls the value of the variable `dcl-mode-hook'
565  with no args, if that value is non-nil.  with no args, if that value is non-nil.
566    
567    
568  The following example uses the default values for all variables:  The following example uses the default values for all variables:
569    
570  $! This is a comment line that is not indented (it matches  $! This is a comment line that is not indented (it matches
571  $! dcl-comment-line-regexp)  $! dcl-comment-line-regexp)
572  $! Next follows the first command line.  It is indented dcl-margin-offset.  $! Next follows the first command line.  It is indented dcl-margin-offset.
573  $       i = 1  $       i = 1
574  $       ! Other comments are indented like command lines.  $       ! Other comments are indented like command lines.
575  $       ! A margin label indented dcl-margin-label-offset:  $       ! A margin label indented dcl-margin-label-offset:
576  $ label:  $ label:
577  $       if i.eq.1  $       if i.eq.1
578  $       then  $       then
579  $           ! Lines between THEN-ELSE and ELSE-ENDIF are  $           ! Lines between THEN-ELSE and ELSE-ENDIF are
580  $           ! indented dcl-basic-offset  $           ! indented dcl-basic-offset
581  $           loop1: ! This matches dcl-block-begin-regexp...  $           loop1: ! This matches dcl-block-begin-regexp...
582  $               ! ...so this line is indented dcl-basic-offset  $               ! ...so this line is indented dcl-basic-offset
583  $               text = \"This \" + - ! is a continued line  $               text = \"This \" + - ! is a continued line
584                         \"lined up with the command line\"                         \"lined up with the command line\"
585  $               type sys$input  $               type sys$input
586  Data lines are not indented at all.  Data lines are not indented at all.
587  $           endloop1: ! This matches dcl-block-end-regexp  $           endloop1: ! This matches dcl-block-end-regexp
588  $       endif  $       endif
589  $  $
590  "  
591    
592    There is some minimal font-lock support (see vars
593    `dcl-font-lock-defaults' and `dcl-font-lock-keywords')."
594    (interactive)    (interactive)
595    (kill-all-local-variables)    (kill-all-local-variables)
596    (set-syntax-table dcl-mode-syntax-table)    (set-syntax-table dcl-mode-syntax-table)
# Line 582  $ Line 606  $
606    
607    (make-local-variable 'comment-multi-line)    (make-local-variable 'comment-multi-line)
608    (setq comment-multi-line nil)    (setq comment-multi-line nil)
609      
610    ;; This used to be "^\\$[ \t]*![ \t]*" which looks more correct.    ;; This used to be "^\\$[ \t]*![ \t]*" which looks more correct.
611    ;; The drawback was that you couldn't make empty comment lines by pressing    ;; The drawback was that you couldn't make empty comment lines by pressing
612    ;; C-M-j repeatedly - only the first line became a comment line.    ;; C-M-j repeatedly - only the first line became a comment line.
# Line 608  $ Line 632  $
632    (make-local-variable 'dcl-calc-command-indent-function)    (make-local-variable 'dcl-calc-command-indent-function)
633    (make-local-variable 'dcl-calc-cont-indent-function)    (make-local-variable 'dcl-calc-cont-indent-function)
634    (make-local-variable 'dcl-electric-reindent-regexps)    (make-local-variable 'dcl-electric-reindent-regexps)
635      
636      ;; font lock
637      (make-local-variable 'font-lock-defaults)
638      (setq font-lock-defaults dcl-font-lock-defaults)
639    
640    (setq major-mode 'dcl-mode)    (setq major-mode 'dcl-mode)
641    (setq mode-name "DCL")    (setq mode-name "DCL")
642    (use-local-map dcl-mode-map)    (use-local-map dcl-mode-map)
# Line 668  $ Line 696  $
696    "Move backward to a command.    "Move backward to a command.
697  Move point to the preceding command line that is not a comment line,  Move point to the preceding command line that is not a comment line,
698  a command line with only a comment, only contains a `$' or only  a command line with only a comment, only contains a `$' or only
699  contains a label.  contains a label.
700    
701  Returns point of the found command line or nil if not able to move."  Returns point of the found command line or nil if not able to move."
702    (interactive)    (interactive)
# Line 712  Returns point of the found command line Line 740  Returns point of the found command line
740    "Move forward to a command.    "Move forward to a command.
741  Move point to the end of the next command line that is not a comment line,  Move point to the end of the next command line that is not a comment line,
742  a command line with only a comment, only contains a `$' or only  a command line with only a comment, only contains a `$' or only
743  contains a label.  contains a label.
744    
745  Returns point of the found command line or nil if not able to move."  Returns point of the found command line or nil if not able to move."
746    (interactive)    (interactive)
# Line 762  Leading $ and labels counts as whitespac Line 790  Leading $ and labels counts as whitespac
790  If this is a comment line then move to the first non-whitespace character  If this is a comment line then move to the first non-whitespace character
791  in the comment.  in the comment.
792    
793  Typing \\[dcl-back-to-indentation] several times in a row will move point to other  Typing \\[dcl-back-to-indentation] several times in a row will move point to other
794  `interesting' points closer to the left margin, and then back to the  `interesting' points closer to the left margin, and then back to the
795  rightmost point again.  rightmost point again.
796    
797  E.g. on the following line, point would go to the positions indicated  E.g. on the following line, point would go to the positions indicated
798  by the numbers in order 1-2-3-1-... :  by the numbers in order 1-2-3-1-... :
# Line 785  by the numbers in order 1-2-3-1-... : Line 813  by the numbers in order 1-2-3-1-... :
813    ;;  $  !  text    ;;  $  !  text
814    ;;  3  2  1    ;;  3  2  1
815    ;;    ;;
816    ;;  $  l:  command  !      ;;  $  l:  command  !
817    ;;  3  2   1    ;;  3  2   1
818    ;;    ;;
819    ;;  text    ;;  text
# Line 807  by the numbers in order 1-2-3-1-... : Line 835  by the numbers in order 1-2-3-1-... :
835          (setq last-good-point (point)))          (setq last-good-point (point)))
836    
837      (cond      (cond
838       ;; Special treatment for comment lines.  We are trying to allow       ;; Special treatment for comment lines.  We are trying to allow
839       ;; things like "$ !*" as comment lines.       ;; things like "$ !*" as comment lines.
840       ((looking-at dcl-comment-line-regexp)       ((looking-at dcl-comment-line-regexp)
841        (re-search-forward (concat dcl-comment-line-regexp "[ \t]*") limit t)        (re-search-forward (concat dcl-comment-line-regexp "[ \t]*") limit t)
# Line 901  Returns one of the following symbols: Line 929  Returns one of the following symbols:
929      (dcl-back-to-indentation)      (dcl-back-to-indentation)
930      (point)))      (point)))
931    
932                          
933  ;;;---------------------------------------------------------------------------  ;;;---------------------------------------------------------------------------
934  (defun dcl-show-line-type ()  (defun dcl-show-line-type ()
935    "Test dcl-get-line-type."    "Test dcl-get-line-type."
# Line 979  $ xxx Line 1007  $ xxx
1007    
1008  If you use this function you will probably want to add \"then\" to  If you use this function you will probably want to add \"then\" to
1009  dcl-electric-reindent-regexps and define the key \"n\" as  dcl-electric-reindent-regexps and define the key \"n\" as
1010  dcl-electric-character.  dcl-electric-character.
1011  "  "
1012    (let ((case-fold-search t))    (let ((case-fold-search t))
1013      (save-excursion      (save-excursion
# Line 1003  dcl-electric-character. Line 1031  dcl-electric-character.
1031            (- (+ cur-indent extra-indent) 2))            (- (+ cur-indent extra-indent) 2))
1032           ((looking-at "\\belse\\b")           ((looking-at "\\belse\\b")
1033            (- (+ cur-indent extra-indent) 2))))            (- (+ cur-indent extra-indent) 2))))
1034         ;; Outdent, this word is `endif' or `else': + 2         ;; Outdent, this word is `endif' or `else': + 2
1035         ((equal indent-type 'outdent)         ((equal indent-type 'outdent)
1036          (goto-char this-point)          (goto-char this-point)
1037          (cond          (cond
# Line 1028  non-nil. Line 1056  non-nil.
1056    
1057  If the current line should be outdented, calculate its indentation,  If the current line should be outdented, calculate its indentation,
1058  either with the default method or by calling  either with the default method or by calling
1059  dcl-calc-command-indent-function if it is non-nil.  dcl-calc-command-indent-function if it is non-nil.
1060    
1061    
1062  Rules for default indentation:  Rules for default indentation:
1063    
1064  If it is the first line in the buffer, indent dcl-margin-offset.  If it is the first line in the buffer, indent dcl-margin-offset.
1065    
1066  Go to the previous command line with a command on it.  Go to the previous command line with a command on it.
1067  Find out how much it is indented (cur-indent).  Find out how much it is indented (cur-indent).
1068  Look at the first word on the line to see if the indentation should be  Look at the first word on the line to see if the indentation should be
1069  adjusted.  Skip margin-label, continuations and comments while looking for  adjusted.  Skip margin-label, continuations and comments while looking for
1070  the first word.  Save this buffer position as `last-point'.  the first word.  Save this buffer position as `last-point'.
1071  If the first word after a label is SUBROUTINE, set extra-indent to  If the first word after a label is SUBROUTINE, set extra-indent to
1072  dcl-margin-offset.  dcl-margin-offset.
1073    
1074  First word  extra-indent  First word  extra-indent
# Line 1050  block-begin +dcl-basic-offset Line 1078  block-begin +dcl-basic-offset
1078    
1079  Then return to the current line and look at the first word to see if the  Then return to the current line and look at the first word to see if the
1080  indentation should be adjusted again.  Save this buffer position as  indentation should be adjusted again.  Save this buffer position as
1081  `this-point'.  `this-point'.
1082    
1083  First word  extra-indent  First word  extra-indent
1084  ELSE        -dcl-basic-offset  ELSE        -dcl-basic-offset
# Line 1063  cur-indent to cur-indent+extra-indent. Line 1091  cur-indent to cur-indent+extra-indent.
1091    
1092  If an extra adjustment is necessary and if  If an extra adjustment is necessary and if
1093  dcl-calc-command-indent-function is nil or returns nil set cur-indent  dcl-calc-command-indent-function is nil or returns nil set cur-indent
1094  to cur-indent+extra-indent.  to cur-indent+extra-indent.
1095    
1096  See also documentation for dcl-calc-command-indent-function.  See also documentation for dcl-calc-command-indent-function.
1097  The indent-type classification could probably be expanded upon.  The indent-type classification could probably be expanded upon.
# Line 1106  The indent-type classification could pro Line 1134  The indent-type classification could pro
1134                  ;; We couldn't go further back, so this must have been the                  ;; We couldn't go further back, so this must have been the
1135                  ;; first line.                  ;; first line.
1136                  (setq cur-indent dcl-margin-offset                  (setq cur-indent dcl-margin-offset
1137                        last-point (dcl-indentation-point))                        last-point (dcl-indentation-point))
1138                  (setq done t)))                  (setq done t)))
1139              ;; Examine the line to get current indentation and possibly a              ;; Examine the line to get current indentation and possibly a
1140              ;; reason to indent.              ;; reason to indent.
# Line 1190  Indented lines will align with either: Line 1218  Indented lines will align with either:
1218  * the second word on the command line  * the second word on the command line
1219    $ set default -    $ set default -
1220          [-]          [-]
1221  * the word after an asignment  * the word after an assignment
1222    $ a = b + -    $ a = b + -
1223          d          d
1224  * the third word if it's a qualifier  * the third word if it's a qualifier
# Line 1202  Indented lines will align with either: Line 1230  Indented lines will align with either:
1230                                  yyy)))                                  yyy)))
1231  "  "
1232    (let ((case-fold-search t)    (let ((case-fold-search t)
1233          indent)          indent)
1234      (save-excursion      (save-excursion
1235        (dcl-beginning-of-statement)        (dcl-beginning-of-statement)
1236        (let ((end (save-excursion (forward-line 1) (point))))        (let ((end (save-excursion (forward-line 1) (point))))
# Line 1221  Indented lines will align with either: Line 1249  Indented lines will align with either:
1249                            (skip-chars-forward " \t:=" end)))                            (skip-chars-forward " \t:=" end)))
1250                      ;; This could be the position to indent to                      ;; This could be the position to indent to
1251                      (setq indent (current-column))                      (setq indent (current-column))
1252                        
1253                      ;; Move to the next word unless we have seen an                      ;; Move to the next word unless we have seen an
1254                      ;; assignment.  If it starts with `/' it's a                      ;; assignment.  If it starts with `/' it's a
1255                      ;; qualifier and we will indent to that position                      ;; qualifier and we will indent to that position
# Line 1328  Find out how much it is indented." Line 1356  Find out how much it is indented."
1356              (re-search-forward dcl-label-r)))              (re-search-forward dcl-label-r)))
1357        (dcl-indent-to indent 1)        (dcl-indent-to indent 1)
1358        )        )
1359      ;;      ;;
1360      (if (> (- (point-max) pos) (point))      (if (> (- (point-max) pos) (point))
1361          (goto-char (- (point-max) pos)))          (goto-char (- (point-max) pos)))
1362      ))      ))
# Line 1376  Adjusts indentation on the current line. Line 1404  Adjusts indentation on the current line.
1404       (t       (t
1405        (message "dcl-indent-line: unknown type"))        (message "dcl-indent-line: unknown type"))
1406       )))       )))
1407        
1408    
1409  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1410  (defun dcl-indent-command ()  (defun dcl-indent-command ()
# Line 1406  the lines indentation; otherwise insert Line 1434  the lines indentation; otherwise insert
1434          (start-point (point)))          (start-point (point)))
1435      (cond      (cond
1436       ;; Data line : always insert tab       ;; Data line : always insert tab
1437       ((or (equal type 'data) (equal type 'empty-data))       ((or (equal type 'data) (equal type 'empty-data))
1438        (tab-to-tab-stop))        (tab-to-tab-stop))
1439       ;; Indent only at start of line       ;; Indent only at start of line
1440       ((not dcl-tab-always-indent)       ; nil       ((not dcl-tab-always-indent)       ; nil
1441        (let ((search-end-point        (let ((search-end-point
1442               (save-excursion               (save-excursion
# Line 1428  the lines indentation; otherwise insert Line 1456  the lines indentation; otherwise insert
1456  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1457  (defun dcl-electric-character (arg)  (defun dcl-electric-character (arg)
1458    "Inserts a character and indents if necessary.    "Inserts a character and indents if necessary.
1459  Insert a character if the user gave a numeric argument or the flag  Insert a character if the user gave a numeric argument or the flag
1460  `dcl-electric-characters' is not set.  If an argument was given,  `dcl-electric-characters' is not set.  If an argument was given,
1461  insert that many characters.  insert that many characters.
1462    
# Line 1443  regexps in `dcl-electric-reindent-regexp Line 1471  regexps in `dcl-electric-reindent-regexp
1471      (self-insert-command 1)      (self-insert-command 1)
1472      (let ((case-fold-search t))      (let ((case-fold-search t))
1473        ;; There must be a better way than (memq t ...).        ;; There must be a better way than (memq t ...).
1474        ;; (apply 'or ...) didn't work          ;; (apply 'or ...) didn't work
1475        (if (memq t (mapcar 'dcl-was-looking-at dcl-electric-reindent-regexps))        (if (memq t (mapcar 'dcl-was-looking-at dcl-electric-reindent-regexps))
1476            (dcl-indent-line)))))            (dcl-indent-line)))))
1477    
# Line 1463  regexps in `dcl-electric-reindent-regexp Line 1491  regexps in `dcl-electric-reindent-regexp
1491          (progn          (progn
1492            (dcl-delete-chars " \t")            (dcl-delete-chars " \t")
1493            (indent-to col minimum)))))            (indent-to col minimum)))))
1494        
1495    
1496  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1497  (defun dcl-split-line ()  (defun dcl-split-line ()
# Line 1511  Inserts continuation marks and splits ch Line 1539  Inserts continuation marks and splits ch
1539      (if (not done)                      ; normal M-LFD action      (if (not done)                      ; normal M-LFD action
1540          (indent-new-comment-line))))          (indent-new-comment-line))))
1541    
1542            
1543  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1544  (defun dcl-delete-indentation (&optional arg)  (defun dcl-delete-indentation (&optional arg)
1545    "Join this line to previous like delete-indentation.    "Join this line to previous like delete-indentation.
# Line 1582  Returns the column offset." Line 1610  Returns the column offset."
1610  (defun dcl-option-value-margin-offset (option-assoc)  (defun dcl-option-value-margin-offset (option-assoc)
1611    "Guess a value for margin offset.    "Guess a value for margin offset.
1612  Find the column of the first non-blank character on the line, not  Find the column of the first non-blank character on the line, not
1613  counting labels.  counting labels.
1614  Returns a number as a string."  Returns a number as a string."
1615    (save-excursion    (save-excursion
1616      (beginning-of-line)      (beginning-of-line)
# Line 1610  Must return a string." Line 1638  Must return a string."
1638           (let ((regexp (buffer-substring (match-beginning 0) (match-end 0))))           (let ((regexp (buffer-substring (match-beginning 0) (match-end 0))))
1639             (concat "^" (regexp-quote regexp)))             (concat "^" (regexp-quote regexp)))
1640         dcl-comment-line-regexp))))         dcl-comment-line-regexp))))
1641          
1642    
1643  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1644  (defun dcl-guess-option-value (option)  (defun dcl-guess-option-value (option)
# Line 1701  Returns the name of the option variable Line 1729  Returns the name of the option variable
1729                     (and next-indent                     (and next-indent
1730                          (/= (- this-indent next-indent) 0))))))                          (/= (- this-indent next-indent) 0))))))
1731        "dcl-basic-offset")        "dcl-basic-offset")
1732       ;; No more guesses.       ;; No more guesses.
1733       (t       (t
1734        ""))))        ""))))
1735    
# Line 1739  All variable names are available as comp Line 1767  All variable names are available as comp
1767  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
1768  (defun dcl-save-local-variable (var &optional def-prefix def-suffix)  (defun dcl-save-local-variable (var &optional def-prefix def-suffix)
1769    "Save a variable in a `Local Variables' list.    "Save a variable in a `Local Variables' list.
1770  Set or update the value of VAR in the current buffers  Set or update the value of VAR in the current buffers
1771  `Local Variables:' list."  `Local Variables:' list."
1772    ;; Look for "Local variables:" line in last page.    ;; Look for "Local variables:" line in last page.
1773    (save-excursion    (save-excursion
1774      (goto-char (point-max))      (goto-char (point-max))
# Line 1790  Set or update the value of VAR in the cu Line 1818  Set or update the value of VAR in the cu
1818                      ;; Not found.  Insert a new entry before this line                      ;; Not found.  Insert a new entry before this line
1819                      (setq continue nil)                      (setq continue nil)
1820                      (beginning-of-line)                      (beginning-of-line)
1821                      (insert (concat prefix-string (symbol-name var) ": "                      (insert (concat prefix-string (symbol-name var) ": "
1822                                      (prin1-to-string (eval var)) " "                                      (prin1-to-string (eval var)) " "
1823                                      suffix-string "\n")))                                      suffix-string "\n")))
1824                  ;; Is it the variable we are looking for?                  ;; Is it the variable we are looking for?
# Line 1836  Set or update the value of VAR in the cu Line 1864  Set or update the value of VAR in the cu
1864                      comment-end                      comment-end
1865                    (concat " " comment-end))))))                    (concat " " comment-end))))))
1866          (insert (concat def-prefix "Local variables:" def-suffix "\n"))          (insert (concat def-prefix "Local variables:" def-suffix "\n"))
1867          (insert (concat def-prefix (symbol-name var) ": "          (insert (concat def-prefix (symbol-name var) ": "
1868                          (prin1-to-string (eval var)) def-suffix "\n"))                          (prin1-to-string (eval var)) def-suffix "\n"))
1869          (insert (concat def-prefix "end:" def-suffix)))          (insert (concat def-prefix "end:" def-suffix)))
1870        )))        )))
# Line 1909  section at the end of the current buffer Line 1937  section at the end of the current buffer
1937  (require 'tempo)  (require 'tempo)
1938  (defvar dcl-tempo-tags nil  (defvar dcl-tempo-tags nil
1939    "Tempo tags for DCL mode.")    "Tempo tags for DCL mode.")
1940      
1941  (tempo-define-template "dcl-f$context"  (tempo-define-template "dcl-f$context"
1942                         '("f$context" dcl-tempo-left-paren                         '("f$context" dcl-tempo-left-paren
1943                           (p "context-type: ") dcl-tempo-comma                           (p "context-type: ") dcl-tempo-comma
1944                           (p "context-symbol: ") dcl-tempo-comma                           (p "context-symbol: ") dcl-tempo-comma
1945                           (p "selection-item: ") dcl-tempo-comma                           (p "selection-item: ") dcl-tempo-comma
# Line 1920  section at the end of the current buffer Line 1948  section at the end of the current buffer
1948                         "f$context" "" 'dcl-tempo-tags)                         "f$context" "" 'dcl-tempo-tags)
1949    
1950  (tempo-define-template "dcl-f$csid"  (tempo-define-template "dcl-f$csid"
1951                         '("f$csid" dcl-tempo-left-paren                         '("f$csid" dcl-tempo-left-paren
1952                           (p "context-symbol: ") dcl-tempo-right-paren)                           (p "context-symbol: ") dcl-tempo-right-paren)
1953                         "f$csid" "" 'dcl-tempo-tags)                         "f$csid" "" 'dcl-tempo-tags)
1954    
1955  (tempo-define-template "dcl-f$cvsi"  (tempo-define-template "dcl-f$cvsi"
1956                         '("f$cvsi" dcl-tempo-left-paren                         '("f$cvsi" dcl-tempo-left-paren
1957                           (p "start-bit: ") dcl-tempo-comma                           (p "start-bit: ") dcl-tempo-comma
1958                           (p "number-of-bits: ") dcl-tempo-comma                           (p "number-of-bits: ") dcl-tempo-comma
1959                           (p "string: ") dcl-tempo-right-paren)                           (p "string: ") dcl-tempo-right-paren)
1960                         "f$cvsi" "" 'dcl-tempo-tags)                         "f$cvsi" "" 'dcl-tempo-tags)
1961    
1962  (tempo-define-template "dcl-f$cvtime"  (tempo-define-template "dcl-f$cvtime"
1963                         '("f$cvtime" dcl-tempo-left-paren                         '("f$cvtime" dcl-tempo-left-paren
1964                           (p "[input_time]: ") dcl-tempo-comma                           (p "[input_time]: ") dcl-tempo-comma
1965                           (p "[output_time_format]: ") dcl-tempo-comma                           (p "[output_time_format]: ") dcl-tempo-comma
1966                           (p "[output_field]: ") dcl-tempo-right-paren)                           (p "[output_field]: ") dcl-tempo-right-paren)
1967                         "f$cvtime" "" 'dcl-tempo-tags)                         "f$cvtime" "" 'dcl-tempo-tags)
1968    
1969  (tempo-define-template "dcl-f$cvui"  (tempo-define-template "dcl-f$cvui"
1970                         '("f$cvui" dcl-tempo-left-paren                         '("f$cvui" dcl-tempo-left-paren
1971                           (p "start-bit: ") dcl-tempo-comma                           (p "start-bit: ") dcl-tempo-comma
1972                           (p "number-of-bits: ") dcl-tempo-comma                           (p "number-of-bits: ") dcl-tempo-comma
1973                           (p "string") dcl-tempo-right-paren)                           (p "string") dcl-tempo-right-paren)
1974                         "f$cvui" "" 'dcl-tempo-tags)                         "f$cvui" "" 'dcl-tempo-tags)
1975    
1976  (tempo-define-template "dcl-f$device"  (tempo-define-template "dcl-f$device"
1977                         '("f$device" dcl-tempo-left-paren                         '("f$device" dcl-tempo-left-paren
1978                           (p "[search_devnam]: ") dcl-tempo-comma                           (p "[search_devnam]: ") dcl-tempo-comma
1979                           (p "[devclass]: ") dcl-tempo-comma                           (p "[devclass]: ") dcl-tempo-comma
1980                           (p "[devtype]: ") dcl-tempo-comma                           (p "[devtype]: ") dcl-tempo-comma
# Line 1959  section at the end of the current buffer Line 1987  section at the end of the current buffer
1987                         "f$directory" "" 'dcl-tempo-tags)                         "f$directory" "" 'dcl-tempo-tags)
1988    
1989  (tempo-define-template "dcl-f$edit"  (tempo-define-template "dcl-f$edit"
1990                         '("f$edit" dcl-tempo-left-paren                         '("f$edit" dcl-tempo-left-paren
1991                           (p "string: ") dcl-tempo-comma                           (p "string: ") dcl-tempo-comma
1992                           (p "edit-list: ") dcl-tempo-right-paren)                           (p "edit-list: ") dcl-tempo-right-paren)
1993                         "f$edit" "" 'dcl-tempo-tags)                         "f$edit" "" 'dcl-tempo-tags)
1994    
1995  (tempo-define-template "dcl-f$element"  (tempo-define-template "dcl-f$element"
1996                         '("f$element" dcl-tempo-left-paren                         '("f$element" dcl-tempo-left-paren
1997                           (p "element-number: ") dcl-tempo-comma                           (p "element-number: ") dcl-tempo-comma
1998                           (p "delimiter: ") dcl-tempo-comma                           (p "delimiter: ") dcl-tempo-comma
1999                           (p "string: ") dcl-tempo-right-paren)                           (p "string: ") dcl-tempo-right-paren)
2000                         "f$element" "" 'dcl-tempo-tags)                         "f$element" "" 'dcl-tempo-tags)
2001    
2002  (tempo-define-template "dcl-f$environment"  (tempo-define-template "dcl-f$environment"
2003                         '("f$environment" dcl-tempo-left-paren                         '("f$environment" dcl-tempo-left-paren
2004                           (p "item: ") dcl-tempo-right-paren)                           (p "item: ") dcl-tempo-right-paren)
2005                         "f$environment" "" 'dcl-tempo-tags)                         "f$environment" "" 'dcl-tempo-tags)
2006    
2007  (tempo-define-template "dcl-f$extract"  (tempo-define-template "dcl-f$extract"
2008                         '("f$extract" dcl-tempo-left-paren                         '("f$extract" dcl-tempo-left-paren
2009                           (p "start: ") dcl-tempo-comma                           (p "start: ") dcl-tempo-comma
2010                           (p "length: ") dcl-tempo-comma                           (p "length: ") dcl-tempo-comma
2011                           (p "string: ") dcl-tempo-right-paren)                           (p "string: ") dcl-tempo-right-paren)
2012                         "f$extract" "" 'dcl-tempo-tags)                         "f$extract" "" 'dcl-tempo-tags)
2013    
2014  (tempo-define-template "dcl-f$fao"  (tempo-define-template "dcl-f$fao"
2015                         '("f$fao" dcl-tempo-left-paren                         '("f$fao" dcl-tempo-left-paren
2016                           (p "control-string: ") dcl-tempo-comma                           (p "control-string: ") dcl-tempo-comma
2017                           ("argument[,...]: ") dcl-tempo-right-paren)                           ("argument[,...]: ") dcl-tempo-right-paren)
2018                         "f$fao" "" 'dcl-tempo-tags)                         "f$fao" "" 'dcl-tempo-tags)
2019    
2020  (tempo-define-template "dcl-f$file_attributes"  (tempo-define-template "dcl-f$file_attributes"
2021                         '("f$file_attributes" dcl-tempo-left-paren                         '("f$file_attributes" dcl-tempo-left-paren
2022                           (p "filespec: ") dcl-tempo-comma                           (p "filespec: ") dcl-tempo-comma
2023                           (p "item: ") dcl-tempo-right-paren)                           (p "item: ") dcl-tempo-right-paren)
2024                         "f$file_attributes" "" 'dcl-tempo-tags)                         "f$file_attributes" "" 'dcl-tempo-tags)
2025    
2026  (tempo-define-template "dcl-f$getdvi"  (tempo-define-template "dcl-f$getdvi"
2027                         '("f$getdvi" dcl-tempo-left-paren                         '("f$getdvi" dcl-tempo-left-paren
2028                           (p "device-name: ") dcl-tempo-comma                           (p "device-name: ") dcl-tempo-comma
2029                           (p "item: ") dcl-tempo-right-paren)                           (p "item: ") dcl-tempo-right-paren)
2030                         "f$getdvi" "" 'dcl-tempo-tags)                         "f$getdvi" "" 'dcl-tempo-tags)
2031    
2032  (tempo-define-template "dcl-f$getjpi"  (tempo-define-template "dcl-f$getjpi"
2033                         '("f$getjpi" dcl-tempo-left-paren                         '("f$getjpi" dcl-tempo-left-paren
2034                           (p "pid: ") dcl-tempo-comma                           (p "pid: ") dcl-tempo-comma
2035                           (p "item: ") dcl-tempo-right-paren )                           (p "item: ") dcl-tempo-right-paren )
2036                         "f$getjpi" "" 'dcl-tempo-tags)                         "f$getjpi" "" 'dcl-tempo-tags)
2037    
2038  (tempo-define-template "dcl-f$getqui"  (tempo-define-template "dcl-f$getqui"
2039                         '("f$getqui" dcl-tempo-left-paren                         '("f$getqui" dcl-tempo-left-paren
2040                           (p "function: ") dcl-tempo-comma                           (p "function: ") dcl-tempo-comma
2041                           (p "[item]: ") dcl-tempo-comma                           (p "[item]: ") dcl-tempo-comma
2042                           (p "[object-id]: ") dcl-tempo-comma                           (p "[object-id]: ") dcl-tempo-comma
# Line 2016  section at the end of the current buffer Line 2044  section at the end of the current buffer
2044                         "f$getqui" "" 'dcl-tempo-tags)                         "f$getqui" "" 'dcl-tempo-tags)
2045    
2046  (tempo-define-template "dcl-f$getsyi"  (tempo-define-template "dcl-f$getsyi"
2047                         '("f$getsyi" dcl-tempo-left-paren                         '("f$getsyi" dcl-tempo-left-paren
2048                           (p "item: ") dcl-tempo-comma                           (p "item: ") dcl-tempo-comma
2049                           (p "[node-name]: ") dcl-tempo-comma                           (p "[node-name]: ") dcl-tempo-comma
2050                           (p "[cluster-id]: ") dcl-tempo-right-paren)                           (p "[cluster-id]: ") dcl-tempo-right-paren)
2051                         "f$getsyi" "" 'dcl-tempo-tags)                         "f$getsyi" "" 'dcl-tempo-tags)
2052    
2053  (tempo-define-template "dcl-f$identifier"  (tempo-define-template "dcl-f$identifier"
2054                         '("f$identifier" dcl-tempo-left-paren                         '("f$identifier" dcl-tempo-left-paren
2055                           (p "identifier: ") dcl-tempo-comma                           (p "identifier: ") dcl-tempo-comma
2056                           (p "conversion-type: ") dcl-tempo-right-paren)                           (p "conversion-type: ") dcl-tempo-right-paren)
2057                         "f$identifier" "" 'dcl-tempo-tags)                         "f$identifier" "" 'dcl-tempo-tags)
2058    
2059  (tempo-define-template "dcl-f$integer"  (tempo-define-template "dcl-f$integer"
2060                         '("f$integer" dcl-tempo-left-paren                         '("f$integer" dcl-tempo-left-paren
2061                           (p "expression: ") dcl-tempo-right-paren)                           (p "expression: ") dcl-tempo-right-paren)
2062                         "f$integer" "" 'dcl-tempo-tags)                         "f$integer" "" 'dcl-tempo-tags)
2063    
# Line 2039  section at the end of the current buffer Line 2067  section at the end of the current buffer
2067                         "f$length" "" 'dcl-tempo-tags)                         "f$length" "" 'dcl-tempo-tags)
2068    
2069  (tempo-define-template "dcl-f$locate"  (tempo-define-template "dcl-f$locate"
2070                         '("f$locate" dcl-tempo-left-paren                         '("f$locate" dcl-tempo-left-paren
2071                           (p "substring: ") dcl-tempo-comma                           (p "substring: ") dcl-tempo-comma
2072                           (p "string: ") dcl-tempo-right-paren)                           (p "string: ") dcl-tempo-right-paren)
2073                         "f$locate" "" 'dcl-tempo-tags)                         "f$locate" "" 'dcl-tempo-tags)
2074    
2075  (tempo-define-template "dcl-f$message"  (tempo-define-template "dcl-f$message"
2076                         '("f$message" dcl-tempo-left-paren                         '("f$message" dcl-tempo-left-paren
2077                           (p "status-code: ") dcl-tempo-right-paren )                           (p "status-code: ") dcl-tempo-right-paren )
2078                         "f$message" "" 'dcl-tempo-tags)                         "f$message" "" 'dcl-tempo-tags)
2079    
# Line 2054  section at the end of the current buffer Line 2082  section at the end of the current buffer
2082                         "f$mode" "" 'dcl-tempo-tags)                         "f$mode" "" 'dcl-tempo-tags)
2083    
2084  (tempo-define-template "dcl-f$parse"  (tempo-define-template "dcl-f$parse"
2085                         '("f$parse" dcl-tempo-left-paren                         '("f$parse" dcl-tempo-left-paren
2086                           (p "filespec: ") dcl-tempo-comma                           (p "filespec: ") dcl-tempo-comma
2087                           (p "[default-spec]: ") dcl-tempo-comma                           (p "[default-spec]: ") dcl-tempo-comma
2088                           (p "[related-spec]: ") dcl-tempo-comma                           (p "[related-spec]: ") dcl-tempo-comma
# Line 2063  section at the end of the current buffer Line 2091  section at the end of the current buffer
2091                         "f$parse" "" 'dcl-tempo-tags)                         "f$parse" "" 'dcl-tempo-tags)
2092    
2093  (tempo-define-template "dcl-f$pid"  (tempo-define-template "dcl-f$pid"
2094                         '("f$pid" dcl-tempo-left-paren                         '("f$pid" dcl-tempo-left-paren
2095                           (p "context-symbol: ") dcl-tempo-right-paren)                           (p "context-symbol: ") dcl-tempo-right-paren)
2096                         "f$pid" "" 'dcl-tempo-tags)                         "f$pid" "" 'dcl-tempo-tags)
2097    
2098  (tempo-define-template "dcl-f$privilege"  (tempo-define-template "dcl-f$privilege"
2099                         '("f$privilege" dcl-tempo-left-paren                         '("f$privilege" dcl-tempo-left-paren
2100                           (p "priv-states: ") dcl-tempo-right-paren)                           (p "priv-states: ") dcl-tempo-right-paren)
2101                         "f$privilege" "" 'dcl-tempo-tags)                         "f$privilege" "" 'dcl-tempo-tags)
2102    
# Line 2077  section at the end of the current buffer Line 2105  section at the end of the current buffer
2105                         "f$process" "" 'dcl-tempo-tags)                         "f$process" "" 'dcl-tempo-tags)
2106    
2107  (tempo-define-template "dcl-f$search"  (tempo-define-template "dcl-f$search"
2108                         '("f$search" dcl-tempo-left-paren                         '("f$search" dcl-tempo-left-paren
2109                           (p "filespec: ") dcl-tempo-comma                           (p "filespec: ") dcl-tempo-comma
2110                           (p "[stream-id]: ") dcl-tempo-right-paren)                           (p "[stream-id]: ") dcl-tempo-right-paren)
2111                         "f$search" "" 'dcl-tempo-tags)                         "f$search" "" 'dcl-tempo-tags)
2112    
2113  (tempo-define-template "dcl-f$setprv"  (tempo-define-template "dcl-f$setprv"
2114                         '("f$setprv" dcl-tempo-left-paren                         '("f$setprv" dcl-tempo-left-paren
2115                           (p "priv-states: ") dcl-tempo-right-paren)                           (p "priv-states: ") dcl-tempo-right-paren)
2116                         "f$setprv" "" 'dcl-tempo-tags)                         "f$setprv" "" 'dcl-tempo-tags)
2117    
2118  (tempo-define-template "dcl-f$string"  (tempo-define-template "dcl-f$string"
2119                         '("f$string" dcl-tempo-left-paren                         '("f$string" dcl-tempo-left-paren
2120                           (p "expression: ") dcl-tempo-right-paren)                           (p "expression: ") dcl-tempo-right-paren)
2121                         "f$string" "" 'dcl-tempo-tags)                         "f$string" "" 'dcl-tempo-tags)
2122    
# Line 2097  section at the end of the current buffer Line 2125  section at the end of the current buffer
2125                         "f$time" "" 'dcl-tempo-tags)                         "f$time" "" 'dcl-tempo-tags)
2126    
2127  (tempo-define-template "dcl-f$trnlnm"  (tempo-define-template "dcl-f$trnlnm"
2128                         '("f$trnlnm" dcl-tempo-left-paren                         '("f$trnlnm" dcl-tempo-left-paren
2129                           (p "logical-name: ") dcl-tempo-comma                           (p "logical-name: ") dcl-tempo-comma
2130                           (p "[table]: ") dcl-tempo-comma                           (p "[table]: ") dcl-tempo-comma
2131                           (p "[index]: ") dcl-tempo-comma                           (p "[index]: ") dcl-tempo-comma
# Line 2107  section at the end of the current buffer Line 2135  section at the end of the current buffer
2135                         "f$trnlnm" "" 'dcl-tempo-tags)                         "f$trnlnm" "" 'dcl-tempo-tags)
2136    
2137  (tempo-define-template "dcl-f$type"  (tempo-define-template "dcl-f$type"
2138                         '("f$type" dcl-tempo-left-paren                         '("f$type" dcl-tempo-left-paren
2139                           (p "symbol-name: ") dcl-tempo-right-paren)                           (p "symbol-name: ") dcl-tempo-right-paren)
2140                         "f$type" "" 'dcl-tempo-tags)                         "f$type" "" 'dcl-tempo-tags)
2141    
# Line 2116  section at the end of the current buffer Line 2144  section at the end of the current buffer
2144                         "f$user" "" 'dcl-tempo-tags)                         "f$user" "" 'dcl-tempo-tags)
2145    
2146  (tempo-define-template "dcl-f$verify"  (tempo-define-template "dcl-f$verify"
2147                         '("f$verify" dcl-tempo-left-paren                         '("f$verify" dcl-tempo-left-paren
2148                           (p "[procedure-value]: ") dcl-tempo-comma                           (p "[procedure-value]: ") dcl-tempo-comma
2149                           (p "[image-value]: ") dcl-tempo-right-paren)                           (p "[image-value]: ") dcl-tempo-right-paren)
2150                         "f$verify" "" 'dcl-tempo-tags)                         "f$verify" "" 'dcl-tempo-tags)
# Line 2171  otherwise return nil." Line 2199  otherwise return nil."
2199            ()            ()
2200          (equal start (match-end 0))))))          (equal start (match-end 0))))))
2201    
2202                            
2203  ;;;-------------------------------------------------------------------------  ;;;-------------------------------------------------------------------------
2204  (defun dcl-imenu-create-index-function ()  (defun dcl-imenu-create-index-function ()
2205    "Jacket routine to make imenu searches non case sensitive."    "Jacket routine to make imenu searches non case sensitive."

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.8.4.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26