diff --git a/designer/utslcodeeditor.tsf b/designer/utslcodeeditor.tsf index 8df3585..117287a 100644 --- a/designer/utslcodeeditor.tsf +++ b/designer/utslcodeeditor.tsf @@ -1873,6 +1873,7 @@ type TEditer=class(TCustomcontrol) // FSynClasses["json"]:= array(class(TJsonSynHighLighter),class(TSynCompletion),";json;"); FSynClasses["js"]:= array(class(TJsSynHighLighter),class(tjssyncompletion),";js;"); FSynClasses["css"]:= array(class(TcssSynHighLighter),class(tcsssyncompletion),";css;"); + FSynClasses["xml"]:= array(class(TxmlSynHighLighter),class(tcsssyncompletion),";xml;"); FSynClasses["ini"]:= array(class(TINISynHigLighter),class(TSynCompletion),";ini;"); FSynClasses["bat"]:= array(class(TBatSynHigLighter),class(TSynCompletion),";bat;cmd;"); FSynClasses["tfm"]:= array(class(ttfmhighlighter),class(TSynCompletion),";tfm;"); diff --git a/designer/utslsynmemo.tsf b/designer/utslsynmemo.tsf index a644414..d1b8496 100644 --- a/designer/utslsynmemo.tsf +++ b/designer/utslsynmemo.tsf @@ -1388,6 +1388,45 @@ type TJsonSynHighLighter = class(tcustomsynhighlighter) ExecuteCommand("pairs",array(("{","}"),("[","]"))); end +end +type TxmlSynHighLighter = class(tcustomsynhighlighter) + function create(AOwner); + begin + inherited; + ExecuteCommand("strings",array(('"'),("'"))); + ExecuteCommand("keywords",array()); + ExecuteCommand("rowannotes",array()); + ExecuteCommand("blockannotes",array((""))); + ExecuteCommand("syms",array("<",">","=","?",""),(""))); + end + function SetTToken(tokens,ttk,idx,ext);override; + begin + st := ExecuteCommand("getcurrentpairstate",">"); + st1 := st.state; + d := inherited; + if not d then return ; + if st1=1 and st.state=1 then + begin + st.subitemadd(); + case d.FFColor of + stringcolor,symcolor: + begin + end else + begin + if st.subitemcount()>1 then + begin + d.FFColor := 0x0000ff; + end else + d.FFColor := 0xff0000; + end + + end + end + return d; + //echo "\r\n>>>",st1,"====",st2; + end + end type TJsSynHighLighter = class(tcustomsynhighlighter) function create(AOwner); diff --git a/funcext/tvclib/utslmemo.tsf b/funcext/tvclib/utslmemo.tsf index 924bc55..272eb31 100644 --- a/funcext/tvclib/utslmemo.tsf +++ b/funcext/tvclib/utslmemo.tsf @@ -3149,20 +3149,20 @@ type tcustomsynhighlighter = class(TSynHighLighter) fregs := array(); setkeyword(array("null","true","false","goto","break","for","to","while","do")); setblockannote(array( - ("/*","*/"), - )); + ("/*","*/"), + )); setrowannote(array("//")); setsyms(array("+","-","*","/",";","(",")","{","}",":")); setstring(array( - ("'","\\"), - ('"',"\\"), - )); + ("'","\\"), + ('"',"\\"), + )); setpairs(array( - ("(",")"), - ("[","]"), - ("{","}"), - )); - setsysfun(array()); + ("(",")"), + ("[","]"), + ("{","}"), + )); + setsysfun(array()); clean(); end function ExecuteCommand(cmd,pm);override; @@ -3205,6 +3205,14 @@ type tcustomsynhighlighter = class(TSynHighLighter) begin return setregs(pm); end + "getcurrentpairstate": + begin + if fcbgestate then + begin + return fcbgestate[pm]; + end + return nil; + end end ; return inherited; end @@ -3243,7 +3251,7 @@ type tcustomsynhighlighter = class(TSynHighLighter) FSatesCount := i+1; FTokens[i]:= tks; end - end + end function GetLineTokens(idx);override; begin if idxe then return cst; if ifarray(cst) and (cst[0]="str" or cst[0]="annote") then begin - cst1 := cst[1]; - cstL := length(cst1); + r := FindRightChar(cst[2],s,b,e,cst[3]); if r=0 then //没找到 begin @@ -3453,6 +3460,15 @@ type tcustomsynhighlighter = class(TSynHighLighter) begin Setttoken(tokens,s[b:r-1],r-1,cst); end + + if cst[0]="annote" then + begin + cstL := fblockstiresc[cst[1]]; + end else + begin + cst1 := cst[1]; + cstL := length(cst1); + end Setttoken(tokens,s[r:(r-1+cstL)],(r-1+cstL),cst); if r