Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9173 → Rev 9174

/programs/develop/cedit/SRC/Lines.ob07
24,7 → 24,9
 
CONST
WCHAR_SIZE = 2;
SPACE = 20X;
SPACE* = 20X;
TAB* = 9X;
TAB1* = 0FFFEX;
 
TYPE
 
51,7 → 53,8
(* _typedPtr: PTypedPtr;
_untypedPtr: PUntypedPtr;*)
 
pMaxLength: INTEGER;
pMaxLength, tab*: INTEGER;
tabs*: BOOLEAN;
 
 
PROCEDURE movInt (VAR v: INTEGER; x: INTEGER);
166,17 → 169,30
END destroy;
 
 
PROCEDURE modify* (line: tLine);
PROCEDURE getChar* (line: tLine; i: INTEGER): WCHAR;
VAR
c: WCHAR;
BEGIN
IF ~line.temp THEN
movBool(line.modified, TRUE);
movBool(line.saved, FALSE)
END;
line.modified := TRUE;
line.saved := FALSE
END modify;
SYSTEM.GET(line.ptr + i*WCHAR_SIZE, c)
RETURN c
END getChar;
 
 
PROCEDURE tabWidth (line: tLine; pos: INTEGER): INTEGER;
VAR
n: INTEGER;
BEGIN
n := pos;
IF getChar(line, pos) = TAB THEN
INC(pos);
WHILE getChar(line, pos) = TAB1 DO
INC(pos)
END
END
RETURN pos - n
END tabWidth;
 
 
PROCEDURE save* (line: tLine);
BEGIN
IF ~line.temp THEN
188,13 → 204,9
END save;
 
 
PROCEDURE getChar* (line: tLine; i: INTEGER): WCHAR;
VAR
c: WCHAR;
BEGIN
SYSTEM.GET(line.ptr + i*WCHAR_SIZE, c)
RETURN c
END getChar;
PROCEDURE isSpace* (c: WCHAR): BOOLEAN;
RETURN (c = SPACE) OR (c = TAB) OR (c = TAB1)
END isSpace;
 
 
PROCEDURE trimLength* (line: tLine): INTEGER;
202,7 → 214,7
i: INTEGER;
BEGIN
i := line.length - 1;
WHILE (i >= 0) & (getChar(line, i) = SPACE) DO
WHILE (i >= 0) & isSpace(getChar(line, i)) DO
DEC(i)
END
RETURN i + 1
345,6 → 357,44
END delCharN;
 
 
PROCEDURE fixTabs (line: tLine);
VAR
i, n, k: INTEGER;
BEGIN
i := 0;
WHILE i < line.length DO
n := tabWidth(line, i);
IF n # 0 THEN
k := tab - i MOD tab;
IF n > k THEN
delCharN(line, i + 1, n - k)
ELSIF n < k THEN
DEC(k, n);
insert3(line, i + 1, k);
WHILE k > 0 DO
setChar(line, i + 1, TAB1);
INC(i);
DEC(k)
END
END
END;
INC(i)
END
END fixTabs;
 
 
PROCEDURE modify* (line: tLine);
BEGIN
IF ~line.temp THEN
movBool(line.modified, TRUE);
movBool(line.saved, FALSE)
END;
line.modified := TRUE;
line.saved := FALSE;
fixTabs(line)
END modify;
 
 
PROCEDURE wrap* (line, nextLine: tLine; pos: INTEGER);
VAR
ptr1, ptr2: INTEGER;
439,6 → 489,16
END setMaxLength;
 
 
PROCEDURE setTabs* (_tab: INTEGER);
BEGIN
IF _tab = 0 THEN
_tab := 4
END;
tabs := _tab > 0;
tab := ABS(_tab)
END setTabs;
 
 
BEGIN
pMaxLength := 0
END Lines.