Trailing-Edge
-
PDP-10 Archives
-
CFS_TSU04_19910205_1of1
-
update/t20src/chmdellin.bli
There are 11 other files named chmdellin.bli in the archive. Click here to see a list.
%TITLE 'CHMDELLIN - delete lines'
MODULE CHMDELLIN ( ! Delete lines
IDENT = '3-001' ! File: CHMDELLIN.BLI Edit: GB3001
) =
BEGIN
!COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1981, 1988. ALL RIGHTS RESERVED.
!
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ONLY
!IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION OF
!THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THEREOF MAY
!NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE
!TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
!
!THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
!SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
!
!DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
!SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
!
!
!++
! FACILITY: EDT -- The DEC Standard Editor
!
! ABSTRACT:
!
! This module deletes lines of text (change mode).
!
! ENVIRONMENT: Runs at any access mode - AST reentrant
!
! AUTHOR: Bob Kushlis, CREATION DATE: Unknown
!
! MODIFIED BY:
!
! 1-001 - Original. DJS 04-Feb-1981. This routine was created by
! extracting the routine DELETE_LINES from module CHANGE.BLI.
! 1-002 - Regularize headers. JBS 25-Feb-1981
! 1-003 - Fix module name. JBS 03-Mar-1981
! 1-004 - Use the ASSERT macro. JBS 01-Jun-1981
! 1-005 - EDT$$SEL_RNGPOS has 3 values. JBS 02-Jun-1981
! 1-006 - Put in a check for control C so the 'working' message will flash
! during a long CUT command. JBS 13-Jan-1982
! 1-007 - New screen update logic. JBS 13-Sep-1982
! 1-008 - Remove the unused reference to EDT$$MRK_LNCHG. JBS 27-Dec-1982
! 1-009 - Add a parameter to EDT$$COMB_LN. JBS 28-Dec-1982
!
! 3-001 - Add updates from V3 sources. GB 26-Apr-1983
!--
%SBTTL 'Declarations'
!
! TABLE OF CONTENTS:
!
REQUIRE 'EDTSRC:TRAROUNAM';
FORWARD ROUTINE
EDT$$DEL_TXTLN : NOVALUE; ! Delete whole lines of text
!
! INCLUDE FILES:
!
REQUIRE 'EDTSRC:EDTREQ';
!
! MACROS:
!
! NONE
!
! EQUATED SYMBOLS:
!
! NONE
!
! OWN STORAGE:
!
! NONE
!
! EXTERNAL REFERENCES:
!
! In the routine
%SBTTL 'EDT$$DEL_TXTLN - delete lines'
GLOBAL ROUTINE EDT$$DEL_TXTLN ( ! Delete lines
NUM_LINES, ! Number of lines to delete
END_POS ! Place to stop
) : NOVALUE =
!++
! FUNCTIONAL DESCRIPTION:
!
! This routine deletes text on NUM_LINES lines starting on the
! current line at LN_PTR and going to the END_POS
! on the last line.
!
! FORMAL PARAMETERS:
!
! NUM_LINES Number of lines to delete
!
! END_POS Place to stop on last line
!
! IMPLICIT INPUTS:
!
! LN_PTR
! SEL_LN
! LN_BUF
! LN_END
! LN_LEN
! LNO0
!
! IMPLICIT OUTPUTS:
!
! NONE
!
! ROUTINE VALUE:
!
! NONE
!
! SIDE EFFECTS:
!
! NONE
!
!--
BEGIN
EXTERNAL ROUTINE
EDT$$DEL_CHS : NOVALUE, ! Delete part of the current line
EDT$$COMB_LN : NOVALUE, ! Combine the current line with the one immediately above it
EDT$$CS_DWN, ! Move down a line
EDT$$GET_TXTLN, ! Get current line in line buffer
EDT$$SAV_LN : NOVALUE, ! Save a line in the auxiliary buffer
EDT$$SC_DELLN, ! Delete lines from screen
EDT$$DEL_CURLN, ! Delete a line from buffer
EDT$$CHK_CC; ! Check for a control C
EXTERNAL
LN_BUF, ! Current line buffer
LN_END, ! End of current line pointer
LN_LEN, ! Length of current line
LN_PTR; ! Current character pointer
LOCAL
LC;
!+
! Handle the first line.
!-
LC = .LN_END;
IF (.NUM_LINES EQL 1) THEN LC = .END_POS;
EDT$$DEL_CHS (.LN_PTR, .LC);
!+
! Now, if there are more, loop though the middle ones.
!-
IF (.NUM_LINES GTR 1)
THEN
BEGIN
EDT$$CS_DWN ();
INCR I FROM 3 TO .NUM_LINES DO
BEGIN
!+
! We check for a control C here, not because we wish to terminate
! the process if a control C is typed but only to make sure the
! 'working' message flashes during a long CUT command.
!-
EDT$$CHK_CC ();
!+
! Delete the entire line.
!-
EDT$$SAV_LN (CH$PTR (LN_BUF, 0, BYTE_SIZE), .LN_LEN);
EDT$$DEL_CURLN ();
EDT$$GET_TXTLN ();
END;
!+
! Handle the last line.
!-
EDT$$DEL_CHS (.LN_PTR, .END_POS);
!+
! And combine the various fragments.
!-
EDT$$COMB_LN (1);
END;
END;
END
ELUDOM