perm filename EEDIT2.2[EAL,HE]1 blob
sn#676501 filedate 1982-09-27 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 {$NOMAIN Editor: part of editStmnt }
C00005 00003 procedure eEdit2 (s: statementp l,indent,e0,elen: integer
C00009 ENDMK
C⊗;
{$NOMAIN Editor: part of editStmnt }
%include eedit.hdr;
{ Externally defined routines from elsewhere: }
(* From PAUX1 *)
function checkArg(n: nodep; d: datatypes): nodep; external;
(* From PAUX2 *)
procedure relExpr(n: nodep); external;
function evalOrder(what,last: nodep; pcons: boolean): nodep; external;
(* From EPUT *)
function getExprLength(n: nodep): integer; external;
(* From EEXPED *)
function exprEditor(line,lstart,llength,estart: integer;
var elength: integer; off: integer): ascii; external;
(* From ETOKEN *)
procedure eDimCheck(n,d: nodep); external;
(* From EPUTST *)
procedure putstmnt(s: statementp; indent, plevel: integer); external;
(* From EPAR3A *)
procedure eUnfixParse(st: statementp); external;
procedure eEnableParse(st: statementp); external;
(* From EPAR3B *)
function ePlistParse(st: statementp;
e0,indent,l,ocur: integer): ascii; external;
(* From EPAR3E *)
procedure eCmonParse(st: statementp; getStart: boolean); external;
(* From EEDITS *)
procedure echarDo (echar: ascii; var again: boolean); external;
function editExpr(n: nodep; l,e0,elen: integer;
echar: ascii; var again: boolean): nodep; external;
(* From PP *)
procedure ppLine; external;
procedure ppOutNow; external;
procedure ppChar(ch: ascii); external;
procedure pp5(ch: c5str; length: integer); external;
procedure pp10(ch: cstring; length: integer); external;
procedure pp10L(ch: cstring; length: integer); external;
procedure pp20(ch: c20str; length: integer); external;
procedure pp20L(ch: c20str; length: integer); external;
procedure eEdit2 (s: statementp; l,indent,e0,elen: integer;
var echar: ascii; var again: boolean; var ocur: integer); external;
procedure eEdit2;
var i: integer;
begin
with s↑ do
case stype of
printtype,
aborttype,
prompttype: begin
if (fieldNum = 1) and (stype = prompttype) then e0 := indent + 7
else e0 := indent + 6;
echar := ePlistParse(s,e0,indent,l,ocur);
echardo(echar,again);
setCursor := true; (* let putStmnt figure right fieldnum *)
curLine := 0;
putStmnt(dprog,0,99); (* redraw statement *)
setCursor := false;
ocur := 0;
end;
pausetype: begin
e0 := indent + 6;
ptime := checkArg(editExpr(ptime,l,e0,elen,echar,again),svaltype);
eDimCheck(ptime,timedim↑.dim); (* right dimension? *)
exprs := evalOrder(ptime,nil,true);
end;
signaltype,
waittype: begin
if stype = signaltype then e0 := indent + 7
else e0 := indent + 5;
event := checkArg(editExpr(event,l,e0,elen,echar,again),eventtype);
exprs := nil;
with event↑ do (* make sure it's a variable *)
if not (((ntype = leafnode) and (ltype = varitype)) or
((ntype = exprnode) and (op = arefop))) then
begin (* no good *)
pp20L(' Need an event varia',20); pp10('ble here ',8); ppLine;
relExpr(event);
event := nil;
end
else
if ntype <> leafnode then exprs := evalOrder(arg2,nil,true);
end;
enabletype,
disabletype: begin
if stype = enabletype then e0 := indent + 7
else e0 := indent + 8;
if cmonlab = nil then elen := 0
else elen := cmonlab↑.name↑.length;
with lines[l]↑ do
echar := exprEditor(l-firstDline+1,start,length,e0,elen,0);
eEnableParse(s);
echardo(echar,again);
end;
cmtype: begin
e0 := indent;
with lines[l]↑ do
begin (* go edit it *)
i := length - 1;
while listing[start+i] <> 'd' do i := i - 1;
elen := i - e0;
echar := exprEditor(l-firstDline+1,start,length,e0,elen,0);
end;
eCmonParse(s,true);
echardo(echar,again);
end;
unfixtype: begin
e0 := indent + 6;
elen := getExprLength(frame1) + getExprLength(frame2) + 6;
relExpr(frame1);
relExpr(frame2);
with lines[l]↑ do
echar := exprEditor(l-firstDline+1,start,length,e0,elen,0);
eUnfixParse(s);
echardo(echar,again);
end;
otherwise begin pp20L('Oh no! Bad ovly call',20); pp10(': Edits 2 ',9);
ppOutNow; end;
end;
end;