home *** CD-ROM | disk | FTP | other *** search
- % dcl mode-- Special mode to facilitate editing of DCL files on VMS systems.
- %
-
- . ( [goal] 3 =goal
-
- . push_spot
- . {1 up}
- . {
- . eol trim
- . bol skip_white
- . '$' looking_at_char
- . { "$\t " skip_chars
- . '!' looking_at_char {what_column =goal break} !if
- . }
- . {
- . '!' looking_at_char
- . {
- % This takes care of running text following something
- % like type sys$input
- . push_spot
- . 1 up eol bolp not and
- . {trim 1 left pop
- . '-' looking_at_char
- . { pop_spot what_column =goal break} !if
- . } if
- . pop_spot
- . } !if
- . } else
- . }
- . while
-
- . {"then" looking_at {2 +=goal 1} {0} else}
- . {"else" looking_at {2 +=goal 1} {0} else}
- . orelse pop % orelse puts final value on stack
- . pop_spot
-
- . bol "$\t " skip_chars
- . {"else" looking_at {2 -=goal 1} {0} else}
- . {"endif" looking_at {2 -=goal 1} {0} else}
- . orelse pop
- . goal 1 > {goal}{3} else
- . ) dcl_get_ind
-
-
- . (
- . [goal]
- . push_spot
- . dcl_get_ind =goal
-
- . push_spot
- . 1 up {eol trim bolp {1 left pop '-' looking_at_char {2 +=goal} if} !if} if
- . pop_spot
-
- . bol "\t $" skip_chars
- . '!' looking_at_char
- . { "\t " bskip_chars trim goal what_column - whitespace}
- . !if
- . pop_spot
- . skip_white
- . ) dcl_indent
-
-
- . ( [cont p] 0 =cont
- . bobp bolp '$' looking_at_char and or {"$ \n" insert 1 left pop return} if
- . trim
- . push_spot
- % If line does not start with '$', assume something like
- % type sys$input going on and do not give dollar
- . push_spot bol
- . '$' looking_at_char not 1 up and
- . {
- . bolp eol trim
- . 1 left pop
- . what_char '-' != =cont
- . }
- . if
- . pop_spot
-
- . cont {
- . POINT =p "sys$input" bfind
- . { 9 right pop
- . ':' what_char == {1 right pop} if
- . POINT p == =cont
- . } if
- . p =POINT
- . } !if
-
- . bolp {1 left pop
- . '-' looking_at_char { 1 =cont} if
- . }
- . !if
- . pop_spot
- . newline
- . cont {'$' insert_char} !if
- . dcl_indent
- . ) dcl_newline
-
-
- . "DCL_Mode" is_defined
- . {
- . [DCL_Mode] "DCL" =DCL_Mode
- . DCL_Mode make_keymap
- . "dcl_newline" "^M" DCL_Mode definekey
- . "newline_and_indent" "^[^M" DCL_Mode definekey
- . "dcl_indent" "^I" DCL_Mode definekey
- . "self_insert_cmd" "\"" DCL_Mode definekey
- . "self_insert_cmd" "'" DCL_Mode definekey
- . }
- . !if
-
- . ( "DCL" use_keymap "dcl" 4 setmode ) dcl_mode
-
-