!+
!       EVE_VMS_LINE_EDITING.TPU
!-
!
! This is a set of definitions for defining and removing VMS line editing
! keys for EVEPlus.
procedure eve_set_vms_line_editing	! Define VMS line editing keys

    vle$x_keypadset := 1;
    set(informational,off);
    eveplus_key("eve_change_mode",ctrl_a_key,
                "change_mode (Toggle insert/overstrike)","vle_ctrl_a_key");
    eveplus_key("vle_move_left",ctrl_d_key,"move_left","vle_ctrl_d_key");
    eveplus_key("vle_move_right",ctrl_f_key,"move_right","vle_ctrl_f_key");
    if expand_name('eve_set_edt_keypad',procedures) = eve$x_null
    then
        eveplus_key("eve_start_of_line",ctrl_h_key,
                    "EDT BACKSPACE (start_of_line)","vle_ctrl_h_key");
        eveplus_key("eve_start_of_line",bs_key,"EDT BACKSPACE (start_of_line)",
                    "vle_bs_key");
        eveplus_key("eve_start_of_line",f12,"EDT BACKSPACE (start_of_line)",
                    "vle_f12_key");

!
! NOTE: The ctrl_x_key definitions will never get executed, they're just
!	here to define a comment for dynamic help.  The ctrl_x is NEVER
!	passed to TPU, EVE, or EVEPlus.  Rather, the VMS Terminal Driver
!	will flush the type-ahead buffer, and pass a CTRL_U to the process
!	upon receipt of a CTRL_X.
!

        eveplus_key("eve_erase_start_of_line",ctrl_x_key,
                    "EDT CTRL_U (delete_to_beginning_of_line)","vle_ctrl_x_key");
        eveplus_key("eve_erase_start_of_line",ctrl_u_key,
                    "EDT CTRL_U (delete_to_beginning_of_line)","vle_ctrl_u_key");
        eveplus_key("eve_erase_previous_word",ctrl_j_key,
                    "EDT CTRL_J (erase prev word)","vle_ctrl_j_key");
        eveplus_key("eve_erase_previous_word",f13,
                    "EDT LINEFEED (erase_previous_word)","vle_f13_key");
    else
        eveplus_key("eee_backspace",ctrl_h_key,"EDT BACKSPACE (start_of_line)",
                    "vle_ctrl_h_key");
        eveplus_key("eee_backspace",bs_key,"EDT BACKSPACE (start_of_line)",
                    "vle_bs_key");
        eveplus_key("eee_backspace",f12,"EDT BACKSPACE (start_of_line)",
                    "vle_f12_key");
        eveplus_key("eee_delete_beg_line",ctrl_x_key,
                    "EDT CTRL_U (delete_to_beginning_of_line)","vle_ctrl_x_key");
        eveplus_key("eee_delete_beg_line",ctrl_u_key,
                    "EDT CTRL_U (delete_to_beginning_of_line)","vle_ctrl_u_key");
        eveplus_key("eee_del_beg_word",ctrl_j_key,"EDT ctrl_j (erase_previous_word)",
                    "vle_ctrl_j_key");
        eveplus_key("eee_del_beg_word",f13,"EDT LINEFEED (erase_previous_word)",
                    "vle_f13_key");
    endif;
    set(informational,on);
    message(". . . Done!");

endprocedure

procedure eve_set_novms_line_editing	! Remove VMS line editing keys

    if vle$x_keypadset = 1 then
	vle$x_keypadset := 0;
	message("Removing VMS Line Editing Keys . . .");
	set(informational,off);
	eveplus_restore_key("vle_ctrl_a_key");
	eveplus_restore_key("vle_ctrl_d_key");
	eveplus_restore_key("vle_ctrl_f_key");
	eveplus_restore_key("vle_ctrl_h_key");
	eveplus_restore_key("vle_bs_key");
	eveplus_restore_key("vle_f12_key");
	eveplus_restore_key("vle_ctrl_x_key");
        eveplus_restore_key("vle_ctrl_u_key");
        eveplus_restore_key("vle_ctrl_j_key");
        eveplus_restore_key("vle_f13_key");
	set(informational,on);
	message(". . . Done!");
    else
	message("Can't remove key definitions - no older definitions available.");
    endif;

endprocedure

procedure vle_move_left			! Move left (ctrl_d)

    if (current_window = eve$command_window) and
       (current_column <= (eve$x_command_prompt_length + 1))
    then
        return;
    else
        eve_move_left;
    endif;

endprocedure

procedure vle_move_right		! Move right (ctrl_f)

    if (current_character = eve$x_null) or
       (mark(none) = end_of(current_buffer))
    then
        return;
    else
        eve_move_right;
    endif;

endprocedure
!	Note:
!
!	If you wish to have the VMS Line Editing keys enabled as the default,
!	uncomment the procedure call below.

!    eve_set_vms_line_editing;  ! Define VMS line editing keys for Eve/Evg

