From a218cacd34863f3db497c047b9be948866e9e11a Mon Sep 17 00:00:00 2001 From: Anton Krotov Date: Sun, 2 Jan 2022 18:57:13 +0000 Subject: [PATCH] CEdit: null character support; reduced memory usage when replacing text and moving lines git-svn-id: svn://kolibrios.org@9560 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/cedit/CEDIT | Bin 31456 -> 31480 bytes programs/develop/cedit/SRC/CEdit.ob07 | 7 +- programs/develop/cedit/SRC/Clipboard.ob07 | 12 +- programs/develop/cedit/SRC/Graph.ob07 | 5 +- programs/develop/cedit/SRC/Lines.ob07 | 5 +- programs/develop/cedit/SRC/List.ob07 | 60 +++------- programs/develop/cedit/SRC/RW.ob07 | 15 ++- programs/develop/cedit/SRC/Text.ob07 | 137 ++++++++++------------ 8 files changed, 113 insertions(+), 128 deletions(-) diff --git a/programs/develop/cedit/CEDIT b/programs/develop/cedit/CEDIT index 32943ab54ca622c99c5223e5d973749678e9db06..2f1b4869e05eed191f0aaabdfc53ec0adbe0003b 100644 GIT binary patch literal 31480 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 literal 31456 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 z z<1{)ltB9`M`$2$MUMW*|FyWA_hS@)&qZcbSo#$rE><`!ylY=;Y({&mzE*sNr;qczP z5@rK$;YHGITr*E#l7{avt2K^+4Sfu+%`XIO*=AH3se!7_eWi@hWKI!Q5n!sk=)(ko zoY=9K`+e)*Qm=NM8sx*Md9(TOot?}2>0(>Fn%*$_`I!92P68u1F|kjoBt{-Y`(9Wh zZ;yOt0W;A+*W_W^C$7pH;1fbBry{vni`(!vYcxWM2$65-J6Ca#b=+fa7@M91u1vEB z#b$j6d_cgHIt(u77)SraNP#uv9aS%Ug}2@QH(ho$!BUf z&PG!XF7Gf+-T%2U7u#w9wM%61savIYOoAtq`BaK(<4oJsf(nKFokZv2a)vDfcb+84 z|F8v9`?)o3Isl0?qqacRg8`J8c;fddQFZvhyJH{c6tsvmj|0rT2<*L&fs zrHd9^K)234hn|MdlJ-bGJyoO1|K#rZOMF(RLWHZ+?sPU3giY=g9N@FuOaS=_(Uo;Ny*OR+8;pfsjGD(5;2E`GwgW-0^&;!B9mrK#EE`xGYjyRfWLAGziv2b6%Q+( zM_L1p99SJs8H|*8szAk-#V^&J$7+NRe5ZxB`?~WP!{M^8q
    iCJa=N^IB%sD~w@ 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 L^)dhq3;+NJX1ykh diff --git a/programs/develop/cedit/SRC/CEdit.ob07 b/programs/develop/cedit/SRC/CEdit.ob07 index 8d04c1d4f9..9df65b598e 100644 --- a/programs/develop/cedit/SRC/CEdit.ob07 +++ b/programs/develop/cedit/SRC/CEdit.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -28,7 +28,7 @@ IMPORT RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar; CONST - HEADER = "CEdit (30-dec-2021)"; + HEADER = "CEdit (02-jan-2022)"; ShellFilter = ""; EditFilter = "SH|INC|TXT|ASM|OB07|C|CPP|H|PAS|PP|LUA|INI|JSON"; @@ -1793,16 +1793,19 @@ BEGIN |btnFindNext: IF searchText # "" THEN notFound := ~T.findNext(text, BKW.value); + SetFocus(FindEdit, FALSE); repaint END |btnReplace: T.replace(text, replaceText, LENGTH(searchText)); + SetFocus(FindEdit, FALSE); repaint |btnReplaceAll: notFound := ~T.search(text, searchText, cs, whole); IF ~notFound THEN replaced := T.replaceAll(text, replaceText, LENGTH(searchText)); END; + SetFocus(FindEdit, FALSE); repaint |btnGoto: goto; diff --git a/programs/develop/cedit/SRC/Clipboard.ob07 b/programs/develop/cedit/SRC/Clipboard.ob07 index 8fefa39684..fa9e5d4788 100644 --- a/programs/develop/cedit/SRC/Clipboard.ob07 +++ b/programs/develop/cedit/SRC/Clipboard.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -24,7 +24,6 @@ IMPORT SYSTEM, KOSAPI, E := Encodings, Lines, K := KolibriOS; CONST TTEXT = 0; lenEOL* = 2; - TAB = 9X; TYPE tBuffer* = POINTER TO RECORD @@ -60,11 +59,14 @@ BEGIN ptr := buffer.dataPtr; WHILE cnt > 0 DO SYSTEM.GET(ptr, wch); - IF wch # Lines.TAB1 THEN - SYSTEM.PUT(pchar, CHR(E.UNI[ORD(wch), E.CP866] MOD 256)); + IF wch = Lines.TAB1 THEN + DEC(size) + ELSIF wch = Lines.NUL THEN + SYSTEM.PUT(pchar, 0X); INC(pchar) ELSE - DEC(size); + SYSTEM.PUT(pchar, CHR(E.UNI[ORD(wch), E.CP866] MOD 256)); + INC(pchar) END; INC(ptr, 2); DEC(cnt) diff --git a/programs/develop/cedit/SRC/Graph.ob07 b/programs/develop/cedit/SRC/Graph.ob07 index 248640ec0b..27d32123e9 100644 --- a/programs/develop/cedit/SRC/Graph.ob07 +++ b/programs/develop/cedit/SRC/Graph.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -282,6 +282,9 @@ BEGIN ELSE color := canvas.textColor END; + IF c = Lines.NUL THEN + c := 0X + END; KOSAPI.sysfunc6(4, x*65536 + y, font + color, SYSTEM.ADR(c), 1, canvas.bitmap - 8) END; INC(x, canvas.font.width); diff --git a/programs/develop/cedit/SRC/Lines.ob07 b/programs/develop/cedit/SRC/Lines.ob07 index 8d69f843d8..6755d4ad14 100644 --- a/programs/develop/cedit/SRC/Lines.ob07 +++ b/programs/develop/cedit/SRC/Lines.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -26,7 +26,8 @@ CONST WCHAR_SIZE = 2; SPACE* = 20X; TAB* = 9X; - TAB1* = 0FFFEX; + NUL* = 0FDD0X; + TAB1* = 0FDD1X; TYPE diff --git a/programs/develop/cedit/SRC/List.ob07 b/programs/develop/cedit/SRC/List.ob07 index 46956216b5..849215c86c 100644 --- a/programs/develop/cedit/SRC/List.ob07 +++ b/programs/develop/cedit/SRC/List.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -151,52 +151,28 @@ PROCEDURE _insert* (list: tList; item, newItem: tItem); VAR next: tItem; BEGIN - next := item.next; - IF next # NIL THEN - movPtr(next.prev, newItem); - movPtr(newItem.next, next); - movPtr(item.next, newItem); - movPtr(newItem.prev, item); - movInt(list.count, list.count + 1) + IF item # NIL THEN + next := item.next; + IF next # NIL THEN + movPtr(next.prev, newItem); + movPtr(newItem.next, next); + movPtr(item.next, newItem); + movPtr(newItem.prev, item); + movInt(list.count, list.count + 1) + ELSE + _append(list, newItem) + END ELSE - _append(list, newItem) + ASSERT(list.first # NIL); + movPtr(newItem.prev, NIL); + movPtr(newItem.next, list.first); + movPtr(list.first.prev, newItem); + movPtr(list.first, newItem); + movInt(list.count, list.count + 1) END END _insert; -PROCEDURE _exchange* (list: tList; a, b: tItem); -VAR - a0, b0: tItem; -BEGIN - IF (a # NIL) & (b # NIL) THEN - ASSERT((a.next = b) & (b.prev = a)); - a0 := a.prev; - b0 := b.next; - movPtr(b.prev, a0); - movPtr(a.next, b0); - movPtr(b.next, a); - movPtr(a.prev, b); - IF a0 # NIL THEN - IF b0 # NIL THEN - movPtr(a0.next, b); - movPtr(b0.prev, a); - ELSE - movPtr(a0.next, b); - movPtr(list.last, a) - END - ELSE - IF b0 # NIL THEN - movPtr(b0.prev, a); - movPtr(list.first, b) - ELSE - movPtr(list.first, b); - movPtr(list.last, a) - END - END - END -END _exchange; - - PROCEDURE append* (list: tList; item: tItem); BEGIN item.prev := list.last; diff --git a/programs/develop/cedit/SRC/RW.ob07 b/programs/develop/cedit/SRC/RW.ob07 index 2b684afd7a..dfc25afe2a 100644 --- a/programs/develop/cedit/SRC/RW.ob07 +++ b/programs/develop/cedit/SRC/RW.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -178,11 +178,14 @@ BEGIN c := WCHR(file.getChar(file) MOD 65536); IF c = Lines.TAB1 THEN c := SPACE + ELSIF c = 0X THEN + c := Lines.NUL END; + IF c = CR THEN eol := TRUE; file.CR := TRUE - ELSIF (c = LF) OR (c = 0X) THEN + ELSIF c = LF THEN IF ~file.CR THEN eol := TRUE END; @@ -424,8 +427,12 @@ VAR BEGIN FOR i := 0 TO n - 1 DO c := Lines.getChar(line, i); - IF c # Lines.TAB1 THEN - file.putChar(file, ORD(c)) + IF c = Lines.TAB1 THEN + (* nothing to do *) + ELSIF c = Lines.NUL THEN + file.putChar(file, 0) + ELSE + file.putChar(file, ORD(c)) END END END putString; diff --git a/programs/develop/cedit/SRC/Text.ob07 b/programs/develop/cedit/SRC/Text.ob07 index 0633c3299e..8f26d0ef4a 100644 --- a/programs/develop/cedit/SRC/Text.ob07 +++ b/programs/develop/cedit/SRC/Text.ob07 @@ -1,5 +1,5 @@ (* - Copyright 2021 Anton Krotov + Copyright 2021, 2022 Anton Krotov This file is part of CEdit. @@ -1805,77 +1805,78 @@ BEGIN END dupLine; -PROCEDURE exchange (text: tText; first, second: tLine); -BEGIN - List._exchange(text, first, second); - Lines.modify(text.curLine); - modify(text); - UpDown(text, 0) -END exchange; - - -PROCEDURE upLine (text: tText); -BEGIN - DEC(text.cursor.Y); - exchange(text, text.curLine.prev(tLine), text.curLine) -END upLine; - - -PROCEDURE downLine (text: tText); -BEGIN - INC(text.cursor.Y); - exchange(text, text.curLine, text.curLine.next(tLine)) -END downLine; - - PROCEDURE MoveLines* (text: tText; down: BOOLEAN); VAR - last: tLine; + last, first, line: tLine; selBeg, selEnd, temp: tPoint; - n, step: INTEGER; + step: INTEGER; frw: BOOLEAN; - moveLine: PROCEDURE (text: tText); BEGIN getSelect(text, selBeg, selEnd); - IF (selBeg.Y > 0) & ~down OR (selEnd.Y < text.count - 1) & down THEN - IF down THEN - step := -2; - moveLine := downLine - ELSE - step := 2; - moveLine := upLine - END; - frw := (text.cursor.X = selEnd.X) & (text.cursor.Y = selEnd.Y); - IF selEnd.Y # selBeg.Y THEN + IF ((selBeg.Y > 0) & ~down OR (selEnd.Y < text.count - 1) & down) THEN + modify(text); + step := ORD(down)*2 - 1; + IF selBeg.Y # selEnd.Y THEN + frw := (text.cursor.X = selEnd.X) & (text.cursor.Y = selEnd.Y); + IF down # frw THEN temp := text.cursor^; SetPos(text, 0, text.select.Y); setSelect(text); text.select^ := temp END; + + ASSERT(selBeg.Y < selEnd.Y); + + first := getLine(text, selBeg.Y); last := getLine(text, selEnd.Y); + + line := first; + Lines.modify(line); + REPEAT + NextLine(line); + Lines.modify(line) + UNTIL line = last; + + IF down THEN + text.curLine := last.prev(tLine) + ELSE + text.curLine := first.next(tLine) + END; selBeg.X := 0; selEnd.X := last.length; - n := selEnd.Y - selBeg.Y + 1; - WHILE n > 0 DO - moveLine(text); - SetPos(text, 0, text.cursor.Y + step); - DEC(n) - END + IF down THEN + last := last.next(tLine); + List._delete(text, last); + List._insert(text, first.prev, last) + ELSE + first := first.prev(tLine); + List._delete(text, first); + List._insert(text, last, first) + END; + IF down THEN + temp := selBeg; + selBeg := selEnd; + selEnd := temp; + END; + SetPos(text, selBeg.X, selBeg.Y + step); + setSelect(text); + text.select.X := selEnd.X; + text.select.Y := selEnd.Y + step ELSE - moveLine(text) - END; - - IF frw THEN - temp := selBeg; - selBeg := selEnd; - selEnd := temp - END; - step := step DIV 2; - SetPos(text, selBeg.X, selBeg.Y - step); - setSelect(text); - text.select.X := selEnd.X; - text.select.Y := selEnd.Y - step + first := getLine(text, selBeg.Y); + Lines.modify(first); + IF down THEN + last := first.next(tLine) + ELSE + last := first.prev.prev(tLine) + END; + List._delete(text, first); + List._insert(text, last, first); + INC(text.cursor.Y, step); + INC(text.select.Y, step); + SetPos(text, text.cursor.X, text.cursor.Y) + END END END MoveLines; @@ -2541,18 +2542,6 @@ BEGIN END findNext; -PROCEDURE rewrite (line: tLine; repl: ARRAY OF WCHAR; pos, n: INTEGER); -BEGIN - IF n > 0 THEN - Lines.copy(line) - END; - WHILE n > 0 DO - DEC(n); - Lines.setChar(line, pos + n, repl[n]) - END -END rewrite; - - PROCEDURE replace* (text: tText; s: ARRAY OF WCHAR; n: INTEGER); VAR line: tLine; @@ -2564,12 +2553,16 @@ BEGIN i := text.cursor.X; IF sLen > n THEN Lines.insert3(line, i, sLen - n) + ELSIF n > sLen THEN + Lines.delCharN(line, i, n - sLen) + ELSE (* n = sLen *) + Lines.copy(line) END; SetPos(text, i + sLen, text.cursor.Y); - rewrite(line, s, i, sLen); - IF n > sLen THEN - Lines.delCharN(line, text.cursor.X, n - sLen) - END; + WHILE sLen > 0 DO + DEC(sLen); + Lines.setChar(line, i + sLen, s[sLen]) + END; resetSelect(text); Lines.modify(line); modify(text)