Rev 9073 | Rev 9448 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9073 | Rev 9174 | ||
---|---|---|---|
Line 22... | Line 22... | ||
22 | IMPORT |
22 | IMPORT |
23 | List, SYSTEM, API, Utils; |
23 | List, SYSTEM, API, Utils; |
Line 24... | Line 24... | ||
24 | 24 | ||
25 | CONST |
25 | CONST |
26 | WCHAR_SIZE = 2; |
26 | WCHAR_SIZE = 2; |
- | 27 | SPACE* = 20X; |
|
- | 28 | TAB* = 9X; |
|
Line 27... | Line 29... | ||
27 | SPACE = 20X; |
29 | TAB1* = 0FFFEX; |
Line 28... | Line 30... | ||
28 | 30 | ||
29 | TYPE |
31 | TYPE |
Line 49... | Line 51... | ||
49 | _movBool, _movBool2: PmovBool; |
51 | _movBool, _movBool2: PmovBool; |
50 | _movPtr: PmovPtr; |
52 | _movPtr: PmovPtr; |
51 | (* _typedPtr: PTypedPtr; |
53 | (* _typedPtr: PTypedPtr; |
52 | _untypedPtr: PUntypedPtr;*) |
54 | _untypedPtr: PUntypedPtr;*) |
Line 53... | Line 55... | ||
53 | 55 | ||
- | 56 | pMaxLength, tab*: INTEGER; |
|
Line 54... | Line 57... | ||
54 | pMaxLength: INTEGER; |
57 | tabs*: BOOLEAN; |
55 | 58 | ||
56 | 59 | ||
Line 164... | Line 167... | ||
164 | line := NIL |
167 | line := NIL |
165 | END |
168 | END |
166 | END destroy; |
169 | END destroy; |
Line 167... | Line 170... | ||
167 | 170 | ||
- | 171 | ||
- | 172 | PROCEDURE getChar* (line: tLine; i: INTEGER): WCHAR; |
|
168 | 173 | VAR |
|
- | 174 | c: WCHAR; |
|
- | 175 | BEGIN |
|
- | 176 | SYSTEM.GET(line.ptr + i*WCHAR_SIZE, c) |
|
- | 177 | RETURN c |
|
- | 178 | END getChar; |
|
- | 179 | ||
- | 180 | ||
- | 181 | PROCEDURE tabWidth (line: tLine; pos: INTEGER): INTEGER; |
|
- | 182 | VAR |
|
- | 183 | n: INTEGER; |
|
169 | PROCEDURE modify* (line: tLine); |
184 | BEGIN |
- | 185 | n := pos; |
|
170 | BEGIN |
186 | IF getChar(line, pos) = TAB THEN |
171 | IF ~line.temp THEN |
187 | INC(pos); |
172 | movBool(line.modified, TRUE); |
188 | WHILE getChar(line, pos) = TAB1 DO |
173 | movBool(line.saved, FALSE) |
189 | INC(pos) |
174 | END; |
190 | END |
175 | line.modified := TRUE; |
191 | END |
Line 176... | Line 192... | ||
176 | line.saved := FALSE |
192 | RETURN pos - n |
177 | END modify; |
193 | END tabWidth; |
178 | 194 | ||
Line 186... | Line 202... | ||
186 | line.modified := FALSE; |
202 | line.modified := FALSE; |
187 | line.saved := TRUE |
203 | line.saved := TRUE |
188 | END save; |
204 | END save; |
Line 189... | Line 205... | ||
189 | 205 | ||
190 | - | ||
191 | PROCEDURE getChar* (line: tLine; i: INTEGER): WCHAR; |
- | |
192 | VAR |
- | |
193 | c: WCHAR; |
206 | |
194 | BEGIN |
- | |
195 | SYSTEM.GET(line.ptr + i*WCHAR_SIZE, c) |
207 | PROCEDURE isSpace* (c: WCHAR): BOOLEAN; |
Line 196... | Line 208... | ||
196 | RETURN c |
208 | RETURN (c = SPACE) OR (c = TAB) OR (c = TAB1) |
197 | END getChar; |
209 | END isSpace; |
198 | 210 | ||
199 | 211 | ||
200 | PROCEDURE trimLength* (line: tLine): INTEGER; |
212 | PROCEDURE trimLength* (line: tLine): INTEGER; |
201 | VAR |
213 | VAR |
202 | i: INTEGER; |
214 | i: INTEGER; |
203 | BEGIN |
215 | BEGIN |
204 | i := line.length - 1; |
216 | i := line.length - 1; |
205 | WHILE (i >= 0) & (getChar(line, i) = SPACE) DO |
217 | WHILE (i >= 0) & isSpace(getChar(line, i)) DO |
Line 343... | Line 355... | ||
343 | free(line, ptr) |
355 | free(line, ptr) |
344 | END |
356 | END |
345 | END delCharN; |
357 | END delCharN; |
Line -... | Line 358... | ||
- | 358 | ||
- | 359 | ||
- | 360 | PROCEDURE fixTabs (line: tLine); |
|
- | 361 | VAR |
|
- | 362 | i, n, k: INTEGER; |
|
- | 363 | BEGIN |
|
- | 364 | i := 0; |
|
- | 365 | WHILE i < line.length DO |
|
- | 366 | n := tabWidth(line, i); |
|
- | 367 | IF n # 0 THEN |
|
- | 368 | k := tab - i MOD tab; |
|
- | 369 | IF n > k THEN |
|
- | 370 | delCharN(line, i + 1, n - k) |
|
- | 371 | ELSIF n < k THEN |
|
- | 372 | DEC(k, n); |
|
- | 373 | insert3(line, i + 1, k); |
|
- | 374 | WHILE k > 0 DO |
|
- | 375 | setChar(line, i + 1, TAB1); |
|
- | 376 | INC(i); |
|
- | 377 | DEC(k) |
|
- | 378 | END |
|
- | 379 | END |
|
- | 380 | END; |
|
- | 381 | INC(i) |
|
- | 382 | END |
|
- | 383 | END fixTabs; |
|
- | 384 | ||
- | 385 | ||
- | 386 | PROCEDURE modify* (line: tLine); |
|
- | 387 | BEGIN |
|
- | 388 | IF ~line.temp THEN |
|
- | 389 | movBool(line.modified, TRUE); |
|
- | 390 | movBool(line.saved, FALSE) |
|
- | 391 | END; |
|
- | 392 | line.modified := TRUE; |
|
- | 393 | line.saved := FALSE; |
|
- | 394 | fixTabs(line) |
|
- | 395 | END modify; |
|
346 | 396 | ||
347 | 397 | ||
348 | PROCEDURE wrap* (line, nextLine: tLine; pos: INTEGER); |
398 | PROCEDURE wrap* (line, nextLine: tLine; pos: INTEGER); |
349 | VAR |
399 | VAR |
350 | ptr1, ptr2: INTEGER; |
400 | ptr1, ptr2: INTEGER; |
Line 437... | Line 487... | ||
437 | BEGIN |
487 | BEGIN |
438 | pMaxLength := SYSTEM.ADR(maxLength) |
488 | pMaxLength := SYSTEM.ADR(maxLength) |
439 | END setMaxLength; |
489 | END setMaxLength; |
Line -... | Line 490... | ||
- | 490 | ||
- | 491 | ||
- | 492 | PROCEDURE setTabs* (_tab: INTEGER); |
|
- | 493 | BEGIN |
|
- | 494 | IF _tab = 0 THEN |
|
- | 495 | _tab := 4 |
|
- | 496 | END; |
|
- | 497 | tabs := _tab > 0; |
|
- | 498 | tab := ABS(_tab) |
|
- | 499 | END setTabs; |
|
440 | 500 | ||
441 | 501 | ||
442 | BEGIN |
502 | BEGIN |
443 | pMaxLength := 0 |
503 | pMaxLength := 0 |