forked from KolibriOS/kolibrios
CEdit: optimization
git-svn-id: svn://kolibrios.org@9904 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
759e2688de
commit
9ea1f9a4a6
Binary file not shown.
@ -28,7 +28,7 @@ IMPORT
|
|||||||
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
|
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
|
||||||
|
|
||||||
CONST
|
CONST
|
||||||
HEADER = "CEdit (24-feb-2023)";
|
HEADER = "CEdit (26-feb-2023)";
|
||||||
|
|
||||||
ShellFilter = "";
|
ShellFilter = "";
|
||||||
EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json";
|
EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json";
|
||||||
|
@ -35,9 +35,8 @@ TYPE
|
|||||||
map: SET;
|
map: SET;
|
||||||
data: ARRAY boolItemSize OF
|
data: ARRAY boolItemSize OF
|
||||||
RECORD
|
RECORD
|
||||||
line: Lines.tLine;
|
adr1, adr2: INTEGER;
|
||||||
adr: INTEGER;
|
val1, val2, save: BOOLEAN
|
||||||
val, save: BOOLEAN
|
|
||||||
END
|
END
|
||||||
END;
|
END;
|
||||||
|
|
||||||
@ -124,7 +123,8 @@ BEGIN
|
|||||||
ELSIF item IS tBoolItem THEN
|
ELSIF item IS tBoolItem THEN
|
||||||
FOR i := 0 TO boolItemSize - 1 DO
|
FOR i := 0 TO boolItemSize - 1 DO
|
||||||
IF i IN item(tBoolItem).map THEN
|
IF i IN item(tBoolItem).map THEN
|
||||||
SYSTEM.PUT(item(tBoolItem).data[i].adr, item(tBoolItem).data[i].val)
|
SYSTEM.PUT(item(tBoolItem).data[i].adr1, item(tBoolItem).data[i].val1);
|
||||||
|
SYSTEM.PUT(item(tBoolItem).data[i].adr2, item(tBoolItem).data[i].val2)
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
@ -152,6 +152,7 @@ VAR
|
|||||||
boolItem: tBoolItem;
|
boolItem: tBoolItem;
|
||||||
cur: List.tItem;
|
cur: List.tItem;
|
||||||
i: INTEGER;
|
i: INTEGER;
|
||||||
|
line_modified: BOOLEAN;
|
||||||
BEGIN
|
BEGIN
|
||||||
item := CL.Log.first;
|
item := CL.Log.first;
|
||||||
WHILE item # NIL DO
|
WHILE item # NIL DO
|
||||||
@ -167,9 +168,11 @@ BEGIN
|
|||||||
IF cur IS tBoolItem THEN
|
IF cur IS tBoolItem THEN
|
||||||
boolItem := cur(tBoolItem);
|
boolItem := cur(tBoolItem);
|
||||||
FOR i := 0 TO boolItemSize - 1 DO
|
FOR i := 0 TO boolItemSize - 1 DO
|
||||||
IF (i IN boolItem.map) & boolItem.data[i].save &
|
IF (i IN boolItem.map) & boolItem.data[i].save THEN
|
||||||
boolItem.data[i].line.modified THEN
|
SYSTEM.GET(boolItem.data[i].adr1, line_modified);
|
||||||
EXCL(boolItem.map, i)
|
IF line_modified THEN
|
||||||
|
EXCL(boolItem.map, i)
|
||||||
|
END
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
END;
|
END;
|
||||||
@ -244,7 +247,8 @@ BEGIN
|
|||||||
boolItem := cur(tBoolItem);
|
boolItem := cur(tBoolItem);
|
||||||
FOR i := 0 TO boolItemSize - 1 DO
|
FOR i := 0 TO boolItemSize - 1 DO
|
||||||
IF (i IN boolItem.map) & boolItem.data[i].save THEN
|
IF (i IN boolItem.map) & boolItem.data[i].save THEN
|
||||||
SYSTEM.PUT(boolItem.data[i].adr, ~boolItem.data[i].val);
|
SYSTEM.PUT(boolItem.data[i].adr1, ~boolItem.data[i].val1);
|
||||||
|
SYSTEM.PUT(boolItem.data[i].adr2, ~boolItem.data[i].val2);
|
||||||
EXCL(boolItem.map, i)
|
EXCL(boolItem.map, i)
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
@ -258,13 +262,13 @@ BEGIN
|
|||||||
END delCurSaved;
|
END delCurSaved;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE _changeBool (fn2: BOOLEAN; line: Lines.tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
PROCEDURE changeBool (save: BOOLEAN; VAR v1: BOOLEAN; x1: BOOLEAN; VAR v2: BOOLEAN; x2: BOOLEAN);
|
||||||
VAR
|
VAR
|
||||||
item: tBoolItem;
|
item: tBoolItem;
|
||||||
cur: List.tItem;
|
cur: List.tItem;
|
||||||
i: INTEGER;
|
i: INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF fn2 THEN
|
IF save THEN
|
||||||
cur := CL.guard.prev
|
cur := CL.guard.prev
|
||||||
ELSE
|
ELSE
|
||||||
IF ~CL.isLast THEN
|
IF ~CL.isLast THEN
|
||||||
@ -274,7 +278,7 @@ BEGIN
|
|||||||
END;
|
END;
|
||||||
|
|
||||||
WHILE (cur # NIL) & ~(cur IS tGuard) &
|
WHILE (cur # NIL) & ~(cur IS tGuard) &
|
||||||
(~(cur IS tBoolItem) OR (cur(tBoolItem).map = fillMap)) DO
|
( ~(cur IS tBoolItem) (*OR (cur(tBoolItem).map = fillMap)*) ) DO
|
||||||
cur := cur.prev
|
cur := cur.prev
|
||||||
END;
|
END;
|
||||||
IF (cur IS tBoolItem) & (cur(tBoolItem).map # fillMap) THEN
|
IF (cur IS tBoolItem) & (cur(tBoolItem).map # fillMap) THEN
|
||||||
@ -282,7 +286,7 @@ BEGIN
|
|||||||
ELSE
|
ELSE
|
||||||
NEW(item);
|
NEW(item);
|
||||||
item.map := {};
|
item.map := {};
|
||||||
IF fn2 THEN
|
IF save THEN
|
||||||
List.insert(CL.Log, CL.guard.prev, item)
|
List.insert(CL.Log, CL.guard.prev, item)
|
||||||
ELSE
|
ELSE
|
||||||
List.append(CL.Log, item)
|
List.append(CL.Log, item)
|
||||||
@ -292,30 +296,19 @@ BEGIN
|
|||||||
i := 0;
|
i := 0;
|
||||||
WHILE i < boolItemSize DO
|
WHILE i < boolItemSize DO
|
||||||
IF ~(i IN item.map) THEN
|
IF ~(i IN item.map) THEN
|
||||||
item.data[i].line := line;
|
item.data[i].adr1 := SYSTEM.ADR(v1);
|
||||||
item.data[i].adr := SYSTEM.ADR(v);
|
item.data[i].val1 := x1;
|
||||||
item.data[i].val := x;
|
item.data[i].adr2 := SYSTEM.ADR(v2);
|
||||||
item.data[i].save := fn2;
|
item.data[i].val2 := x2;
|
||||||
|
item.data[i].save := save;
|
||||||
INCL(item.map, i);
|
INCL(item.map, i);
|
||||||
i := boolItemSize
|
i := boolItemSize
|
||||||
END;
|
END;
|
||||||
INC(i)
|
INC(i)
|
||||||
END
|
END
|
||||||
END _changeBool;
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE changeBool (line: Lines.tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
|
||||||
BEGIN
|
|
||||||
_changeBool(FALSE, line, v, x)
|
|
||||||
END changeBool;
|
END changeBool;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE changeBool2 (line: Lines.tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
|
||||||
BEGIN
|
|
||||||
_changeBool(TRUE, line, v, x)
|
|
||||||
END changeBool2;
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE changeInt* (VAR v: INTEGER; x: INTEGER);
|
PROCEDURE changeInt* (VAR v: INTEGER; x: INTEGER);
|
||||||
BEGIN
|
BEGIN
|
||||||
changeWord(SYSTEM.ADR(v), SYSTEM.ADR(x))
|
changeWord(SYSTEM.ADR(v), SYSTEM.ADR(x))
|
||||||
@ -421,5 +414,5 @@ END destroy;
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
List.init(changeInt, changePtr);
|
List.init(changeInt, changePtr);
|
||||||
Lines.init(changeInt, changePtr, changeBool, changeBool2, typedPtr, untypedPtr)
|
Lines.init(changeInt, changePtr, changeBool, typedPtr, untypedPtr)
|
||||||
END ChangeLog.
|
END ChangeLog.
|
@ -1,5 +1,5 @@
|
|||||||
(*
|
(*
|
||||||
Copyright 2021, 2022 Anton Krotov
|
Copyright 2021-2023 Anton Krotov
|
||||||
|
|
||||||
This file is part of CEdit.
|
This file is part of CEdit.
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ MODULE Ini;
|
|||||||
|
|
||||||
IMPORT
|
IMPORT
|
||||||
|
|
||||||
SYSTEM, RW, Text, Utils, File, List, Languages, KolibriOS, Lines;
|
SYSTEM, RW, Text, Utils, File, List, Languages, Lines;
|
||||||
|
|
||||||
|
|
||||||
CONST
|
CONST
|
||||||
@ -167,11 +167,11 @@ BEGIN
|
|||||||
autoBrackets := get_int(IniFileName, "settings", "auto_brackets", 0) # 0;
|
autoBrackets := get_int(IniFileName, "settings", "auto_brackets", 0) # 0;
|
||||||
trimSpace := get_int(IniFileName, "settings", "trim_space", 1) # 0;
|
trimSpace := get_int(IniFileName, "settings", "trim_space", 1) # 0;
|
||||||
font := get_int(IniFileName, "settings", "font", 1);
|
font := get_int(IniFileName, "settings", "font", 1);
|
||||||
IF ~((0 <= font) & (font <= 2)) THEN
|
IF (font < 0) OR (font > 2) THEN
|
||||||
font := 1
|
font := 1
|
||||||
END;
|
END;
|
||||||
theme := get_int(IniFileName, "settings", "theme", 0);
|
theme := get_int(IniFileName, "settings", "theme", 0);
|
||||||
IF ~((0 <= theme) & (theme <= sections.count - 1)) THEN
|
IF (theme < 0) OR (theme >= sections.count) THEN
|
||||||
theme := 0
|
theme := 0
|
||||||
END;
|
END;
|
||||||
getStr("settings", "build", buildScript);
|
getStr("settings", "build", buildScript);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
(*
|
(*
|
||||||
Copyright 2021, 2022 Anton Krotov
|
Copyright 2021-2023 Anton Krotov
|
||||||
|
|
||||||
This file is part of CEdit.
|
This file is part of CEdit.
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ TYPE
|
|||||||
END;
|
END;
|
||||||
|
|
||||||
PmovInt = PROCEDURE (VAR v: INTEGER; x: INTEGER);
|
PmovInt = PROCEDURE (VAR v: INTEGER; x: INTEGER);
|
||||||
PmovBool = PROCEDURE (line: tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
PmovBool = PROCEDURE (save: BOOLEAN; VAR v1: BOOLEAN; x1: BOOLEAN; VAR v2: BOOLEAN; x2: BOOLEAN);
|
||||||
PmovPtr = PROCEDURE (VAR v: List.tItem; x: List.tItem);
|
PmovPtr = PROCEDURE (VAR v: List.tItem; x: List.tItem);
|
||||||
|
|
||||||
PTypedPtr = PROCEDURE (p: List.tItem);
|
PTypedPtr = PROCEDURE (p: List.tItem);
|
||||||
@ -57,7 +57,7 @@ TYPE
|
|||||||
VAR
|
VAR
|
||||||
|
|
||||||
_movInt: PmovInt;
|
_movInt: PmovInt;
|
||||||
_movBool, _movBool2: PmovBool;
|
_movBool: PmovBool;
|
||||||
_movPtr: PmovPtr;
|
_movPtr: PmovPtr;
|
||||||
_typedPtr: PTypedPtr;
|
_typedPtr: PTypedPtr;
|
||||||
_untypedPtr: PUntypedPtr;
|
_untypedPtr: PUntypedPtr;
|
||||||
@ -123,18 +123,6 @@ BEGIN
|
|||||||
END movInt;
|
END movInt;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE movBool (line: tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
|
||||||
BEGIN
|
|
||||||
_movBool(line, v, x)
|
|
||||||
END movBool;
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE movBool2 (line: tLine; VAR v: BOOLEAN; x: BOOLEAN);
|
|
||||||
BEGIN
|
|
||||||
_movBool2(line, v, x)
|
|
||||||
END movBool2;
|
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE movPtr (VAR v: List.tItem; x: List.tItem);
|
PROCEDURE movPtr (VAR v: List.tItem; x: List.tItem);
|
||||||
BEGIN
|
BEGIN
|
||||||
_movPtr(v, x)
|
_movPtr(v, x)
|
||||||
@ -206,8 +194,7 @@ BEGIN
|
|||||||
line.modified := FALSE;
|
line.modified := FALSE;
|
||||||
line.saved := FALSE;
|
line.saved := FALSE;
|
||||||
IF ~temp THEN
|
IF ~temp THEN
|
||||||
movBool(line, line.modified, FALSE);
|
_movBool(FALSE, line.modified, FALSE, line.saved, FALSE)
|
||||||
movBool(line, line.saved, FALSE)
|
|
||||||
END;
|
END;
|
||||||
line.cin := 0;
|
line.cin := 0;
|
||||||
line.cout := 0;
|
line.cout := 0;
|
||||||
@ -272,8 +259,7 @@ END tabWidth;
|
|||||||
PROCEDURE save* (line: tLine);
|
PROCEDURE save* (line: tLine);
|
||||||
BEGIN
|
BEGIN
|
||||||
IF ~line.temp THEN
|
IF ~line.temp THEN
|
||||||
movBool2(line, line.saved, TRUE);
|
_movBool(TRUE, line.modified, FALSE, line.saved, TRUE)
|
||||||
movBool2(line, line.modified, FALSE)
|
|
||||||
END;
|
END;
|
||||||
line.modified := FALSE;
|
line.modified := FALSE;
|
||||||
line.saved := TRUE
|
line.saved := TRUE
|
||||||
@ -451,8 +437,7 @@ END fixTabs;
|
|||||||
PROCEDURE modify* (line: tLine);
|
PROCEDURE modify* (line: tLine);
|
||||||
BEGIN
|
BEGIN
|
||||||
IF ~line.temp THEN
|
IF ~line.temp THEN
|
||||||
movBool(line, line.modified, TRUE);
|
_movBool(FALSE, line.modified, TRUE, line.saved, FALSE)
|
||||||
movBool(line, line.saved, FALSE)
|
|
||||||
END;
|
END;
|
||||||
line.modified := TRUE;
|
line.modified := TRUE;
|
||||||
line.saved := FALSE;
|
line.saved := FALSE;
|
||||||
@ -532,12 +517,11 @@ BEGIN
|
|||||||
END convert;
|
END convert;
|
||||||
|
|
||||||
|
|
||||||
PROCEDURE init* (movInt: PmovInt; movPtr: PmovPtr; movBool, movBool2: PmovBool; typedPtr: PTypedPtr; untypedPtr: PUntypedPtr);
|
PROCEDURE init* (movInt: PmovInt; movPtr: PmovPtr; movBool: PmovBool; typedPtr: PTypedPtr; untypedPtr: PUntypedPtr);
|
||||||
BEGIN
|
BEGIN
|
||||||
_movInt := movInt;
|
_movInt := movInt;
|
||||||
_movPtr := movPtr;
|
_movPtr := movPtr;
|
||||||
_movBool := movBool;
|
_movBool := movBool;
|
||||||
_movBool2 := movBool2;
|
|
||||||
_typedPtr := typedPtr;
|
_typedPtr := typedPtr;
|
||||||
_untypedPtr := untypedPtr;
|
_untypedPtr := untypedPtr;
|
||||||
END init;
|
END init;
|
||||||
|
@ -68,7 +68,7 @@ TYPE
|
|||||||
smallChange: INTEGER;
|
smallChange: INTEGER;
|
||||||
modified*, smallMove,
|
modified*, smallMove,
|
||||||
comments, guard, fasm*,
|
comments, guard, fasm*,
|
||||||
search, cs, whole: BOOLEAN;
|
search, cs, whole, wordSel: BOOLEAN;
|
||||||
edition*: tGuard;
|
edition*: tGuard;
|
||||||
curLine: tLine;
|
curLine: tLine;
|
||||||
lang*: INTEGER;
|
lang*: INTEGER;
|
||||||
@ -929,7 +929,8 @@ BEGIN
|
|||||||
text.modified := TRUE;
|
text.modified := TRUE;
|
||||||
text.comments := TRUE;
|
text.comments := TRUE;
|
||||||
text.search := TRUE;
|
text.search := TRUE;
|
||||||
text.guard := TRUE
|
text.guard := TRUE;
|
||||||
|
text.wordSel := TRUE
|
||||||
END modify;
|
END modify;
|
||||||
|
|
||||||
|
|
||||||
@ -1055,7 +1056,8 @@ BEGIN
|
|||||||
setSelect(text);
|
setSelect(text);
|
||||||
text.foundSel := 0;
|
text.foundSel := 0;
|
||||||
ShowCursor;
|
ShowCursor;
|
||||||
text.CurX := -1
|
text.CurX := -1;
|
||||||
|
text.wordSel := TRUE
|
||||||
END SetPos;
|
END SetPos;
|
||||||
|
|
||||||
|
|
||||||
@ -1992,30 +1994,33 @@ VAR
|
|||||||
str: tString;
|
str: tString;
|
||||||
curLine: tLine;
|
curLine: tLine;
|
||||||
BEGIN
|
BEGIN
|
||||||
curLine := text.curLine;
|
IF text.wordSel THEN
|
||||||
IF selected(text) & (text.cursor.Y = text.select.Y) THEN
|
curLine := text.curLine;
|
||||||
getSelect(text, selBeg, selEnd);
|
IF selected(text) & (text.cursor.Y = text.select.Y) THEN
|
||||||
x1 := selBeg.X;
|
getSelect(text, selBeg, selEnd);
|
||||||
x2 := selEnd.X;
|
x1 := selBeg.X;
|
||||||
n := getString(curLine, x1, x2 - x1, str);
|
x2 := selEnd.X;
|
||||||
ELSE
|
n := getString(curLine, x1, x2 - x1, str);
|
||||||
str := ""
|
ELSE
|
||||||
END;
|
str := ""
|
||||||
IF str # "" THEN
|
END;
|
||||||
i := 0;
|
IF str # "" THEN
|
||||||
WHILE (i < n) & isWordChar(str[i]) DO
|
i := 0;
|
||||||
INC(i)
|
WHILE (i < n) & isWordChar(str[i]) DO
|
||||||
END;
|
INC(i)
|
||||||
IF (i # n) OR
|
END;
|
||||||
((x1 > 0) & isWordChar(Lines.getChar(curLine, x1 - 1))) OR
|
IF (i # n) OR
|
||||||
((x2 < curLine.length) & isWordChar(Lines.getChar(curLine, x2))) THEN
|
((x1 > 0) & isWordChar(Lines.getChar(curLine, x1 - 1))) OR
|
||||||
str := ""
|
((x2 < curLine.length) & isWordChar(Lines.getChar(curLine, x2))) THEN
|
||||||
END
|
str := ""
|
||||||
END;
|
END
|
||||||
IF text.searchText # str THEN
|
END;
|
||||||
text.smallMove := FALSE
|
IF text.searchText # str THEN
|
||||||
END;
|
text.smallMove := FALSE
|
||||||
IF search(text, str, Lang.isCS(text.lang), TRUE) THEN END
|
END;
|
||||||
|
IF search(text, str, Lang.isCS(text.lang), TRUE) THEN END;
|
||||||
|
text.wordSel := FALSE
|
||||||
|
END
|
||||||
END wordSel;
|
END wordSel;
|
||||||
|
|
||||||
|
|
||||||
@ -2495,6 +2500,7 @@ BEGIN
|
|||||||
text.cs := FALSE;
|
text.cs := FALSE;
|
||||||
text.whole := FALSE;
|
text.whole := FALSE;
|
||||||
text.guard := TRUE;
|
text.guard := TRUE;
|
||||||
|
text.wordSel := FALSE;
|
||||||
text.edition := NIL;
|
text.edition := NIL;
|
||||||
text.foundList := List.create(NIL);
|
text.foundList := List.create(NIL);
|
||||||
text.searchText := "";
|
text.searchText := "";
|
||||||
|
Loading…
Reference in New Issue
Block a user