DIFFerences for TPUVI V5 -> V4 conversion

Gregg Wonderly gregg at a.cs.okstate.edu
Sat Nov 26 10:10:43 AEST 1988


These are differences between my last VMS V4.7 TPUVI and the current
VMS V5 TPUVI.  These diffs should help you to convert the most recent
VMS V5 TPUVI to work under V4.x.  Some of the changes are for bug
fixes and enhancements, while others are the changes made to make
TPUVI work under V5 TPU.  To help you out a little, below is some
background on the changes.  VI.OUT;635 is the V5 version, VI_V4.OUT;2
is the old V4 version.

-----------------------------------------------------------------------

Anything dealing with a pattern string should be converted back because
V4 TPU has many things wrong with the pattern searching routines, and
the patterns I used attempt to get around most of those problems.

I changed MOVE_HORIZONTAL (-CURRENT_OFFSET) to POSITION (LINE_BEGIN)
during conversion to V5 TPU.

I also changed MOVE_HORIZONTAL (LENGTH (CURRENT_LINE)-CURRENT_OFFSET) to
POSITION (LINE_END) during conversion to V5 TPU.

Occurances of STR (KEY_NAME (blah)) where changed to STR (INT (KEY_NAME (blah)))
during conversion to VMS V5.

In V4 of TPU, a SEARCH in the REVERSE direction would automatically
MOVE_HORIZONTAL (-1) for you before starting.  In V5 TPU, this 'feature'
was removed to make SEARCH orthoginal in behavior.

The V4 compiler missed several checks on parameter usage and variable
declarations.  Several of the changes made to go to V5 TPU involved
variable renaming.  These changes should still work under V4 of TPU.

If you have any questions about whether or not something should be included,
include it, and if it breaks the editor, then take it out!

Gregg Wonderly                      UUCP: {cbosgd, ihnp4, rutgers}!okstate!gregg
                                  Domain: gregg at A.CS.OKSTATE.EDU

-----------------------------------------------------------------------------

************
File VI$ROOT:[000000]VI.OUT;635
   13   !   Version number 2, edit 634, 25-NOV-1988 16:29:57.38
   14   !
******
File VI$ROOT:[SRC]VI_V4.OUT;2
   13   !   Version number 1, edit 611, 22-MAY-1988 10:57:29.38
   14   !
************
************
File VI$ROOT:[000000]VI.OUT;635
   29       vi$find_rng := 0;
   30       vi$_version := "VAX/TPU -- VI Version 2, Edit 636";
   31       message_buffer := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
   29       vi$_version := "VAX/TPU -- VI Version 1, Edit 611";
   30       message_buffer := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
  132       vi$para_str := "P ";
  133       vi$para_pat := LINE_BEGIN & ((".P")|LINE_END);
  134       vi$sect_str := "CHHLPG+c";
  135       vi$sect_pat := LINE_BEGIN & ((".CH"| ".HL"| ".PG"| "{")|LINE_END);
  136       vi$last_cmd := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
  131       vi$next_blank := "" & LINE_BEGIN & LINE_END;
  132       vi$para_str := "P ";
  133       vi$para_pat := "" & LINE_BEGIN & (".P");
  134       vi$sect_str := "CHHLPG+c";
  135       vi$sect_pat := "" & LINE_BEGIN & (".CH"| ".HL"| ".PG"| "{");
  136       vi$last_cmd := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
  703       POSITION (LINE_BEGIN);
  704       bol := MARK (NONE);
  705       repos := 0;
  706       IF (GET_INFO (vi$undo_line_mark, "TYPE") = MARKER) THEN
  707           POSITION (vi$undo_line_mark);
  708           POSITION (LINE_BEGIN);
  709           IF (bol <> MARK (NONE)) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
  703       MOVE_HORIZONTAL (-CURRENT_OFFSET);
  704       bol := MARK (NONE);
  705       repos := 0;
  706       IF (GET_INFO (vi$undo_line_mark, "TYPE") = MARKER) THEN
  707           POSITION (vi$undo_line_mark);
  708           MOVE_HORIZONTAL (-CURRENT_OFFSET);
  709           IF (bol <> MARK (NONE)) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
  813           IF (save_buffer AND (NOT old_global)) THEN
  814               vi$save_for_undo (CURRENT_BUFFER, VI$LINE_MODE, 1);
  815               vi$in_global := 1;
  816           ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
  813           vi$in_global := 0;
  814           IF (save_buffer AND (NOT old_global)) THEN
  815               vi$save_for_undo (CURRENT_BUFFER, VI$LINE_MODE, 1);
  816               vi$in_global := 1;
  817           ELSE
  818               IF old_global THEN
  819                   vi$in_global := 1;
  820               ENDIF;
  821           ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
  828           prog := LOOKUP_KEY (key, PROGRAM, vi$cmd_keys);
  830           ! If prog = 0 then key is undefined, so ignore it.
******
File VI$ROOT:[SRC]VI_V4.OUT;2
  833           prog := LOOKUP_KEY (KEY_NAME (key), PROGRAM, vi$cmd_keys);
  835           ! If prog = 0 then key is undefined, so ignore it.
************
************
File VI$ROOT:[000000]VI.OUT;635
  956       POSITION (LINE_BEGIN);
  957       npos := MARK (NONE);
  958       repos := 1;
  959       IF (GET_INFO (vi$undo_line_mark, "TYPE") = MARKER) THEN
  960           POSITION (vi$undo_line_mark);
  961           POSITION (LINE_BEGIN);
  962           IF (npos <> MARK (NONE)) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
  961       MOVE_HORIZONTAL (-CURRENT_OFFSET);
  962       npos := MARK (NONE);
  963       repos := 1;
  964       IF (GET_INFO (vi$undo_line_mark, "TYPE") = MARKER) THEN
  965           POSITION (vi$undo_line_mark);
  966           MOVE_HORIZONTAL (-CURRENT_OFFSET);
  967           IF (npos <> MARK (NONE)) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 1218       POSITION (LINE_BEGIN);
 1219       IF (SCROLL (CURRENT_WINDOW, n_lines) <> n_lines) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1223       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 1224       IF (SCROLL (CURRENT_WINDOW, n_lines) <> n_lines) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 1237       vi$beep_position (vi$to_column, 0, 1);
 1238   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1242       vi$position (vi$to_column, 0);
 1243   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 1418               SET (OUTPUT_FILE, CURRENT_BUFFER, new_output);
 1419               vi$status_lines (CURRENT_BUFFER);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1423               SET (OUTPUT, CURRENT_BUFFER, new_output);
 1424               vi$status_lines (CURRENT_BUFFER);
************
************
File VI$ROOT:[000000]VI.OUT;635
 1444               vi$beep_position (vi$find_str (vi$search_string, 0, 0), 1, 1);
 1445           ENDIF;
 1446       ELSE
 1447           vi$beep_position (vi$to_line (INT (new_lineno)), 1, 1);
 1448       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1449               vi$position (vi$find_str (vi$search_string, 0, 0), 1);
 1450           ENDIF;
 1451       ELSE
 1452           vi$position (vi$to_line (INT (new_lineno)), 1);
 1453       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 1681       POSITION (LINE_END);
 1682       max_mark := MARK(NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1686       MOVE_HORIZONTAL (LENGTH (CURRENT_LINE) - CURRENT_OFFSET);
 1687       max_mark := MARK(NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 1835           POSITION (LINE_BEGIN);
 1836           start_line := MARK (NONE);
 1837           POSITION (vi$start_pos);
 1839           IF (vi$endpos <> 0) THEN
 1840               POSITION (vi$endpos);
 1841               POSITION (LINE_BEGIN);
 1842               end_line := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1840           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 1841           start_line := MARK (NONE);
 1842           POSITION (vi$start_pos);
 1844           IF (vi$endpos <> 0) THEN
 1845               POSITION (vi$endpos);
 1846               MOVE_HORIZONTAL (-CURRENT_OFFSET);
 1847               end_line := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 1991           MESSAGE ("");
 1992           RETURN (vi$retpos (pos));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 1996           RETURN (vi$retpos (pos));
************
************
File VI$ROOT:[000000]VI.OUT;635
 2010           tend,
 2011           pos;
 2013       POSITION (LINE_BEGIN);
 2015       IF (MARK (NONE) <> BEGINNING_OF (CURRENT_BUFFER)) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2014           end,
 2015           pos;
 2017       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 2019       IF (MARK (NONE) <> BEGINNING_OF (CURRENT_BUFFER)) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 2030           POSITION (LINE_END);
 2031           MOVE_HORIZONTAL (-1);
 2032       ENDIF;
 2034       tend := MARK (NONE);
 2035       rng := CREATE_RANGE (start, tend, NONE);
 2036       POSITION (start);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2034           MOVE_HORIZONTAL (LENGTH (vi$current_line) - 1);
 2035       ENDIF;
 2037       end := MARK (NONE);
 2038       rng := CREATE_RANGE (start, end, NONE);
 2039       POSITION (start);
************
************
File VI$ROOT:[000000]VI.OUT;635
 2632       POSITION (LINE_BEGIN);
 2633       vi$start_pos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2635       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 2636       vi$start_pos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 2643           POSITION (LINE_BEGIN);
 2644           IF (vi$new_offset = 1) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2646           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 2647           IF (vi$new_offset = 1) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 2770       POSITION (LINE_END);
 2771       vi$new_endpos := MARK(NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2773       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 2774       MOVE_HORIZONTAL (LENGTH(vi$current_line) + 1);
 2775       vi$new_endpos := MARK(NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 2783           POSITION (LINE_BEGIN);
 2785           IF vi$new_offset = 1 THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2787           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 2789           IF vi$new_offset = 1 THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 2948           ELSE
 2949               POSITION (BEGINNING_OF (where));
 2950               bpos := MARK (NONE);
 2951               POSITION (END_OF (where));
 2952               vi$find_rng := CREATE_RANGE (bpos, MARK(NONE), BOLD);
 2953           ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 2952           ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3030           POSITION (BEGINNING_OF (where));
 3031           bpos := MARK (NONE);
 3032           POSITION (END_OF (where));
 3033           vi$find_rng := CREATE_RANGE (bpos, MARK(NONE), BOLD);
 3034       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3029           MESSAGE ("");
 3030       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3073               vi$info ("Search wrapped past buffer boundry!");
 3074               where := SEARCH (vi$_find_pat, CURRENT_DIRECTION, vi$ignore_case);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3069               where := SEARCH (vi$_find_pat, CURRENT_DIRECTION, vi$ignore_case);
************
************
File VI$ROOT:[000000]VI.OUT;635
 3194           cur_pat, ! The current pattern to be extracted
 3195           cur_char,    ! The current character in the regular
 3196                       ! expression being examined
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3189           cur_pat,    ! The current pattern to be extracted
 3190           cur_char,   ! The current character in the regular
 3191                       ! expression being examined
************
************
File VI$ROOT:[000000]VI.OUT;635
 3230           IF (cur_char = "$") AND (pos = LENGTH (pat)) THEN
 3231               cur_pat := "line_end";
 3232           ELSE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3225           IF (cur_char = "^") THEN
 3226               vi$info ("^ found in the middle of a line, use \ to escape it!");
 3227               RETURN (0);
 3228           ENDIF;
 3230           IF (cur_char = "$") THEN
 3231               IF (pos >= LENGTH (pat)) THEN
 3232                   cur_pat := "line_end";
 3233               ELSE
 3234                   vi$info ("$ found before end of string");
 3235                   RETURN (0);
 3236               ENDIF;
 3237           ELSE
************
************
File VI$ROOT:[000000]VI.OUT;635
 3317                       EXITIF (cur_char = "[") OR
 3318                               ((cur_char = "$") AND (pos = LENGTH (pat)));
 3319                       EXITIF (pos > LENGTH (pat));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3322                       EXITIF (cur_char = "^") OR (cur_char = "[") OR
 3323                               (cur_char = "$");
 3324                       EXITIF (pos > LENGTH (pat));
************
************
File VI$ROOT:[000000]VI.OUT;635
 3391                                   cur_pat := "span(vi$pch)";
 3392                               ELSE
 3393                                   cur_pat := "span('"+cur_char+"')";
 3394                               ENDIF;
 3395                               tstr := tstr+'"&'+cur_pat+'&"';
 3396                               haveany := 0;
 3397                           ELSE
 3398                               IF (LENGTH (cur_char) > 1) THEN
 3399                                   IF (haveany) THEN
 3400                                       tstr := tstr +'"&'+"arb(1)"+'&"';
 3401                                       haveany := 0;
 3402                                   ELSE
 3403                                       IF (LENGTH (tstr)>0) and (tstr <> '"') THEN
 3404                                           tstr := tstr +'"&'+"arb(1)"+'&"';
 3405                                       ELSE
 3406                                           tstr := "arb(1)"+'&"';
 3407                                       ENDIF
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3396                                   cur_pat := "''&(span(vi$pch)|'')";
 3397                               ELSE
 3398                                   cur_pat := "(span('"+cur_char+"')|"""")";
 3399                               ENDIF;
 3400                               tstr := tstr+'"'+"&"+cur_pat+"&"+'"';
 3401                               haveany := 0;
 3402                           ELSE
 3403                               IF (LENGTH (cur_char) > 1) THEN
 3404                                   IF (haveany) THEN
 3405                                       tstr := tstr +'"'+"&"+"arb(1)"+"&"+'"';
 3406                                       haveany := 0;
 3407                                   ELSE
 3408                                       IF (LENGTH (tstr)>0) and (tstr <> '"') THEN
 3409                                           tstr := tstr +'"'+"&"+"arb(1)"+"&"+'"';
 3410                                       ELSE
 3411                                           tstr := "arb(1)"+"&"+'"';
 3412                                       ENDIF
************
************
File VI$ROOT:[000000]VI.OUT;635
 3458       vi$beep_position (vi$match_brackets, 1, 1);
 3459   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3463       vi$position (vi$match_brackets, 1);
 3464   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3556       ELSE
 3557           MOVE_HORIZONTAL (-1);
 3558       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3561       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3600               ELSE
 3601                   MOVE_HORIZONTAL (-1);
 3602               ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3603               ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3718       POSITION (LINE_BEGIN);
 3719       cnt := vi$active_count;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3719       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 3720       cnt := vi$active_count;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3728       POSITION (LINE_END);
 3729       vi$check_rmarg;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3729       MOVE_HORIZONTAL (LENGTH (vi$current_line));
 3730       vi$check_rmarg;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3744       vi$beep_position (vi$first_no_space (use_cur_active), 0, 1);
 3745   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3745       vi$position (vi$first_no_space (use_cur_active), 0);
 3746   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3755       POSITION (LINE_BEGIN);
 3756       vi$yank_mode := VI$IN_LINE_MODE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3756       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 3757       vi$yank_mode := VI$IN_LINE_MODE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 3772       IF (vi$beep_position (pos, 1, 0) <> 0) THEN
 3773           POSITION (opos);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3773       IF (vi$position (pos, 1) <> 0) THEN
 3774           POSITION (opos);
************
************
File VI$ROOT:[000000]VI.OUT;635
 3789       IF (vi$beep_position (pos, 1, 0) <> 0) THEN
 3790           POSITION (opos);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3790       IF (vi$position (pos, 1) <> 0) THEN
 3791           POSITION (opos);
************
************
File VI$ROOT:[000000]VI.OUT;635
 3799       vi$beep_position (vi$repeat_torf_back, 0, 1);
 3800   ENDPROCEDURE
 3802   !
 3803   !   Repeat the last 't' or 'f' command.
 3804   !
 3805   PROCEDURE vi$_repeat_torf
 3806       vi$beep_position (vi$repeat_torf, 0, 1);
 3807   ENDPROCEDURE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3800       vi$position (vi$repeat_torf_back, 0);
 3801   ENDPROCEDURE
 3803   !
 3804   !   Repeat the last 't' or 'f' command.
 3805   !
 3806   PROCEDURE vi$_repeat_torf
 3807       vi$position (vi$repeat_torf, 0);
 3808   ENDPROCEDURE
************
************
File VI$ROOT:[000000]VI.OUT;635
 3820           RETURN (0);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3821           vi$beep;
 3822           RETURN (0);
************
************
File VI$ROOT:[000000]VI.OUT;635
 3979               IF (INT(ch) <= INT(KEY_NAME (ASCII (31)))) AND
 3980                                   (INT (ch) >= INT(CTRL_A_KEY)) THEN
 3981                   IF ch = TAB_KEY THEN
 3982                       addch := 9;
 3983                       COPY_TEXT (ASCII(addch));
 3984                   ELSE
 3985                       addch := ((INT(ch) - INT(CTRL_A_KEY)) / 256) + 1;
 3986                       COPY_TEXT ("^");
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 3980               IF (ch <= KEY_NAME (ASCII (31))) AND (ch >= CTRL_A_KEY) THEN
 3981                   IF ch = TAB_KEY THEN
 3982                       addch := 9;
 3983                       COPY_TEXT (ASCII(addch));
 3984                   ELSE
 3985                       addch := ((ch - CTRL_A_KEY) / 256) + 1;
 3986                       COPY_TEXT ("^");
************
************
File VI$ROOT:[000000]VI.OUT;635
 4056       POSITION (LINE_BEGIN);
 4057       LOOP
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4056       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 4057       LOOP
************
************
File VI$ROOT:[000000]VI.OUT;635
 4065               POSITION (LINE_END);
 4066               RETURN;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4065               MOVE_HORIZONTAL (LENGTH (CURRENT_LINE));
 4066               RETURN;
************
************
File VI$ROOT:[000000]VI.OUT;635
 4136           spos,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4136           pos,
 4137           spos,
************
************
File VI$ROOT:[000000]VI.OUT;635
 4417       vi$info ("Unrecognized command! ("+cmd+")");
 4418       RETURN (1);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4418       vi$info ("Unrecognized command! ("+token_1+")");
 4419       RETURN (1);
************
************
File VI$ROOT:[000000]VI.OUT;635
 4466           learn_seq,
 4467           key,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4467           key,
************
************
File VI$ROOT:[000000]VI.OUT;635
 4479       learn_seq := LEARN_END;
 4480       vi$info ("Press key to bind sequence to: ");
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4479       vi$info ("Press key to bind sequence to: ");
************
************
File VI$ROOT:[000000]VI.OUT;635
 4497       vi$global_var := learn_seq;
 4498       EXECUTE (COMPILE (key+":=vi$global_var"));
 4499       vi$in_learn := 0;
 4500       DEFINE_KEY ("vi$play_back("+key+")", keyn, "learn_sequence", vi$cmd_keys);
 4501       vi$info ("Sequence bound to key");
 4502       RETURN (1);
 4503   ENDPROCEDURE;
 4505   !
 4506   !   Play back the program sequence for a learned set of keystrokes.
 4507   !
 4508   PROCEDURE vi$play_back (prog)
 4509       LOCAL
 4510           cnt,
 4511           old_play_back,
 4512           old_global;
 4514       IF (vi$m_level > 30) THEN
 4515           vi$info ("Infinite loop in key macro sequence (repeated > 30)!");
 4516           RETURN;
 4517       ENDIF;
 4518       vi$m_level := vi$m_level + 1;
 4520       MESSAGE ("undomap: "+str(vi$undo_map)+", global: "+str(vi$in_global));
 4521       IF vi$undo_map THEN
 4522           old_global := vi$in_global;
 4523           IF (NOT old_global) THEN
 4524               vi$save_for_undo (CURRENT_BUFFER, VI$LINE_MODE, 1);
 4525               vi$in_global := 1;
 4526               MESSAGE ("saved changes "+str(old_global)+"  "+str (vi$in_global));
 4527           ENDIF;
 4528       ENDIF;
 4530       cnt := vi$cur_active_count;
 4532       old_play_back := vi$playing_back;
 4533       vi$playing_back := 1;
 4535       LOOP
 4536           EXITIF (cnt = 0);
 4537           EXECUTE (prog);
 4538           cnt := cnt - 1;
 4539       ENDLOOP;
 4540       vi$playing_back := old_play_back;
 4541       vi$m_level := vi$m_level - 1;
 4543       vi$in_global := old_global;
 4544       IF (NOT vi$in_global) THEN
 4545           vi$undo_start := BEGINNING_OF (CURRENT_BUFFER);
 4546           vi$undo_end := END_OF (CURRENT_BUFFER);
 4547       ENDIF;
 4548   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4496       EXECUTE (COMPILE (key+":=LEARN_END"));
 4497       vi$in_learn := 0;
 4498       DEFINE_KEY ("vi$play_back("+key+")", keyn, "learn_sequence", vi$cmd_keys);
 4499       vi$info ("Sequence bound to key");
 4500       RETURN (1);
 4501   ENDPROCEDURE;
 4503   !
 4504   !
 4505   !
 4506   PROCEDURE vi$play_back (prog)
 4507       LOCAL
 4508           old_play_back,
 4509           old_global;
 4511       IF (vi$m_level > 30) THEN
 4512           vi$info ("Infinite loop detected in key macro sequence!");
 4513           RETURN;
 4514       ENDIF;
 4515       vi$m_level := vi$m_level + 1;
 4517       IF vi$undo_map THEN
 4518           old_global := vi$in_global;
 4519           vi$in_global := 0;
 4520           IF (NOT old_global) THEN
 4521               vi$save_for_undo (CURRENT_BUFFER, VI$LINE_MODE, 1);
 4522               vi$in_global := 1;
 4523           ENDIF;
 4524       ENDIF;
 4526       old_play_back := vi$playing_back;
 4527       vi$playing_back := 1;
 4528       EXECUTE (prog);
 4529       vi$playing_back := old_play_back;
 4530       vi$m_level := vi$m_level - 1;
 4532       vi$in_global := old_global;
 4533   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 4817                       POSITION (LINE_BEGIN);
 4818                       MOVE_VERTICAL (1);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4802                       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 4803                       MOVE_VERTICAL (1);
************
************
File VI$ROOT:[000000]VI.OUT;635
 4837                   POSITION (LINE_BEGIN);
 4838                   fpos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4822                   MOVE_HORIZONTAL (-CURRENT_OFFSET);
 4823                   fpos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 4848                               POSITION (LINE_BEGIN);
 4849                               MOVE_VERTICAL (1);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4833                               MOVE_HORIZONTAL (-CURRENT_OFFSET);
 4834                               MOVE_VERTICAL (1);
************
************
File VI$ROOT:[000000]VI.OUT;635
 4921       POSITION (LINE_BEGIN);
 4922       SCROLL (CURRENT_WINDOW, endl-startl);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 4906       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 4907       SCROLL (CURRENT_WINDOW, endl-startl);
************
************
File VI$ROOT:[000000]VI.OUT;635
 5369           MESSAGE ("");
 5370       ELSE
 5371           vi$fill_region (token_1, token_2, whole_range);
 5372       ENDIF;
 5374       vi$info ("Fill complete!");
 5375       sleep (1);
 5376       vi$check_length (olen);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 5354       ELSE
 5355           vi$fill_region (token_1, token_2, whole_range);
 5356       ENDIF;
 5358       vi$check_length (olen);
************
************
File VI$ROOT:[000000]VI.OUT;635
 5614           POSITION (LINE_BEGIN);
 5615           vi$move_vertical (1);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 5596           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 5597           vi$move_vertical (1);
************
************
File VI$ROOT:[000000]VI.OUT;635
 5643               POSITION (LINE_BEGIN);
 5644               IF (MARK (NONE) = END_OF (CURRENT_BUFFER)) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 5625               MOVE_HORIZONTAL (-CURRENT_OFFSET);
 5626               IF (MARK (NONE) = END_OF (CURRENT_BUFFER)) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 5859                   vi$beep_position (num, 1, 1);
 5860                   vi$pos_in_middle (MARK (NONE));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 5841                   vi$position (num, 1);
 5842                   vi$pos_in_middle (MARK (NONE));
************
************
File VI$ROOT:[000000]VI.OUT;635
 6051                   MESSAGE ("");
 6052               ELSE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6033               ELSE
************
************
File VI$ROOT:[000000]VI.OUT;635
 6231           tend,
 6232           spos,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6212           end,
 6213           spos,
************
************
File VI$ROOT:[000000]VI.OUT;635
 6253       tend := MARK (NONE);
 6254       rng := CREATE_RANGE (beg, tend, NONE);
 6255       POSITION (BEGINNING_OF (rng));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6234       end := MARK (NONE);
 6235       rng := CREATE_RANGE (beg, end, NONE);
 6236       POSITION (BEGINNING_OF (rng));
************
************
File VI$ROOT:[000000]VI.OUT;635
 6338       key := INT (key);
 6339       IF (key < 32) THEN
 6340           key := ((INT(CTRL_B_KEY) - INT(CTRL_A_KEY)) *
 6341                                           (key - 1)) + INT(CTRL_A_KEY);
 6342       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6319       IF (key < 32) THEN
 6320           key := ((CTRL_B_KEY - CTRL_A_KEY) * (key - 1)) + CTRL_A_KEY;
 6321       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6434           COPY_TEXT (STR (INT (KEY_NAME (SUBSTR (cmd, i, 1)))));
 6435           SPLIT_LINE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6413           COPY_TEXT (STR (KEY_NAME (SUBSTR (cmd, i, 1))));
 6414           SPLIT_LINE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6447               map_type + ")', KEY_NAME(" + STR(key) + "), 'active_macro', vi$edit_keys);"));
 6448       ELSE
 6449           EXECUTE (COMPILE ("DEFINE_KEY ('vi$do_macro (vi$$key_map_buf_" + keyn +
 6450               map_type + ", 1)', KEY_NAME(" + STR(key) +
 6451               "), 'active_macro', vi$cmd_keys);"));
 6452       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6426               map_type + ")', " + STR(key) + ", 'active_macro', vi$edit_keys);"));
 6427       ELSE
 6428           EXECUTE (COMPILE ("DEFINE_KEY ('vi$do_macro (vi$$key_map_buf_" + keyn +
 6429               map_type + ", 1)', " + STR(key) +
 6430               ", 'active_macro', vi$cmd_keys);"));
 6431       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6493       key := INT (key);
 6494       IF (key < 32) THEN
 6495           key := ((INT(CTRL_B_KEY) - INT(CTRL_A_KEY)) *
 6496                                           (key - 1)) + INT(CTRL_A_KEY);
 6497       ENDIF;
 6499       keyn := vi$key_map_name (key);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6472       keyn := vi$key_map_name (key);
************
************
File VI$ROOT:[000000]VI.OUT;635
 6606       LOCAL
 6607           k;
 6609       k := key;
 6610       IF (GET_INFO (key, "TYPE") = KEYWORD) THEN
 6611           k := INT (key);
 6612       ENDIF;
 6613       RETURN (SUBSTR(FAO("!XL", k),1,6));
 6614   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6579       RETURN (SUBSTR(FAO("!XL", key),1,6));
 6580   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6836           doglobal,
 6837           replace,
 6838           separ;
 6840       idx := 1;
 6842       separ := vi$next_char (cmd, idx);
 6844       source := "";
 6845       dest   := "";
 6846       doglobal := 0;
 6847       query  := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6802           global,
 6803           replace,
 6804           separ;
 6806       idx := 1;
 6808       separ := vi$next_char (cmd, idx);
 6810       source := "";
 6811       dest   := "";
 6812       global := 0;
 6813       query  := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6878                   doglobal := 1;
 6879               ELSE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6844                   global := 1;
 6845               ELSE
************
************
File VI$ROOT:[000000]VI.OUT;635
 6891                                                   scount, doglobal, query);
 6892       nsubs := nsubs + scount;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6857                                                   scount, global, query);
 6858       nsubs := nsubs + scount;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6916           doglobal,
 6917           replace,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6882           global,
 6883           replace,
************
************
File VI$ROOT:[000000]VI.OUT;635
 6930       doglobal := 0;
 6931       query  := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6896       global := 0;
 6897       query  := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
 6962                   doglobal := 1;
 6963               ELSE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6928                   global := 1;
 6929               ELSE
************
************
File VI$ROOT:[000000]VI.OUT;635
 6986       scount := 0;
 6987       lpos := vi$perform_subs (source, dest, end_line, scount, doglobal, query);
 6989       IF (scount = 0) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6952       lpos := vi$perform_subs (source, dest, end_line, scount, global, query);
 6954       IF (scount = 0) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 7017           doglobal,
 7018           query,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6982           global,
 6983           query,
************
************
File VI$ROOT:[000000]VI.OUT;635
 7030       doglobal := 0;
 7031       query := 0;
 7032       here := vi$cur_line_no;
 7033       vi$save_for_undo (CURRENT_LINE, VI$LINE_MODE, 1);
 7035       pos := MARK (NONE);
 7036       POSITION (LINE_BEGIN);
 7038       spos := vi$get_undo_start;
 7040       POSITION (LINE_END);
 7041       IF (LENGTH (CURRENT_LINE) > 0) THEN
 7042           MOVE_HORIZONTAL (-1);
 7043       ENDIF;
 7044       epos := MARK (NONE);
 7045       POSITION (pos);
 7047       lpos := vi$perform_subs (vi$replace_source, vi$replace_dest,
 7048                                                   here, scount, doglobal, query);
 7050       IF (scount = 0) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 6995       global := 0;
 6996       query := 0;
 6997       here := vi$cur_line_no;
 6998       vi$save_for_undo (CURRENT_LINE, VI$LINE_MODE, 1);
 7000       pos := MARK (NONE);
 7001       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 7003       spos := vi$get_undo_start;
 7005       MOVE_HORIZONTAL (LENGTH (CURRENT_LINE));
 7006       IF (LENGTH (CURRENT_LINE) > 0) THEN
 7007           MOVE_HORIZONTAL (-1);
 7008       ENDIF;
 7009       epos := MARK (NONE);
 7010       POSITION (pos);
 7012       lpos := vi$perform_subs (vi$replace_source, vi$replace_dest,
 7013                                                   here, scount, global, query);
 7015       IF (scount = 0) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 7070   PROCEDURE vi$perform_subs (source, dest, end_line, scount, doglobal, query)
 7072       LOCAL
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7035   PROCEDURE vi$perform_subs (source, dest, end_line, scount, global, query)
 7037       LOCAL
************
************
File VI$ROOT:[000000]VI.OUT;635
 7150           IF NOT doglobal THEN
 7151               POSITION (LINE_BEGIN);
 7152               EXITIF MARK (NONE) = END_OF (CURRENT_BUFFER);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7115           IF NOT global THEN
 7116               MOVE_HORIZONTAL (-CURRENT_OFFSET);
 7117               EXITIF MARK (NONE) = END_OF (CURRENT_BUFFER);
************
************
File VI$ROOT:[000000]VI.OUT;635
 7538       IF (token_1 = "sections") OR (token_1 = "sect") THEN
 7539           pstr := "LINE_BEGIN&((";
 7540           use_fortran := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7503       vi$para_str := "P p ";
 7504       vi$para_pat := line_begin & (
 7505                                       (".P" | ".p") |
 7506                                       (LINE_END));
 7507       IF (token_1 = "sections") OR (token_1 = "sect") THEN
 7508           pstr := "LINE_BEGIN&(";
 7509           use_fortran := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
 7569               pstr := '("FUNCTION"|"SUBROUTINE")|('+ pstr + "))|LINE_END)";
 7570           ENDIF;
 7571           EXECUTE (COMPILE ("vi$sect_pat:="+pstr+";"));
 7572           RETURN (0);
 7573       ENDIF;
 7575       IF (token_1 = "paragraphs") OR (token_1 = "para") THEN
 7576           pstr := 'LINE_BEGIN&((';
 7577           vi$para_str := "";
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7538               pstr := '""&(("FUNCTION"|"SUBROUTINE")|('+ pstr + "))";
 7539           ELSE
 7540               pstr := '""&'+pstr;
 7541           ENDIF;
 7542           EXECUTE (COMPILE ("vi$sect_pat:="+pstr+";"));
 7543           RETURN (0);
 7544       ENDIF;
 7546       IF (token_1 = "paragraphs") OR (token_1 = "para") THEN
 7547           pstr := '""&LINE_BEGIN&(';
 7548           vi$para_str := "";
************
************
File VI$ROOT:[000000]VI.OUT;635
 7590           pstr := pstr + ")|LINE_END)";
 7591           EXECUTE (COMPILE ("vi$para_pat:="+pstr+";"));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7561           pstr := pstr + ")";
 7562           EXECUTE (COMPILE ("vi$para_pat:="+pstr+";"));
************
************
File VI$ROOT:[000000]VI.OUT;635
 7879       vi$beep_position (vi$to_char (char_val), 0, 1);
 7880   ENDPROCEDURE;
 7882   !
 7883   !   Function performing task for 't'.
 7884   !
 7885   PROCEDURE vi$to_char (ch_to_find)
 7887       LOCAL
 7888           char_to_find,
 7889           act_count,
 7890           pos,
 7891           found;
 7893       char_to_find := ch_to_find;
 7894       IF char_to_find = 0 THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7850       vi$position (vi$to_char (char_val), 0);
 7851   ENDPROCEDURE;
 7853   !
 7854   !   Function performing task for 't'.
 7855   !
 7856   PROCEDURE vi$to_char (char_to_find)
 7858       LOCAL
 7859           act_count,
 7860           pos,
 7861           found;
 7863       IF char_to_find = 0 THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 7946       vi$beep_position (vi$back_to_char (char_val), 0, 1);
 7947   ENDPROCEDURE;
 7949   !
 7950   !   Function performing task for 'T'.
 7951   !
 7952   PROCEDURE vi$back_to_char (ch_to_find)
 7954       LOCAL
 7955           char_to_find,
 7956           act_count,
 7957           pos,
 7958           found;
 7960       char_to_find := ch_to_find;
 7961       IF char_to_find = 0 THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7915       vi$position (vi$back_to_char (char_val), 0);
 7916   ENDPROCEDURE;
 7918   !
 7919   !   Function performing task for 'T'.
 7920   !
 7921   PROCEDURE vi$back_to_char (char_to_find)
 7923       LOCAL
 7924           act_count,
 7925           pos,
 7926           found;
 7928       IF char_to_find = 0 THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 8015       vi$beep_position (vi$find_char (char_val), 0, 1);
 8016   ENDPROCEDURE;
 8018   !
 8019   !   Function performing task for 'f'.
 8020   !
 8021   PROCEDURE vi$find_char (ch_to_find)
 8023       LOCAL
 8024           char_to_find,
 8025           act_count,
 8026           pos,
 8027           found;
 8029       char_to_find := ch_to_find;
 8030       IF char_to_find = 0 THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 7982       vi$position (vi$find_char (char_val), 0);
 7983   ENDPROCEDURE;
 7985   !
 7986   !   Function performing task for 'f'.
 7987   !
 7988   PROCEDURE vi$find_char (char_to_find)
 7990       LOCAL
 7991           act_count,
 7992           pos,
 7993           found;
 7995       IF char_to_find = 0 THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 8074       vi$beep_position (vi$back_find_char (char_val), 0, 1);
 8075   ENDPROCEDURE;
 8077   !
 8078   !   Function performing task for 'F'.
 8079   !
 8080   PROCEDURE vi$back_find_char (ch_to_find)
 8082       LOCAL
 8083           char_to_find,
 8084           act_count,
 8085           pos,
 8086           found;
 8088       char_to_find := ch_to_find;
 8089       IF char_to_find = 0 THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8039       vi$position (vi$back_find_char (char_val), 0);
 8040   ENDPROCEDURE;
 8042   !
 8043   !   Function performing task for 'F'.
 8044   !
 8045   PROCEDURE vi$back_find_char (char_to_find)
 8047       LOCAL
 8048           act_count,
 8049           pos,
 8050           found;
 8052       IF char_to_find = 0 THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 8154       IF (vi$beep_position (vi$to_line (vi$active_count), 1, 1) <> 0) THEN
 8155           pos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8117       IF (vi$position (vi$to_line (vi$active_count), 1) <> 0) THEN
 8118           pos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 8182       POSITION (LINE_BEGIN);
 8183       vi$start_pos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8145       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 8146       vi$start_pos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 8248       IF (vi$beep_position (vi$to_marker, 1, 1) <> 0) THEN
 8249           pos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8211       IF (vi$position (vi$to_marker, 1) <> 0) THEN
 8212           pos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
 8310               POSITION (LINE_BEGIN);
 8311               POSITION (vi$first_no_space (0));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8273               MOVE_HORIZONTAL (-CURRENT_OFFSET);
 8274               POSITION (vi$first_no_space (0));
************
************
File VI$ROOT:[000000]VI.OUT;635
 8333       IF vi$active_count = 0 THEN
 8334           vi$active_count := INT (ASCII (KEY_NAME (vi$last_key)));
 8335           IF vi$active_count = 0 THEN
 8336               vi$beep_position (vi$fol, 0, 1);
 8337           ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8296       IF VI$ACTIVE_COUNT = 0 THEN
 8297           vi$active_count := INT (ASCII (KEY_NAME (vi$last_key)));
 8298           IF vi$active_count = 0 THEN
 8299               vi$position (vi$fol, 0);
 8300           ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8365       POSITION (LINE_BEGIN);
 8366       POSITION (vi$first_no_space (0));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8328       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 8329       POSITION (vi$first_no_space (0));
************
************
File VI$ROOT:[000000]VI.OUT;635
 8395       POSITION (LINE_BEGIN);
 8397       IF (LENGTH (CURRENT_LINE) > 0) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8358       MOVE_HORIZONTAL (- CURRENT_OFFSET);
 8360       IF (LENGTH (CURRENT_LINE) > 0) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 8432           vi$beep_position (vi$section (dir), 1, 1);
 8433       ELSE
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8395           vi$position (vi$section (dir), 1);
 8396       ELSE
************
************
File VI$ROOT:[000000]VI.OUT;635
 8452       ln := vi$current_line;
 8453       SET (BELL, ALL, ON);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8415       ln := CURRENT_LINE;
 8416       SET (BELL, ALL, ON);
************
************
File VI$ROOT:[000000]VI.OUT;635
 8464       vi$beep_position (vi$paragraph(dir), 1, 1);
 8465   ENDPROCEDURE;
 8467   !
 8468   !   Mapped to ( moves backward a sentence
 8469   !
 8470   PROCEDURE vi$_begin_sentence
 8471       vi$beep_position (vi$begin_sentence, 1, 1);
 8472   ENDPROCEDURE;
 8474   !
 8475   !   Mapped to ) moves forward a sentence
 8476   !
 8477   PROCEDURE vi$_end_sentence
 8478       vi$beep_position (vi$end_sentence, 1, 1);
 8479   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8427       vi$position (vi$paragraph(dir), 1);
 8428   ENDPROCEDURE;
 8430   !
 8431   !   Mapped to ( moves backward a sentence
 8432   !
 8433   PROCEDURE vi$_begin_sentence
 8434       vi$position (vi$begin_sentence, 1);
 8435   ENDPROCEDURE;
 8437   !
 8438   !   Mapped to ) moves forward a sentence
 8439   !
 8440   PROCEDURE vi$_end_sentence
 8441       vi$position (vi$end_sentence, 1);
 8442   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8556       loc := SEARCH (pat, direct, NO_EXACT);
 8558       IF (loc <> 0) THEN
 8559           RETURN (BEGINNING_OF (loc));
 8560       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8519       SET (TIMER, ON, "Searching...");
 8520       loc := SEARCH (pat, direct, NO_EXACT);
 8521       SET (TIMER, OFF);
 8523       IF (loc <> 0) THEN
 8524           RETURN (BEGINNING_OF (loc));
 8525       ELSE
 8526           SET (TIMER, ON, "Searching...");
 8527           loc := SEARCH (vi$next_blank, direct, NO_EXACT);
 8528           SET (TIMER, OFF);
 8529           IF (loc <> 0) THEN
 8530               RETURN (BEGINNING_OF (loc));
 8531           ENDIF;
 8532       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8715           POSITION (LINE_BEGIN);
 8716       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8687           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 8688       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8729           POSITION (LINE_BEGIN);
 8730       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8701           MOVE_HORIZONTAL (-CURRENT_OFFSET);
 8702       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8783       POSITION (LINE_BEGIN);
 8785       IF (MARK (NONE) <> BEGINNING_OF (CURRENT_BUFFER)) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8755       MOVE_HORIZONTAL (- CURRENT_OFFSET);
 8757       IF (MARK (NONE) <> BEGINNING_OF (CURRENT_BUFFER)) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 8843       vi$beep_position (vi$left, 0, 1);
 8844   ENDPROCEDURE;
 8846   !
 8847   !   The function mapped to 'l'.
 8848   !
 8849   PROCEDURE vi$move_right
 8850       vi$beep_position (vi$right, 0, 1);
 8851   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8815       vi$position (vi$left, 0);
 8816   ENDPROCEDURE;
 8818   !
 8819   !   The function mapped to 'l'.
 8820   !
 8821   PROCEDURE vi$move_right
 8822       vi$position (vi$right, 0);
 8823   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8866       vi$beep_position (vi$downline (0), save_mark, 1);
 8867   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8838       vi$position (vi$downline (0), save_mark);
 8839   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8882       vi$beep_position (vi$upline, save_mark, 1);
 8883   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8854       vi$position (vi$upline, save_mark);
 8855   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 8970       POSITION (LINE_BEGIN);
 8971       vi$_bol (0);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8942       MOVE_HORIZONTAL (- CURRENT_OFFSET);
 8943       vi$_bol (0);
************
************
File VI$ROOT:[000000]VI.OUT;635
 8982           cline,
 8983           coff;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 8954           cline;
 8955           coff;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9276                       in_char := INT (in_char);
 9277                       IF (in_char <= INT(CTRL_Z_KEY)) AND
 9278                                       (in_char >= INT(CTRL_A_KEY)) THEN
 9279                           in_char := (in_char - INT(CTRL_A_KEY)) /
 9280                                       (INT(CTRL_B_KEY) - INT(CTRL_A_KEY)) + 1;
 9281                       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9248                       IF (in_char <= CTRL_Z_KEY) AND (in_char >= CTRL_A_KEY) THEN
 9249                           in_char := (in_char - CTRL_A_KEY) /
 9250                                       (CTRL_B_KEY - CTRL_A_KEY) + 1;
 9251                       ENDIF;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9560       POSITION (LINE_BEGIN);
 9561       COPY_TEXT (istr);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9530       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 9531       COPY_TEXT (istr);
************
************
File VI$ROOT:[000000]VI.OUT;635
 9738       key := key_n;
 9739       IF (GET_INFO (key, "TYPE") = KEYWORD) THEN
 9740           key := INT (key);
 9741       ENDIF;
 9742       key := (key - INT(CTRL_A_KEY)) / (INT(CTRL_B_KEY) - INT(CTRL_A_KEY));
 9743       IF (key > 31) OR (key < 0) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9708       key := (key_n - CTRL_A_KEY) / (CTRL_B_KEY - CTRL_A_KEY);
 9709       IF (key > 31) OR (key < 0) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
 9784       vi$beep_position (vi$first_no_space(0), 0, 1);
 9785   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9750       vi$position (vi$first_no_space(0), 0);
 9751   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9797       vi$beep_position (vi$first_no_space(0), 0, 1);
 9798   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9763       vi$position (vi$first_no_space(0), 0);
 9764   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9855       POSITION (LINE_BEGIN);
 9857       old_scroll_top := GET_INFO (scroll_window, "SCROLL_TOP");
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9821       MOVE_HORIZONTAL (-CURRENT_OFFSET);
 9823       old_scroll_top := GET_INFO (scroll_window, "SCROLL_TOP");
************
************
File VI$ROOT:[000000]VI.OUT;635
 9880       vi$beep_position (vi$word_move (1), 0, 1);
 9881   ENDPROCEDURE;
 9883   !
 9884   !   Move backward logical words
 9885   !
 9886   PROCEDURE vi$_word_back
 9887       vi$beep_position (vi$word_move(-1), 0, 1);
 9888   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9846       vi$position (vi$word_move (1), 0);
 9847   ENDPROCEDURE;
 9849   !
 9850   !   Move backward logical words
 9851   !
 9852   PROCEDURE vi$_word_back
 9853       vi$position (vi$word_move(-1), 0);
 9854   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9920       vi$beep_position (vi$word_end, 0, 1);
 9921   ENDPROCEDURE;
 9923   !
 9924   !   Move to end of physical word
 9925   !
 9926   PROCEDURE vi$_full_word_end
 9927       vi$beep_position (vi$full_word_end, 0, 1);
 9928   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9886       vi$position (vi$word_end, 0);
 9887   ENDPROCEDURE;
 9889   !
 9890   !   Move to end of physical word
 9891   !
 9892   PROCEDURE vi$_full_word_end
 9893       vi$position (vi$full_word_end, 0);
 9894   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
 9987       vi$beep_position (vi$full_word_move (1), 0, 1);
 9988   ENDPROCEDURE;
 9990   !
 9991   !
 9992   !   Move backward by ONE white-space delimited word
 9993   !
 9994   PROCEDURE vi$_full_word_back
 9995       vi$beep_position (vi$full_word_move (-1), 0, 1);
 9996   ENDPROCEDURE;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
 9953       vi$position (vi$full_word_move (1), 0);
 9954   ENDPROCEDURE;
 9956   !
 9957   !
 9958   !   Move backward by ONE white-space delimited word
 9959   !
 9960   PROCEDURE vi$_full_word_back
 9961       vi$position (vi$full_word_move (-1), 0);
 9962   ENDPROCEDURE;
************
************
File VI$ROOT:[000000]VI.OUT;635
10313       POSITION (LINE_BEGIN);
10315       cnt := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10279       MOVE_HORIZONTAL (- CURRENT_OFFSET);
10281       cnt := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
10375   PROCEDURE vi$beep_position (pos, save_pos, dobeep)
10376       IF (pos <> 0) THEN
10377           IF save_pos THEN
10378               vi$old_place := MARK (NONE);
10379           ENDIF;
10380           POSITION (pos);
10381       ELSE
10382           IF dobeep THEN
10383               vi$beep;
10384           ENDIF;
10385           RETURN (vi$abort (0));
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10341   PROCEDURE vi$position (pos, save_pos)
10342       IF (pos <> 0) THEN
10343           IF save_pos THEN
10344               vi$old_place := MARK (NONE);
10345           ENDIF;
10346           POSITION (pos);
10347       ELSE
10348           vi$beep;
10349           RETURN (vi$abort (0));
************
************
File VI$ROOT:[000000]VI.OUT;635
10402           spos,
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10366           end,
10367           spos,
************
************
File VI$ROOT:[000000]VI.OUT;635
10414       POSITION (LINE_BEGIN);
10415       pos := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10379       MOVE_HORIZONTAL (-CURRENT_OFFSET);
10380       pos := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
10433       POSITION (LINE_END);
10435       LOOP
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10398       MOVE_HORIZONTAL (LENGTH (vi$current_line));
10400       LOOP
************
************
File VI$ROOT:[000000]VI.OUT;635
10461       POSITION (LINE_BEGIN);
10462       vi$undo_start := MARK (NONE);
10463       POSITION (LINE_END);
10464       vi$undo_end := MARK (NONE);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10426       MOVE_HORIZONTAL (-CURRENT_OFFSET);
10427       vi$undo_start := MARK (NONE);
10428       MOVE_HORIZONTAL (LENGTH (vi$current_line));
10429       vi$undo_end := MARK (NONE);
************
************
File VI$ROOT:[000000]VI.OUT;635
10498               POSITION (LINE_BEGIN);
10499               vi$endpos := MARK (NONE);
10500               POSITION (vi$start_pos);
10501               POSITION (LINE_BEGIN);
10503               IF (MARK (NONE) = vi$endpos) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10463               MOVE_HORIZONTAL (-CURRENT_OFFSET);
10464               vi$endpos := MARK (NONE);
10465               POSITION (vi$start_pos);
10466               MOVE_HORIZONTAL (-CURRENT_OFFSET);
10468               IF (MARK (NONE) = vi$endpos) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
10520                   POSITION (LINE_BEGIN);
10522                   orig_pos := vi$get_undo_start;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10485                   MOVE_HORIZONTAL (- CURRENT_OFFSET);
10487                   orig_pos := vi$get_undo_start;
************
************
File VI$ROOT:[000000]VI.OUT;635
10657               IF (ERROR = TPU$_ENDOFBUF) AND (state = 2) THEN
10658                   exitnow := 1;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10622               IF (ERROR = TPU$_ENDOFBUF) AND (state := 2) THEN
10623                   exitnow := 1;
************
************
File VI$ROOT:[000000]VI.OUT;635
10687               POSITION (LINE_BEGIN);
10688               nline := vi$abs (vi$cur_line_no - oline);
10689               vi$endpos := MARK (NONE);
10690               POSITION (vi$start_pos);
10691               POSITION (LINE_BEGIN);
10693               IF (MARK (NONE) = vi$endpos) THEN
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10652               MOVE_HORIZONTAL (-CURRENT_OFFSET);
10653               nline := vi$abs (vi$cur_line_no - oline);
10654               vi$endpos := MARK (NONE);
10655               POSITION (vi$start_pos);
10656               MOVE_HORIZONTAL (-CURRENT_OFFSET);
10658               IF (MARK (NONE) = vi$endpos) THEN
************
************
File VI$ROOT:[000000]VI.OUT;635
10710                   POSITION (LINE_BEGIN);
10712                   orig_pos := vi$get_undo_start;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10675                   MOVE_HORIZONTAL (- CURRENT_OFFSET);
10677                   orig_pos := vi$get_undo_start;
************
************
File VI$ROOT:[000000]VI.OUT;635
10760                       POSITION (LINE_BEGIN);
10761                   ENDLOOP;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10725                       MOVE_HORIZONTAL (- CURRENT_OFFSET);
10726                   ENDLOOP;
************
************
File VI$ROOT:[000000]VI.OUT;635
10939           COPY_TEXT (STR (INT (KEY_NAME (SUBSTR (tstring, idx, 1)))));
10941           ! Move to EOB so next COPY_TEXT will insert a new line.
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10904           COPY_TEXT (STR (KEY_NAME (SUBSTR (tstring, idx, 1))));
10906           ! Move to EOB so next COPY_TEXT will insert a new line.
************
************
File VI$ROOT:[000000]VI.OUT;635
10965       COPY_TEXT (STR (INT (ch)));
10966       MOVE_HORIZONTAL (1);
******
File VI$ROOT:[SRC]VI_V4.OUT;2
10930       COPY_TEXT (STR (ch));
10931       MOVE_HORIZONTAL (1);
************
************
File VI$ROOT:[000000]VI.OUT;635
11100           ENDIF;
11101       ENDIF;
11103       ch := KEY_NAME (ch);
11105       ! If a key was read from the keyboard, then push it back.
******
File VI$ROOT:[SRC]VI_V4.OUT;2
11065           ELSE
11066               ch := KEY_NAME (ch);
11067           ENDIF;
11068       ENDIF;
11070       ! If a key was read from the keyboard, then push it back.
************
************
File VI$ROOT:[000000]VI.OUT;635
11810           found_a_buffer;         ! True if buffer found with same exact name
11812       found_a_buffer := 0;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
11775           found_a_buffer,         ! True if buffer found with same exact name
11776           how_many_buffers;       ! Number of buffers listed in possible_names
11778       found_a_buffer := 0;
************
************
File VI$ROOT:[000000]VI.OUT;635
12358           IF (len < 3) THEN
12359               vi$info ("Can't split window");
12360               RETURN(1);
12361           ENDIF;
12362           row := top + (len/2) - 1;
12363       ENDIF;
******
File VI$ROOT:[SRC]VI_V4.OUT;2
12324           ! Check to see if the cursor can not be placed in the middle because
12325           ! the buffer does not have enough lines.
12327           IF ((GET_INFO (CURRENT_BUFFER, "RECORD_COUNT") >= len/2) AND
12328                   (spos <> BEGINNING_OF (CURRENT_BUFFER)) AND
12329                                   (spos <> END_OF (CURRENT_BUFFER))) THEN
12330               vi$pos_in_middle (spos);
12331               UPDATE (CURRENT_WINDOW);
12332               row := GET_INFO (SCREEN, "CURRENT_ROW");
12333           ELSE
12334               ! Not enough lines, so estimate the middle.
12335               row := top+(len/2)-1;
12336           ENDIF;
12338           ! Check limits again.
12340           IF (row - top < 1) OR (top + len - row < 3) THEN
12341               vi$info ("Can't split window");
12342               RETURN(1);
12343           ENDIF;
12344       ENDIF;
************

Number of difference sections found: 125
Number of difference records found: 453

DIFFERENCES /IGNORE=(BLANK_LINES)/MATCH=7/MERGED=1-
    VI$ROOT:[000000]VI.OUT;635-
    VI$ROOT:[SRC]VI_V4.OUT;2



More information about the Comp.sources.bugs mailing list