dcl-mode

dcl-mode is an interactive autoloaded compiled Lisp function in `dcl-mode.el'.


(dcl-mode)

Parent mode: `prog-mode'.

Major mode for editing DCL-files.

This mode indents command lines in blocks. (A block is commands between
THEN-ELSE-ENDIF and between lines matching dcl-block-begin-regexp and
dcl-block-end-regexp.)

Labels are indented to a fixed position unless they begin or end a block.
Whole-line comments (matching dcl-comment-line-regexp) are not indented.
Data lines are not indented.

Key bindings:

key binding
--- -------

C-c Prefix Command
TAB dcl-tab
ESC Prefix Command
: dcl-electric-character
E .. F dcl-electric-character
e .. f dcl-electric-character

C-c C-b tempo-backward-mark
C-c C-f tempo-forward-mark
C-c C-o dcl-set-option

C-M-i tempo-complete-tag
C-M-j dcl-split-line
C-M-q dcl-indent-command
M-^ dcl-delete-indentation
M-a dcl-backward-command
M-e dcl-forward-command
M-m dcl-back-to-indentation


Commands not usually bound to keys:

M-x dcl-save-nondefault-options Save changed options
M-x dcl-save-all-options Save all options
M-x dcl-save-option Save any option
M-x dcl-save-mode Save buffer mode

Variables controlling indentation style and extra features:

dcl-basic-offset
Extra indentation within blocks.

dcl-continuation-offset
Extra indentation for continued lines.

dcl-margin-offset
Indentation for the first command line in a file or SUBROUTINE.

dcl-margin-label-offset
Indentation for a label.

dcl-comment-line-regexp
Lines matching this regexp will not be indented.

dcl-block-begin-regexp
dcl-block-end-regexp
Regexps that match command lines that begin and end, respectively,
a block of command lines that will be given extra indentation.
Command lines between THEN-ELSE-ENDIF are always indented; these variables
make it possible to define other places to indent.
Set to nil to disable this feature.

dcl-calc-command-indent-function
Can be set to a function that customizes indentation for command lines.
Two such functions are included in the package:
dcl-calc-command-indent-multiple
dcl-calc-command-indent-hang

dcl-calc-cont-indent-function
Can be set to a function that customizes indentation for continued lines.
One such function is included in the package:
dcl-calc-cont-indent-relative (set by default)

dcl-tab-always-indent
If t, pressing TAB always indents the current line.
If nil, pressing TAB indents the current line if point is at the left
margin.

dcl-electric-characters
Non-nil causes lines to be indented at once when a label, ELSE or ENDIF is
typed.

dcl-electric-reindent-regexps
Use this variable and function dcl-electric-character to customize
which words trigger electric indentation.

dcl-tempo-comma
dcl-tempo-left-paren
dcl-tempo-right-paren
These variables control the look of expanded templates.

dcl-imenu-generic-expression
Default value for imenu-generic-expression. The default includes
SUBROUTINE labels in the main listing and sub-listings for
other labels, CALL, GOTO and GOSUB statements.

dcl-imenu-label-labels
dcl-imenu-label-goto
dcl-imenu-label-gosub
dcl-imenu-label-call
Change the text that is used as sub-listing labels in imenu.

Loading this package calls the value of the variable
`dcl-mode-load-hook' with no args, if that value is non-nil.
Turning on DCL mode calls the value of the variable `dcl-mode-hook'
with no args, if that value is non-nil.


The following example uses the default values for all variables:

$! This is a comment line that is not indented (it matches
$! dcl-comment-line-regexp)
$! Next follows the first command line. It is indented dcl-margin-offset.
$ i = 1
$ ! Other comments are indented like command lines.
$ ! A margin label indented dcl-margin-label-offset:
$ label:
$ if i.eq.1
$ then
$ ! Lines between THEN-ELSE and ELSE-ENDIF are
$ ! indented dcl-basic-offset
$ loop1: ! This matches dcl-block-begin-regexp...
$ ! ...so this line is indented dcl-basic-offset
$ text = "This " + - ! is a continued line
"lined up with the command line"
$ type sys$input
Data lines are not indented at all.
$ endloop1: ! This matches dcl-block-end-regexp
$ endif
$


There is some minimal font-lock support (see vars
`dcl-font-lock-defaults' and `dcl-font-lock-keywords').