From 7d16005d2ce1ca73c2ac6796f2f3582962eea984 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Sat, 11 Apr 2020 13:09:40 +0200 Subject: [PATCH] Update SynEdit component code, to get different interpretations of double minus comments for #549 --- .../Packages/Delphi10.3/SynEdit.groupproj | 94 ++++++------- .../Packages/Delphi10.3/SynEdit_D.dproj | 12 +- .../Packages/Delphi10.3/SynEdit_R.dproj | 7 +- .../synedit/Source/SynCompletionProposal.pas | 7 +- components/synedit/Source/SynDBEdit.pas | 21 ++- components/synedit/Source/SynEdit.pas | 4 + .../synedit/Source/SynEditHighlighter.pas | 9 +- .../synedit/Source/SynHighlighterDWS.pas | 47 ++++++- .../synedit/Source/SynHighlighterGLSL.pas | 13 +- .../synedit/Source/SynHighlighterPas.pas | 23 +--- .../synedit/Source/SynHighlighterSQL.pas | 88 +++++++++++- .../synedit/Source/SynHighlighterXML.pas | 127 ++++++++++++++++++ components/synedit/Source/SynRegExpr.pas | 2 + components/synedit/resources/Page.bmp | Bin 32822 -> 0 bytes components/synedit/resources/SynEdit.res | Bin 1268 -> 0 bytes components/synedit/resources/SynEditReg.dcr | Bin 31664 -> 0 bytes components/synedit/resources/SynEditReg.res | Bin 876 -> 0 bytes 17 files changed, 357 insertions(+), 97 deletions(-) delete mode 100644 components/synedit/resources/Page.bmp delete mode 100644 components/synedit/resources/SynEdit.res delete mode 100644 components/synedit/resources/SynEditReg.dcr delete mode 100644 components/synedit/resources/SynEditReg.res diff --git a/components/synedit/Packages/Delphi10.3/SynEdit.groupproj b/components/synedit/Packages/Delphi10.3/SynEdit.groupproj index fc58b096..85a0b3f5 100644 --- a/components/synedit/Packages/Delphi10.3/SynEdit.groupproj +++ b/components/synedit/Packages/Delphi10.3/SynEdit.groupproj @@ -1,46 +1,48 @@ - - - {D7950D4A-962A-4E8F-982E-E7E052259FA8} - - - - - - - - - - - Default.Personality - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + {D7950D4A-962A-4E8F-982E-E7E052259FA8} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/components/synedit/Packages/Delphi10.3/SynEdit_D.dproj b/components/synedit/Packages/Delphi10.3/SynEdit_D.dproj index f6ef9251..e98a4838 100644 --- a/components/synedit/Packages/Delphi10.3/SynEdit_D.dproj +++ b/components/synedit/Packages/Delphi10.3/SynEdit_D.dproj @@ -7,7 +7,7 @@ 1 Package None - 18.6 + 18.8 Win32 @@ -18,11 +18,6 @@ Base true - - true - Base - true - true Base @@ -40,6 +35,7 @@ true + SynEdit_D ..\..\build\$(Platform) true CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= @@ -55,14 +51,12 @@ 1031 false false - SynEdit_D SynEdit_R;$(DCC_UsePackage) System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) true 1033 - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) SynEdit_R;$(DCC_UsePackage) @@ -72,7 +66,7 @@ false - false + 0 0 RELEASE;$(DCC_Define) diff --git a/components/synedit/Packages/Delphi10.3/SynEdit_R.dproj b/components/synedit/Packages/Delphi10.3/SynEdit_R.dproj index 5123ebe8..d9847d65 100644 --- a/components/synedit/Packages/Delphi10.3/SynEdit_R.dproj +++ b/components/synedit/Packages/Delphi10.3/SynEdit_R.dproj @@ -7,7 +7,7 @@ 3 Package VCL - 18.6 + 18.8 Win32 @@ -40,6 +40,7 @@ true + SynEdit_R ..\..\build\$(Platform) true true @@ -56,13 +57,11 @@ 1031 false false - SynEdit_R Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) true 1033 - CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) @@ -71,7 +70,7 @@ false - false + 0 0 RELEASE;$(DCC_Define) diff --git a/components/synedit/Source/SynCompletionProposal.pas b/components/synedit/Source/SynCompletionProposal.pas index 1f7a2030..07661bea 100644 --- a/components/synedit/Source/SynCompletionProposal.pas +++ b/components/synedit/Source/SynCompletionProposal.pas @@ -1795,7 +1795,7 @@ var CompareString := StripFormatCommands(CompareString); end; - if fMatchTextAnywhere then + if FMatchTextAnywhere then begin if Value <> '' then begin @@ -1851,11 +1851,11 @@ begin Exit; if FMatchText then begin - if fMatchTextAnywhere then + if FMatchTextAnywhere then Position := 0; RecalcList; AdjustScrollBarPosition; - if not fMatchTextAnywhere then + if not FMatchTextAnywhere then Position := 0; if Visible and Assigned(FOnChangePosition) and (DisplayType = ctCode) then @@ -2798,6 +2798,7 @@ begin Form.UsePrettyText := scoUsePrettyText in Value; Form.UseInsertList := scoUseInsertList in Value; Form.MatchText := scoLimitToMatchedText in Value; + Form.MatchTextAnywhere := scoLimitToMatchedTextAnywhere in Value; Form.CompleteWithTab := scoCompleteWithTab in Value; Form.CompleteWithEnter := scoCompleteWithEnter in Value; end; diff --git a/components/synedit/Source/SynDBEdit.pas b/components/synedit/Source/SynDBEdit.pas index 3ac31a9d..cd78fb71 100644 --- a/components/synedit/Source/SynDBEdit.pas +++ b/components/synedit/Source/SynDBEdit.pas @@ -12,7 +12,7 @@ The Original Code is: SynDBEdit.pas, released 2000-05-05. The Original Code is based on DBmwEdit.pas by Vladimir Kuznetsov, part of the mwEdit component suite. Portions created by Vladimir Kuznetsov are Copyright (C) 1999 Vladimir Kuznetsov. -Unicode translation by Maël Hörz. +Unicode translation by Maël Hörz. All Rights Reserved. Contributors to the SynEdit and mwEdit projects are listed in the @@ -320,6 +320,10 @@ begin end; procedure TCustomDBSynEdit.LoadMemo; +{$IFDEF UNICODE} +const + BlobFieldWideText = [ftWideMemo,ftWideString]; +{$ENDIF} {$IFDEF SYN_COMPILER_3_UP} var BlobStream: TStream; @@ -337,19 +341,30 @@ begin BlobStream := TBlobStream.Create(BlobField, bmRead); {$ENDIF} Lines.BeginUpdate; - Lines.LoadFromStream(BlobStream{$IFDEF UNICODE}, TEncoding.Default{$ENDIF}); +{$IFDEF UNICODE} +//03.12.2019 fix for unicode +//Tested on UTF8 TEXT Sqlite3 & Zeos Unicode (UTF16) v7.2.6 +//For UTF8 use: System.SysUtils.TEncoding.UTF8 + if ((FDataLink.Field is TBlobField) and + (TBlobField(FDataLink.Field).BlobType in BlobFieldWideText)) then + Lines.LoadFromStream(BlobStream, TEncoding.Unicode) + else Lines.LoadFromStream(BlobStream, TEncoding.Default); +{$ELSE} //Non Unicode + Lines.LoadFromStream(BlobStream); +{$ENDIF} Lines.EndUpdate; BlobStream.Free; Modified := False; ClearUndo; except - // Memo too large + // Memo too large on E: EInvalidOperation do Lines.Text := Format('(%s)', [E.Message]); end; EditingChange(Self); end; + procedure TCustomDBSynEdit.DoChange; begin FDataLink.Modified; diff --git a/components/synedit/Source/SynEdit.pas b/components/synedit/Source/SynEdit.pas index a42e2a3f..bb55c187 100644 --- a/components/synedit/Source/SynEdit.pas +++ b/components/synedit/Source/SynEdit.pas @@ -3953,7 +3953,9 @@ begin else vStartOfBlock := CaretXY; + Inc(FPaintTransientLock); SetSelTextPrimitiveEx(PasteMode, PWideChar(GetClipboardText), True); + Dec(FPaintTransientLock); vEndOfBlock := BlockEnd; if PasteMode = smNormal then FUndoList.AddChange(crPaste, vStartOfBlock, vEndOfBlock, SelText, @@ -8828,6 +8830,7 @@ begin end else bEndUndoBlock := False; + Inc(FPaintTransientLock); try while (ptCurrent.Line >= ptStart.Line) and (ptCurrent.Line <= ptEnd.Line) do begin @@ -8917,6 +8920,7 @@ begin finally if bReplaceAll and not bPrompt then DecPaintLock; if bEndUndoBlock then EndUndoBlock; + Dec(FPaintTransientLock); DoOnPaintTransient( ttAfter ); end; end; diff --git a/components/synedit/Source/SynEditHighlighter.pas b/components/synedit/Source/SynEditHighlighter.pas index 08e732f5..112b9db8 100644 --- a/components/synedit/Source/SynEditHighlighter.pas +++ b/components/synedit/Source/SynEditHighlighter.pas @@ -80,8 +80,9 @@ type OldStyle: Boolean): Boolean; virtual; function LoadFromRegistry(Reg: TBetterRegistry): Boolean; function SaveToRegistry(Reg: TBetterRegistry): Boolean; - function LoadFromFile(Ini: TIniFile): Boolean; - function SaveToFile(Ini: TIniFile): Boolean; +//Fix type changed to TCustomIniFile for use both TMemIniFile and TIniFile + function LoadFromFile(Ini: TCustomIniFile): Boolean; + function SaveToFile(Ini: TCustomIniFile): Boolean; public procedure SetColors(Foreground, Background: TColor); property FriendlyName: UnicodeString read FFriendlyName; @@ -704,7 +705,7 @@ begin Result := False; end; -function TSynHighlighterAttributes.LoadFromFile(Ini : TIniFile): Boolean; +function TSynHighlighterAttributes.LoadFromFile(Ini : TCustomIniFile): boolean; var S: TStringList; begin @@ -728,7 +729,7 @@ begin end; end; -function TSynHighlighterAttributes.SaveToFile(Ini : TIniFile): Boolean; +function TSynHighlighterAttributes.SaveToFile(Ini : TCustomIniFile): boolean; begin Ini.WriteInteger(Name, 'Background', Background); Ini.WriteInteger(Name, 'Foreground', Foreground); diff --git a/components/synedit/Source/SynHighlighterDWS.pas b/components/synedit/Source/SynHighlighterDWS.pas index a5db5225..3672e410 100644 --- a/components/synedit/Source/SynHighlighterDWS.pas +++ b/components/synedit/Source/SynHighlighterDWS.pas @@ -64,7 +64,7 @@ type TRangeState = (rsANil, rsAnsi, rsAnsiAsm, rsAsm, rsBor, rsBorAsm, rsProperty, rsExports, rsDirective, rsDirectiveAsm, rsHereDocSingle, rsHereDocDouble, - rsType, rsUnknown); + rsType, rsUnit, rsUnknown); PIdentFuncTableFunc = ^TIdentFuncTableFunc; TIdentFuncTableFunc = function : TtkTokenKind of object; @@ -86,6 +86,7 @@ type FCommentClose : Char; FIdentFuncTable: array[0..388] of TIdentFuncTableFunc; FKeywords: TAnsiStringList; + FKeywordsUnitScoped: TAnsiStringList; FKeywordsPropertyScoped: TAnsiStringList; FKeywordsTypeScoped: TAnsiStringList; FTokenID: TtkTokenKind; @@ -110,6 +111,8 @@ type function KeywordFunc: TtkTokenKind; function FuncAsm: TtkTokenKind; function FuncEnd: TtkTokenKind; + function FuncUnitScoped: TtkTokenKind; + function FuncUnit: TtkTokenKind; function FuncPropertyScoped: TtkTokenKind; function FuncProperty: TtkTokenKind; function FuncTypeScoped: TtkTokenKind; @@ -209,7 +212,7 @@ uses const // if the language is case-insensitive keywords *must* be in lowercase - cKeywords: array[1..95] of UnicodeString = ( + cKeywords: array[1..94] of UnicodeString = ( 'abstract', 'and', 'array', 'as', 'asm', 'begin', 'break', 'case', 'cdecl', 'class', 'const', 'constructor', 'continue', 'deprecated', 'destructor', @@ -223,8 +226,11 @@ const 'procedure', 'program', 'property', 'protected', 'public', 'published', 'raise', 'record', 'register', 'reintroduce', 'repeat', 'require', 'resourcestring', 'sar', 'sealed', 'set', 'shl', 'shr', 'static', - 'step', 'strict', 'then', 'to', 'try', 'type', 'unit', 'until', 'uses', - 'var', 'virtual', 'while', 'xor' + 'strict', 'then', 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', + 'virtual', 'while', 'xor' + ); + cKeywordsUnitScoped: array [0..0] of UnicodeString = ( + 'namespace' ); cKeywordsPropertyScoped: array [0..4] of UnicodeString = ( 'default', 'index', 'read', 'stored', 'write' @@ -296,6 +302,7 @@ begin SetAttributesOnChange(DefHighlightChange); FKeywords := TAnsiStringList.Create; + FKeywordsUnitScoped := TAnsiStringList.Create; FKeywordsPropertyScoped := TAnsiStringList.Create; FKeywordsTypeScoped := TAnsiStringList.Create; @@ -325,6 +332,7 @@ destructor TSynDWSSyn.Destroy; begin inherited; FKeywords.Free; + FKeywordsUnitScoped.Free; FKeywordsPropertyScoped.Free; FKeywordsTypeScoped.Free; {$IFDEF SYN_CodeFolding} @@ -378,6 +386,12 @@ begin SetIdentFunc(HashKey(@cKeywords[i][1]), KeywordFunc); FKeywords.Add(cKeywords[i]); end; + + for i := 0 to High(cKeywordsUnitScoped) do + begin + SetIdentFunc(HashKey(@cKeywordsUnitScoped[i][1]), FuncUnitScoped); + FKeywordsUnitScoped.Add(cKeywordsUnitScoped[i]); + end; for i := 0 to High(cKeywordsPropertyScoped) do begin @@ -398,6 +412,7 @@ begin SetIdentFunc(HashKey('asm'), FuncAsm); SetIdentFunc(HashKey('end'), FuncEnd); SetIdentFunc(HashKey('property'), FuncProperty); + SetIdentFunc(HashKey('unit'), FuncUnit); SetIdentFunc(HashKey('type'), FuncType); FKeywords.Sorted := True; @@ -476,6 +491,17 @@ begin Result := KeywordFunc; end; +function TSynDWSSyn.FuncUnitScoped: TtkTokenKind; +var + buf: String; +begin + SetString(buf, FToIdent, FStringLen); + if (FRange = rsUnit) and (FKeywordsUnitScoped.IndexOf(buf) >= 0) then + Result := tkKey + else + Result := KeywordFunc; +end; + function TSynDWSSyn.FuncProperty: TtkTokenKind; begin if IsCurrentToken('property') then @@ -487,6 +513,17 @@ begin Result := KeywordFunc; end; +function TSynDWSSyn.FuncUnit: TtkTokenKind; +begin + if IsCurrentToken('unit') then + begin + Result := tkKey; + FRange := rsUnit; + end + else + Result := KeywordFunc; +end; + procedure TSynDWSSyn.AddressOpProc; begin FTokenID := tkSymbol; @@ -771,7 +808,7 @@ procedure TSynDWSSyn.SemicolonProc; begin Inc(Run); FTokenID := tkSymbol; - if FRange in [rsProperty, rsExports] then + if FRange in [rsUnit, rsProperty, rsExports] then FRange := rsUnknown; end; diff --git a/components/synedit/Source/SynHighlighterGLSL.pas b/components/synedit/Source/SynHighlighterGLSL.pas index a1803afb..b62f7f66 100644 --- a/components/synedit/Source/SynHighlighterGLSL.pas +++ b/components/synedit/Source/SynHighlighterGLSL.pas @@ -75,7 +75,7 @@ type xtkSquareOpen, xtkStar, xtkSubtract, xtkSubtractAssign, xtkXor, xtkXorAssign); - TRangeState = (rsUnknown, rsDirective, rsDirectiveComment, + TRangeState = (rsUnknown, rsAnsiC, rsDirective, rsDirectiveComment, rsMultiLineString, rsMultiLineDirective); PIdentFuncTableFunc = ^TIdentFuncTableFunc; @@ -590,6 +590,7 @@ begin FCommentAttri := TSynHighlighterAttributes.Create(SYNS_AttrComment, SYNS_FriendlyAttrComment); FCommentAttri.Style:= [fsItalic]; + FCommentAttri.Foreground := clGray; FIdentifierAttri := TSynHighlighterAttributes.Create(SYNS_AttrIdentifier, SYNS_FriendlyAttrIdentifier); FInterfaceQualifierAttri := TSynHighlighterAttributes.Create(SYNS_AttrInterfaceQualifier, SYNS_FriendlyAttrInterfaceQualifier); FInterfaceQualifierAttri.Style:= [fsBold]; @@ -1277,6 +1278,8 @@ begin '*': {c style comments} begin FTokenID := tkComment; + if FRange <> rsDirectiveComment then + FRange := rsAnsiC; Inc(Run, 2); while FLine[Run] <> #0 do case FLine[Run] of @@ -1291,7 +1294,11 @@ begin Break; end else Inc(Run); #10, #13: - Break; + begin + if FRange = rsDirectiveComment then + FRange := rsAnsiC; + Break; + end; else Inc(Run); end; end; @@ -1453,7 +1460,7 @@ begin FAsmStart := False; FTokenPos := Run; case FRange of - rsDirectiveComment: AnsiCProc; + rsAnsiC, rsDirectiveComment: AnsiCProc; rsMultiLineDirective: DirectiveEndProc; rsMultilineString: StringEndProc; else diff --git a/components/synedit/Source/SynHighlighterPas.pas b/components/synedit/Source/SynHighlighterPas.pas index 683888f5..e16f7a96 100644 --- a/components/synedit/Source/SynHighlighterPas.pas +++ b/components/synedit/Source/SynHighlighterPas.pas @@ -1243,7 +1243,7 @@ begin FoldRanges.StartFoldRange(Line +1, FT_Implementation) // Functions and procedures else if RE_Code.Exec(CurLine) then - FoldRanges.StartFoldRange(Line +1, FT_CodeDeclaration) + FoldRanges.StartFoldRange(Line + 1, FT_CodeDeclaration) // Find begin or end (Fold Type 1) else if not BlockDelimiter(Line) then FoldRanges.NoFoldInfo(Line + 1); @@ -1346,7 +1346,7 @@ procedure TSynPasSyn.EnumUserSettings(DelphiVersions: TStrings); Versions: TStringList; i: Integer; begin - with TBetterRegistry.Create do + with TBetterRegistry.Create(KEY_READ or KEY_WOW64_32KEY) do begin try RootKey := HKEY_LOCAL_MACHINE; @@ -1371,22 +1371,11 @@ procedure TSynPasSyn.EnumUserSettings(DelphiVersions: TStrings); end; end; -var - LWowNode : string; begin - { returns the user settings that exist in the registry } - // See UseUserSettings below where these strings are used - {$ifdef WIN64} - LWowNode := 'WOW6432Node\'; - {$else} - LWowNode := ''; - {$ENDIF} - - LoadKeyVersions('\SOFTWARE\'+ LWOWNode + 'Borland\Delphi', ''); - LoadKeyVersions('\SOFTWARE\'+ LWOWNode + 'Borland\BDS', BDSVersionPrefix); - LoadKeyVersions('\SOFTWARE\'+ LWOWNode + 'CodeGear\BDS', BDSVersionPrefix); - LoadKeyVersions('\SOFTWARE\'+ LWOWNode + 'Embarcadero\BDS', BDSVersionPrefix); - + LoadKeyVersions('\SOFTWARE\Borland\Delphi', ''); + LoadKeyVersions('\SOFTWARE\Borland\BDS', BDSVersionPrefix); + LoadKeyVersions('\SOFTWARE\CodeGear\BDS', BDSVersionPrefix); + LoadKeyVersions('\SOFTWARE\Embarcadero\BDS', BDSVersionPrefix); end; function TSynPasSyn.UseUserSettings(VersionIndex: Integer): Boolean; diff --git a/components/synedit/Source/SynHighlighterSQL.pas b/components/synedit/Source/SynHighlighterSQL.pas index 618a95c3..e75b7b6e 100644 --- a/components/synedit/Source/SynHighlighterSQL.pas +++ b/components/synedit/Source/SynHighlighterSQL.pas @@ -1,4 +1,4 @@ -{------------------------------------------------------------------------------- +{------------------------------------------------------------------------------- The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at @@ -79,7 +79,7 @@ type TRangeState = (rsUnknown, rsComment, rsString, rsConditionalComment, rsConsoleOutput); TSQLDialect = (sqlStandard, sqlInterbase6, sqlMSSQL7, sqlMySQL, sqlOracle, - sqlSybase, sqlIngres, sqlMSSQL2K, sqlPostgres, sqlNexus); + sqlSybase, sqlIngres, sqlMSSQL2K, sqlPostgres, sqlNexus, sqlInformix); type TSynSQLSyn = class(TSynCustomHighlighter) @@ -1283,6 +1283,82 @@ const 'AUTOINC,BIGINT,LARGEINT,WORD,DWORD,FLOAT,REAL,DOUBLE,EXTENDED,MONEY,' + 'BOOLEAN,BOOL,DATE,TIME,TIMESTAMP,DATETIME,GUID,BYTEARRAY,RECREV'; +//---Informix------------------------------------------------------------------- + // keywords + InformixKW: Unicodestring = + 'ABSOLUTE,ACCESS,ACCESS_METHOD,ACTIVE,ADD,AFTER,AGGREGATE,ALIGNMENT,ALL,' + + 'ALL_ROWS,ALLOCATE,ALTER,AND,ANSI,ANY,APPEND,AS,ASC,AT,ATTACH,AUDIT,' + + 'AUTHORIZATION,AUTO,AUTOFREE,AVOID_EXECUTE,AVOID_SUBQF,BEFORE,BEGIN,' + + 'BETWEEN,BINARY,BOTH,BUFFERED,BUILTIN,BY,CACHE,CANNOTHASH,CASCADE,CHECK,' + + 'CLASS,CLIENT,CLOSE,CLUSTER,CLUSTERSIZE,COARSE,COBOL,CODESET,COLLATION,' + + 'COLLECTION,COLUMN,COMMIT,COMMITTED,COMMUTATOR,CONCURRENT,CONNECT,' + + 'CONNECTION,CONST,CONSTRAINT,CONSTRAINTS,CONSTRUCTOR,COPY,COSTFUNC,' + + 'CRCOLS,CREATE,CROSS,CURRENT_ROLE,CURSOR,CYCLE,DATABASE,DATAFILES,' + + 'DATASKIP,DBA,DBDATE,DBPASSWORD,DEALLOCATE,DEBUG,DEC_T,DECLARE,DEFAULT,' + + 'DEFERRED,DEFERRED_PREPARE,DELAY,DELETE,DELIMITER,DELUXE,DEREF,DESC,' + + 'DESCRIBE,DESCRIPTOR,DETACH,DIAGNOSTICS,DIRECTIVES,DIRTY,DISABLED,' + + 'DISCONNECT,DISTINCT,DISTRIBUTEBINARY,DISTRIBUTESREFERENCES,' + + 'DISTRIBUTIONS,DOCUMENT,DOMAIN,DONOTDISTRIBUTE,DORMANT,DROP,DTIME_T,EACH,' + + 'ELIF,ELSE,ENABLED,ENCRYPTION,END,ENUM,ENVIRONMENT,ESCAPE,EXCLUSIVE,EXEC,' + + 'EXECUTE,EXECUTEANYWHERE,EXISTS,EXPLAIN,EXPLICIT,EXPRESS,EXPRESSION,' + + 'EXTENT,EXTERNAL,FALSE,FAR,FETCH,FILE,FILLFACTOR,FILTERING,FIRST,' + + 'FIRST_ROWS,FIXCHAR,FIXED,FLUSH,FOREIGN,FORMAT,FORTRAN,FOUND,FRACTION,' + + 'FRAGMENT,FREE,FROM,FULL,FUNCTION,GENERAL,GET,GK,GLOBAL,GO,GOTO,GRANT,' + + 'GROUP,HANDLESNULLS,HASH,HAVING,HIGH,HINT,HOLD,HOUR,HYBRID,IFX_INT8_T,' + + 'IFX_LO_CREATE_SPEC_T,IFX_LO_STAT_T,IMMEDIATE,IMPLICIT,IN,INACTIVE,' + + 'INCREMENT,INDEX,INDEXES,INDICATOR,INFORMIX,INIT,INLINE,INNER,INOUT,' + + 'INSERT,INSTEAD,INTEG,INTERNAL,INTERNALLENGTH,INTO,INTRVL_T,IS,' + + 'ISCANONICAL,ISOLATION,ITEM,ITERATOR,JOIN,KEEP,KEY,LABELEQ,LABELGE,' + + 'LABELGLB,LABELGT,LABELLE,LABELLT,LABELLUB,LABELTOSTRING,LANGUAGE,LAST,' + + 'LEADING,LEFT,LEVEL,LIKE,LIMIT,LISTING,LOAD,LOC_T,LOCAL,LOCATOR,LOCK,' + + 'LOCKS,LOG,LONG,LOW,MATCHES,MAXERRORS,MAXLEN,MAXVALUE,MEDIAN,MEDIUM,' + + 'MEMORY_RESIDENT,MIDDLE,MINUTE,MINVALUE,MODE,MODERATE,MODIFY,MODULE,' + + 'MOUNTING,NAME,NEGATOR,NEW,NEXT,NO,NOCACHE,NOCYCLE,NOMAXVALUE,NOMIGRATE,' + + 'NOMINVALUE,NON_RESIDENT,NONE,NOORDER,NORMAL,NOT,NOTEMPLATEARG,NULL,' + + 'OF,OFF,OLD,ONLINE,ONLY,OPAQUE,OPCLASS,OPEN,OPERATIONAL,OPTCOMPIND,' + + 'OPTICAL,OPTIMIZATION,OPTION,OR,ORDER,OUT,OUTER,OUTPUT,PAGE,' + + 'PARALLELIZABLE,PARAMETER,PARTITION,PASCAL,PASSEDBYVALUE,PASSWORD,' + + 'PDQPRIORITY,PERCALL_COST,PLI,PLOAD,PREPARE,PREVIOUS,PRIMARY,PRIOR,' + + 'PRIVATE,PRIVILEGES,PROCEDURE,PUBLIC,PUT,RAW,READ,RECORDEND,REF,' + + 'REFERENCES,REFERENCING,REGISTER,REJECTFILE,RELATIVE,RELEASE,REMAINDER,' + + 'RENAME,REOPTIMIZATION,REPEATABLE,REPLICATION,RESERVE,RESOLUTION,' + + 'RESOURCE,RESTART,RESTRICT,RESUME,RETAIN,RETURNING,RETURNS,REUSE,REVOKE,' + + 'RIGHT,ROBIN,ROLE,ROLLBACK,ROLLFORWARD,ROUTINE,ROWID,ROWIDS,ROWS,SAMEAS,' + + 'SAMPLES,SAVE,SCHEDULE,SCHEMA,SCRATCH,SCROLL,SECOND,SECONDARY,SECTION,' + + 'SELCONST,SELECT,SELFUNC,SEQUENCE,SERIALIZABLE,SERVERUUID,SESSION,SHARE,' + + 'SHORT,SIGNED,SIZE,SKALL,SKINHIBIT,SKIP,SKSHOW,SOME,SPECIFIC,SQL,SQLCODE,' + + 'SQLCONTEXT,SQLERROR,SQLSTATE,SQLWARNING,STABILITY,STACK,STANDARD,START,' + + 'STATIC,STATISTICS,STEP,STOP,STORAGE,STRATEGIES,STRING,STRINGTOLABEL,' + + 'STRUCT,STYLE,SUPPORT,SYNC,SYNONYM,TABLE,TEMP,TEMPLATE,TEST,TIME,TIMEOUT,' + + 'TO,TRAILING,TRANSACTION,TRIGGER,TRIGGERS,TRUE,TRUNCATE,TYPE,TYPEDEF,' + + 'TYPEID,TYPENAME,TYPEOF,UNCOMMITTED,UNDER,UNION,UNIQUE,UNKNOWN,UNLOAD,' + + 'UNLOCK,UNSIGNED,UPDATE,USAGE,USE_SUBQF,USING,VALUE,VALUES,VAR,VARIABLE,' + + 'VARIANT,VIEW,VIOLATIONS,VOID,VOLATILE,WAIT,WARNING,WHERE,WITH,WITHOUT,' + + 'WORK,WRITE,XADATASOURCE,XID,XLOAD,XUNLOAD'; + + // types + InformixTypes: UnicodeString = + 'BLOB,BOOLEAN,BYTE,CHAR,CHARACTER,VARYING,CLOB,DATE,DATETIME,DEC,DECIMAL,' + + 'DOUBLE,PRECISION,FLOAT,INT,INT8,INTEGER,INTERVAL,LIST,LVARCHAR,MONEY,' + + 'MULTISET,NCHAR,NUMERIC,NVARCHAR,REAL,ROW,SERIAL,SERIAL8,SET,SMALLFLOAT,' + + 'SMALLINT,TEXT,VARCHAR'; + + // PLSQL keywords + InformixPLSQLKW: UnicodeString = + 'CALL,CONTINUE,DEFINE,ERROR,EXCEPTION,EXIT,FOR,FOREACH,IF,LET,ON,RAISE,' + + 'RETURN,SYSTEM,TRACE,WHENEVER,WHILE'; + + // functions + InformixFunctions: UnicodeString = + 'ABS,ACOS,ASIN,ATAN,ATAN2,AVG,CARDINALITY,CASE,CAST,CHARACTER_LENGTH,' + + 'CHAR_LENGTH,COS,COUNT,CURRENT,DAY,DBINFO,DBSERVERNAME,DECODE,' + + 'DECRYPT_CHAR,DECRYPT_BINARY,DEFAULT_ROLE,ENCRYPT_AES,ENCRYPT_TDES,EXP,' + + 'EXTEND,FILETOBLOB,FILETOCLOB,GETHINT,HEX,IFX_ALLOW_NEWLINE,' + + 'IFX_REPLACE_MODULE,INITCAP,LENGTH,LOCOPY,LOGN,LOG10,LOTOFILE,LOWER,LPAD,' + + 'MAX,MDY,MIN,MOD,MONTH,NVL,OCTET_LENGTH,POW,RANGE,REPLACE,ROOT,ROUND,' + + 'RPAD,SIN,SITENAME,SQRT,STDEV,SUBSTR,SUBSTRING,SUM,TAN,THEN,TO_CHAR,TO_DATE,' + + 'TODAY,TRIM,TRUNC,UNITS,UPPER,USER,VARIANCE,WEEKDAY,WHEN,YEAR'; + function TSynSQLSyn.HashKey(Str: PWideChar): Integer; var FoundDoubleMinus: Boolean; @@ -1567,7 +1643,7 @@ end; procedure TSynSQLSyn.MinusProc; begin Inc(Run); - if FLine[Run] = '-' then + if (FLine[Run] = '-') and ((FDialect <> sqlMySQL) or (FLine[Run+1] = ' ')) then begin FTokenID := tkComment; repeat @@ -2317,6 +2393,12 @@ begin tkDatatype: Result := NexusTypes; tkFunction: Result := NexusFunctions; end; + sqlInformix: + case TtkTokenKind(TokenKind) of + tkKey: Result := InformixKW; + tkDatatype: Result := InformixTypes; + tkFunction: Result := InformixFunctions; + end; end; end; diff --git a/components/synedit/Source/SynHighlighterXML.pas b/components/synedit/Source/SynHighlighterXML.pas index 00d4492c..55820ac6 100644 --- a/components/synedit/Source/SynHighlighterXML.pas +++ b/components/synedit/Source/SynHighlighterXML.pas @@ -61,6 +61,9 @@ uses SynEditHighlighter, SynUnicode, SysUtils, +{$IFDEF SYN_CodeFolding} + SynEditCodeFolding, +{$ENDIF} Classes; type @@ -90,7 +93,11 @@ type rsDocTypeQuoteEntityRef} ); +{$IFDEF SYN_CodeFolding} + TSynXMLSyn = class(TSynCustomCodeFoldingHighlighter) +{$ELSE} TSynXMLSyn = class(TSynCustomHighlighter) +{$ENDIF} private FRange: TRangeState; FTokenID: TtkTokenKind; @@ -149,6 +156,10 @@ type procedure Next; override; procedure SetRange(Value: Pointer); override; procedure ResetRange; override; +{$IFDEF SYN_CodeFolding} + procedure ScanForFoldRanges(FoldRanges: TSynFoldRanges; + LinesToScan: TStrings; FromLine: Integer; ToLine: Integer); override; +{$ENDIF} published property ElementAttri: TSynHighlighterAttributes read FElementAttri write FElementAttri; @@ -814,6 +825,122 @@ begin FRange := rsText; end; +{$IFDEF SYN_CodeFolding} +procedure TSynXMLSyn.ScanForFoldRanges(FoldRanges: TSynFoldRanges; + LinesToScan: TStrings; FromLine, ToLine: Integer); +var + Line: Integer; + TagStartPos: Integer; + CurLine: string; + RunPos: Integer; + IsClosing: Boolean; + IndentLevel, CurLevel: Integer; +begin + IndentLevel := 0; + for Line := FromLine to ToLine do + begin + CurLine := LinesToScan[Line]; + RunPos := 1; + + // skip empty lines + if CurLine = '' then + begin + FoldRanges.NoFoldInfo(Line + 1); + Continue; + end; + + CurLevel := 0; + while RunPos <= Length(CurLine) do + begin + // scan for open tag + if CurLine[RunPos] = '<' then + begin + Inc(RunPos); + if RunPos = Length(CurLine) then + break; + + // get tag type (prolog, closing or malformed + case CurLine[RunPos] of + '?' : + begin + // skip to end and continue + Inc(RunPos); + while RunPos <= Length(CurLine) do + begin + if CurLine[RunPos] = '?' then + begin + break; + end; + Inc(RunPos); + end; + Continue; + end; + + '/' : + begin + Inc(RunPos); + if RunPos = Length(CurLine) then + break; + IsClosing := True; + end; + '>' : + begin + // malformed tag (without any tag name) -> skip + Inc(RunPos); + continue; + end; + else + IsClosing := False; + end; + + // scan for tag end-marker + while RunPos <= Length(CurLine) do + begin + + if CurLine[RunPos] = '>' then + begin + // decrease the current level if it's a closing tag + if IsClosing then + Dec(CurLevel) + else + // eventually increase the current level if it's not an empty tag + if not (CurLine[RunPos - 1] = '/') then + Inc(CurLevel); + + Inc(RunPos); + break; + end; + + Inc(RunPos); + end; + end; + Inc(RunPos); + end; + + // check whether the current level has changed, otherwise continue + if (CurLevel = 0) then + begin + FoldRanges.NoFoldInfo(Line + 1); + Continue; + end; + + // the level has changed, but in what direction? + if CurLevel > 0 then + begin + // start a new fold range for the next indent level + IndentLevel := IndentLevel + CurLevel; + FoldRanges.StartFoldRange(Line + 1, 1, IndentLevel); + end + else + begin + // stop the fold range for the current indent level and decrease + FoldRanges.StopFoldRange(Line + 1, 1, IndentLevel); + IndentLevel := IndentLevel + CurLevel; + end; + end; //for Line +end; +{$ENDIF} + function TSynXMLSyn.IsFilterStored: Boolean; begin Result := FDefaultFilter <> SYNS_FilterXML; diff --git a/components/synedit/Source/SynRegExpr.pas b/components/synedit/Source/SynRegExpr.pas index e319a7eb..64ebdc3b 100644 --- a/components/synedit/Source/SynRegExpr.pas +++ b/components/synedit/Source/SynRegExpr.pas @@ -1315,8 +1315,10 @@ begin Result := True; IsOn := True; {$IFNDEF SYN_COMPILER_24_UP} + {$IFDEF SYN_WIN32} Mask := 0; // prevent compiler warning {$ENDIF} + {$ENDIF} for i := 1 to length (AModifiers) do if AModifiers [i] = '-' then IsOn := False diff --git a/components/synedit/resources/Page.bmp b/components/synedit/resources/Page.bmp deleted file mode 100644 index ee034600e3b6e81d20a0548727c09f085181d7b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32822 zcmeI4y|v^v5{0RA){(QF#2SiV1CXzD92p!}-2D6h3bsm4iSY!UxV^ zX1%oZ@)f*??1PoB<OuYKCW%@S)2rS3a}6Gb z%xEKPUaGWl{WK3#f~StGEab1s;C6YK$)CL)yt5u$=g<6kpQcc8@2S6c^DqH^t9>@% zrpw>s&$sj96ZB2?y`ATFdAROAr|+``YSd-qgm>lg3HH^ARwIv$DCGBfV zC{;q>5o!AimMQXrn%J%~`@H@<49v~Id8lpHx0)7(OJ1mojOU6E@lbel7um_JwTKKs@xA7STB#Ruy$dx_vEPr>ZV7rq9W@;$sO?DFCSe>UxNo`;_Inb3HBIj`fj`(Iya`lLerHHF!b@ik*hnV_$-_ zl@zRlecV|N+7;}OOiNGwxj$3xv)AJ7v`^=G_$-V0%%7<0GfEER4ZOW>b3kKT^vCdG zLu(iAf>g8b0!5uFjQ4K)-qku|f9Ukac`@^+-gcc=)}bNvhu!B^hpH}-AHzF6ZSJy- zLS|pL_-R4$mIv8seR~Rih<(1lyH~gi(!G6NpsGv70bV-jbv~aD6c-PiqMA%nvL=T8m8{=ghK?cJ%RN zm3Z>EIU}j*77uA$Drh}q^@k}nUpI5TB7fSdg`+Q`C#@g2kU+A@vHnchkqsVg;-O%X zTdt7iG7|Jt(mXsWhO68$Ru|@WRz8j(M^#Cdkch~XkzOalRFh`b{i{zofAG$E;BVCV`vIcB+Gxxovivwsh%BE?f@{iVyBn0M1YD_!+5*U3v5>E*1O(x2-# zlIC~`F9l@RgO@pEbvx^>sK1rW`eyiZ?T_`{tlO*oS(!M84p!q;q^&?ITTlH}dT)bQ zktQS@gSXxX2yPkv^ajFkw3k&Qsr0DPUPgOKJuupfyfN#%e%@Ak&lq1udl~IT9?)s@ zhcDY7_|?oC$1}79eoDxf>Aqk7((yC!7@X(fjiFpsDY4I&_@)&0?ekn0B-82W(r2L2 zcLEzcy?7??wqu{`I?H1L;RL*6ZTqv2XDzR4AAEho{u#d#Fe(4Cz9LO`2dS2Q5NXyQ zc|jAfvJdL&JlECY;k|M%57;)(b+ve`8y=MsE6V&CoUp?)P4tHS`F#wf5g!#GqR!*% z_gVRI0Z-6AZX;Ht2|*fDnmm3n3z>=r>P7xp+ppy5eH_0es7V_{y6lqt?6AV@@=zo; zDzsMEcbdmGUoA1B`AvCZpXv{vpKRJ^x|;R{lgZ4E5H-WP#6AgCqzMT}i|1orMFXN3 zJ4=h|kM>D#MH=z0tHrbYRS((cALJ$Di|yUld9Leeo?18ji53O>fNhUwT|5++4y%+n z+81~TVFi(F?iJ$9>*8@X!w&}uw%5B(OyP>@ZK=SPkN#fP(s$>JCDJ;*4x9MKg^%$&jRcfVpH}& z{blpPCUR4@kH=T2`eA``QdwZzvfVuU;epaZ36{joame2O^PhZy?Jc4<_f znEgUBhgBd diff --git a/components/synedit/resources/SynEdit.res b/components/synedit/resources/SynEdit.res deleted file mode 100644 index 1e15ec3b0a52c1227d37574752018cdc6a0b1c4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1268 zcmbVLOHRW;41Ij0kwAiq6R_kEY$~M!DyR@eLR8s+yr*Rdv@BS zQH5yTc>Koko3Wi50IsPyyAp26>;$-{C+A~K@s0^bDDZ$+>V)eEFSJ8Ea{okoN6)l5 zVK8Wqx*`0aUQmy4YA*&nd$&{oA5@hau7p^vRoA2HWlT}`$sO(LKsT=z&)`;o#rAn5>xh^RKVfiJ?H$Bxa7Lr10MXp{^FS2+NkvB_l=V~ z#4~@I=v|_jy`*+$mLDEh=dPXcrnj=EKeL)w&Fx<^yL6fN?Ho9x&;8@&e9rBHR&hl! VZuX1j{epYNH+#2*;uKHW*k4Xp@+JTP diff --git a/components/synedit/resources/SynEditReg.dcr b/components/synedit/resources/SynEditReg.dcr deleted file mode 100644 index 9bfba7f4e8bc308d20c05c29bc0e2c8e0f20a4d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31664 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 diff --git a/components/synedit/resources/SynEditReg.res b/components/synedit/resources/SynEditReg.res deleted file mode 100644 index 80b90468eb34208f54c4b6cbb7c4ce53eb679d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 876 zcmbtTu};G<6udN*qAa9H>||u@MmIoA48Sk2(XkSPvtg-HlaV#b!f!-f@+ln|BX!A8 z^>Mc2Hbvcd$;G~R_nxiD27r_hap3eMenwso=?SbhnM7l6y5S@x?uh_>nl5g4u)_#0~tqeK8qzYPHHc_14X97xa+N=kJ};NB$pO`B<2K3Rz)-Ny~G1 z*>MFZv5vy7Z#JYPHzw;RwTZ0A7u)>9$SzT2$t+X1j0!Ti5WmOLRaa9?|!4JdBuK_RXb#0tl>