编辑器

修正namespace导致变慢的问题
This commit is contained in:
JianjunLiu
2023-04-18 16:10:47 +08:00
parent 97fbfda3ac
commit 1c0fe31233
4 changed files with 99 additions and 46 deletions
+1
View File
@@ -3955,6 +3955,7 @@ type TEditer=class(TCustomcontrol) //
begin
for i,v in fs do
begin
if not FIsFinding then break;
ri := matchword(i,d);
if ri then
begin
+26 -16
View File
@@ -1795,7 +1795,6 @@ type TTsfFileParser = class() //
end
"parserstring":
begin
mtic;
r := parserstring(o,d);
return r;
end
@@ -1863,7 +1862,7 @@ type TTsfFileParser = class() //
function parserstring(o,d);
begin
rti := 0;
rt := array();
rt := array();
m := d["minus"];
if ifstring(m) then m := lowercase(m);
filechanged(m);
@@ -2147,7 +2146,7 @@ type TTsfFileParser = class() //
begin
return ReadParseredFile((n+".tsf"),true);
end
end
end
function parserafile(dir,v);
begin
fn := lowercase( v["FileName"]);
@@ -2242,11 +2241,8 @@ type TTsfFileParser = class() //
if FCacheDir then
begin
fn := FCacheDir+fiofs+"lasttime"+fiofs+ModifyFname(n)+".t";
if importfile(ftstream(),"",fn,d)=1 and ifarray(d) then
begin
nns := d["nspace"];
nn := d["name"];
FNsCaches[nn][nns] := 1;
if importfile(ftstream(),"",fn,d)=1 then
begin
return d;
end
end
@@ -2254,22 +2250,36 @@ type TTsfFileParser = class() //
function ReadParseredFile(n,g); //读取解析的文件
begin
if FCacheDir then
begin
begin
ln := lowercase(n);
if not ifarray(FFilePaths) then FFilePaths := array();
if not(FFileNames[lowercase(n)]) then return ;
if not(FFileNames[ln]) then return ;
if not ifarray(FCacheS ) then FCacheS := array();
d := FCacheS[lowercase(n)];
if d then
fp := FCacheS[ln,"fullpath"];
if fp then
begin
FFilePaths[lowercase(n)] := d["fullpath"];
if g then return d;
FFilePaths[ln] := fp;
nns := FCacheS[ln,"nspace"];
if nns then
begin
nn := FCacheS[ln,"name"];
FNsCaches[nn][nns] := 1;
end
if g then return FCacheS[ln];
return 1;
end
fn := FCacheDir+fiofs+ModifyFname(n)+".p";
if importfile(ftstream(),"",fn,d)=1 and ifarray(d) then
begin
FCacheS[lowercase(n)] := d;//new tparserdobject(d);
FFilePaths[lowercase(n)] := d["fullpath"];
FCacheS[ln] := d;//new tparserdobject(d);
FFilePaths[ln] := d["fullpath"];
nns := d["nspace"];
if nns then
begin
nn := d["name"];
FNsCaches[nn][nns] := 1;
end
if g then return d;
return 1;
end