72,7 → 72,7 |
search, cs, whole: BOOLEAN; |
curLine: tLine; |
lang*: INTEGER; |
enc*, eol*: INTEGER; |
enc, eol: INTEGER; |
table: Search.IdxTable; |
foundList: List.tList; |
idxData: Search.tBuffer; |
883,6 → 883,36 |
END modify; |
|
|
PROCEDURE setEnc* (text: tText; enc: INTEGER); |
BEGIN |
IF text.enc # enc THEN |
ChangeLog.changeInt(text.enc, enc); |
text.enc := enc; |
modify(text) |
END |
END setEnc; |
|
|
PROCEDURE setEol* (text: tText; eol: INTEGER); |
BEGIN |
IF text.eol # eol THEN |
ChangeLog.changeInt(text.eol, eol); |
text.eol := eol; |
modify(text) |
END |
END setEol; |
|
|
PROCEDURE getEnc* (text: tText): INTEGER; |
RETURN text.enc |
END getEnc; |
|
|
PROCEDURE getEol* (text: tText): INTEGER; |
RETURN text.eol |
END getEol; |
|
|
PROCEDURE DelLine (text: tText; line: tLine); |
BEGIN |
List._delete(text, line); |
1801,9 → 1831,32 |
END wordSel; |
|
|
PROCEDURE getWordPos (line: tLine; pos: INTEGER): INTEGER; |
VAR |
c: WCHAR; |
|
BEGIN |
c := getChar(line, pos); |
IF isWordChar(c) THEN |
WHILE (pos < line.length) & isWordChar(getChar(line, pos)) DO |
INC(pos) |
END |
ELSIF Lines.isSpace(c) THEN |
WHILE (pos < line.length) & Lines.isSpace(getChar(line, pos)) DO |
INC(pos) |
END |
ELSE |
WHILE (pos < line.length) & ~Lines.isSpace(getChar(line, pos)) & ~isWordChar(getChar(line, pos)) DO |
INC(pos) |
END |
END |
RETURN pos |
END getWordPos; |
|
|
PROCEDURE key* (text: tText; code: INTEGER; shift, ctrl: BOOLEAN); |
VAR |
n: INTEGER; |
n, wPos: INTEGER; |
BEGIN |
IF shift THEN |
setSelect(text) |
1849,8 → 1902,17 |
IF (text.cursor.X = 0) & (text.curLine.prev # NIL) THEN |
SetPos(text, text.curLine.prev(tLine).length, text.cursor.Y - 1) |
ELSE |
IF ctrl THEN |
wPos := 0; |
REPEAT |
n := wPos; |
wPos := getWordPos(text.curLine, wPos) |
UNTIL wPos >= text.cursor.X; |
move(text, n - text.cursor.X) |
ELSE |
move(text, -1) |
END |
END |
|38: |
IF ctrl THEN |
upLine(text) |
1861,8 → 1923,12 |
IF (text.cursor.X = text.curLine.length) & (text.curLine.next # NIL) THEN |
SetPos(text, 0, text.cursor.Y + 1) |
ELSE |
IF ctrl THEN |
move(text, getWordPos(text.curLine, text.cursor.X) - text.cursor.X) |
ELSE |
move(text, 1) |
END |
END |
|40: |
IF ctrl THEN |
downLine(text) |
2292,6 → 2358,8 |
file := RW.load(name, enc, eol); |
IF file # NIL THEN |
text := create(name); |
ChangeLog.changeInt(text.enc, enc); |
ChangeLog.changeInt(text.eol, eol); |
text.enc := enc; |
text.eol := eol; |
line := Lines.create(FALSE); |
2451,6 → 2519,8 |
text := create(""); |
List._append(text, Lines.create(FALSE)); |
text.curLine := text.first(tLine); |
ChangeLog.changeInt(text.enc, E.CP866); |
ChangeLog.changeInt(text.eol, RW.EOL_CRLF); |
text.enc := E.CP866; |
text.eol := RW.EOL_CRLF; |
SetPos(text, 0, 0); |