You can subscribe to this list here.
2002 |
Jan
(2) |
Feb
(30) |
Mar
(17) |
Apr
(34) |
May
(25) |
Jun
(13) |
Jul
(20) |
Aug
(22) |
Sep
(39) |
Oct
(8) |
Nov
(20) |
Dec
(27) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(43) |
Feb
(18) |
Mar
(6) |
Apr
(78) |
May
(27) |
Jun
(23) |
Jul
(31) |
Aug
(14) |
Sep
(49) |
Oct
(2) |
Nov
(2) |
Dec
(38) |
2004 |
Jan
(52) |
Feb
(7) |
Mar
(15) |
Apr
(46) |
May
(27) |
Jun
(42) |
Jul
(31) |
Aug
(16) |
Sep
(42) |
Oct
(69) |
Nov
(75) |
Dec
(26) |
2005 |
Jan
(18) |
Feb
(18) |
Mar
(13) |
Apr
(3) |
May
(3) |
Jun
(6) |
Jul
(22) |
Aug
(6) |
Sep
(6) |
Oct
(24) |
Nov
(8) |
Dec
(23) |
2006 |
Jan
(24) |
Feb
(8) |
Mar
(16) |
Apr
|
May
(16) |
Jun
(9) |
Jul
|
Aug
(7) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(9) |
2007 |
Jan
(62) |
Feb
(16) |
Mar
(19) |
Apr
(17) |
May
(15) |
Jun
(16) |
Jul
(16) |
Aug
(2) |
Sep
|
Oct
(5) |
Nov
(8) |
Dec
(2) |
2008 |
Jan
(2) |
Feb
(6) |
Mar
(3) |
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
|
Sep
(12) |
Oct
(7) |
Nov
(2) |
Dec
|
2009 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
(1) |
Sep
(4) |
Oct
|
Nov
(1) |
Dec
|
From: Maël Hörz <ma...@us...> - 2007-12-24 14:05:04
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv28134 Modified Files: Tag: Unicode_2004_08_31 SynUnicode.pas Log Message: Added option WithBOM Index: SynUnicode.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/Attic/SynUnicode.pas,v retrieving revision 1.1.2.32 retrieving revision 1.1.2.33 diff -u -d -r1.1.2.32 -r1.1.2.33 --- SynUnicode.pas 23 Jan 2007 08:20:44 -0000 1.1.2.32 +++ SynUnicode.pas 24 Dec 2007 14:04:58 -0000 1.1.2.33 @@ -355,26 +355,26 @@ function WideFileCreate(const FileName: WideString; Rights: Integer): Integer; overload; function IsAnsiOnly(const WS: WideString): Boolean; -function IsUTF8(Stream: TStream): Boolean; overload; -function IsUTF8(const FileName: WideString): Boolean; overload; -function GetEncoding(const FileName: WideString): TSynEncoding; overload; -function GetEncoding(Stream: TStream): TSynEncoding; overload; +function IsUTF8(Stream: TStream; out WithBOM: Boolean): Boolean; overload; +function IsUTF8(const FileName: WideString; out WithBOM: Boolean): Boolean; overload; +function GetEncoding(const FileName: WideString; out WithBOM: Boolean): TSynEncoding; overload; +function GetEncoding(Stream: TStream; out WithBOM: Boolean): TSynEncoding; overload; procedure SaveToFile(const WS: WideString; const FileName: WideString; Encoding: TSynEncoding; WithBom: Boolean = True); overload; procedure SaveToFile(WideStrings: TWideStrings; const FileName: WideString; Encoding: TSynEncoding; WithBom: Boolean = True); overload; -function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString): - TSynEncoding; overload; function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString; - Encoding: TSynEncoding): TSynEncoding; overload; + out WithBOM: Boolean): TSynEncoding; overload; +function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString; + Encoding: TSynEncoding; out WithBOM: Boolean): TSynEncoding; overload; procedure SaveToStream(const WS: WideString; Stream: TStream; Encoding: TSynEncoding; WithBom: Boolean = True); overload; procedure SaveToStream(WideStrings: TWideStrings; Stream: TStream; Encoding: TSynEncoding; WithBom: Boolean = True); overload; -function LoadFromStream(WideStrings: TWideStrings; Stream: TStream): - TSynEncoding; overload; function LoadFromStream(WideStrings: TWideStrings; Stream: TStream; - Encoding: TSynEncoding): TSynEncoding; overload; + out WithBOM: Boolean): TSynEncoding; overload; +function LoadFromStream(WideStrings: TWideStrings; Stream: TStream; + Encoding: TSynEncoding; out WithBOM: Boolean): TSynEncoding; overload; function ClipboardProvidesText: Boolean; function GetClipboardText: WideString; @@ -2557,13 +2557,13 @@ end; {$ENDIF} -function IsUTF8(const FileName: WideString): Boolean; +function IsUTF8(const FileName: WideString; out WithBOM: Boolean): Boolean; var Stream: TStream; begin Stream := TWideFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try - Result := IsUTF8(Stream); + Result := IsUTF8(Stream, WithBOM); finally Stream.Free; end; @@ -2571,7 +2571,7 @@ // checks for a BOM in UTF-8 format or searches the first 4096 bytes for // typical UTF-8 octet sequences -function IsUTF8(Stream: TStream): Boolean; +function IsUTF8(Stream: TStream; out WithBOM: Boolean): Boolean; const MinimumCountOfUTF8Strings = 1; MaxBufferSize = $4000; @@ -2604,6 +2604,7 @@ // if no special characteristics are found it is not UTF-8 Result := False; + WithBOM := False; if BufferSize > 0 then begin @@ -2615,6 +2616,7 @@ if (BufferSize >= Length(UTF8BOM)) and CompareMem(@Buffer[0], @UTF8BOM[0], Length(UTF8BOM)) then begin + WithBOM := True; Result := True; Exit; end; @@ -2698,19 +2700,19 @@ end; end; -function GetEncoding(const FileName: WideString): TSynEncoding; +function GetEncoding(const FileName: WideString; out WithBOM: Boolean): TSynEncoding; var Stream: TStream; begin Stream := TWideFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try - Result := GetEncoding(Stream); + Result := GetEncoding(Stream, WithBOM); finally Stream.Free; end; end; -function GetEncoding(Stream: TStream): TSynEncoding; +function GetEncoding(Stream: TStream; out WithBOM: Boolean): TSynEncoding; var BOM: WideChar; Size: Integer; @@ -2724,7 +2726,7 @@ // if no special characteristics are found it is probably ANSI Result := seAnsi; - if IsUTF8(Stream) then + if IsUTF8(Stream, WithBOM) then begin Result := seUTF8; Exit; @@ -2739,11 +2741,13 @@ if BOM = WideChar(UTF16BOMLE) then begin Result := seUTF16LE; + WithBOM := True; Exit; end else if BOM = WideChar(UTF16BOMBE) then begin Result := seUTF16BE; + WithBOM := True; Exit; end end; @@ -2775,26 +2779,27 @@ end; end; -function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString): TSynEncoding; +function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString; + out WithBOM: Boolean): TSynEncoding; var Stream: TStream; begin Stream := TWideFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try - Result := LoadFromStream(WideStrings, Stream); + Result := LoadFromStream(WideStrings, Stream, WithBOM); finally Stream.Free; end; end; function LoadFromFile(WideStrings: TWideStrings; const FileName: WideString; - Encoding: TSynEncoding): TSynEncoding; + Encoding: TSynEncoding; out WithBOM: Boolean): TSynEncoding; var Stream: TStream; begin Stream := TWideFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try - Result := LoadFromStream(WideStrings, Stream, Encoding); + Result := LoadFromStream(WideStrings, Stream, Encoding, WithBOM); finally Stream.Free; end; @@ -2879,47 +2884,61 @@ SaveToStream(SText, Stream, Encoding, WithBom); end; -function LoadFromStream(WideStrings: TWideStrings; Stream: TStream): TSynEncoding; +function LoadFromStream(WideStrings: TWideStrings; Stream: TStream; + out WithBOM: Boolean): TSynEncoding; +var + Dummy: Boolean; begin - Result := LoadFromStream(WideStrings, Stream, GetEncoding(Stream)); + Result := LoadFromStream(WideStrings, Stream, GetEncoding(Stream, WithBOM), + Dummy); end; function LoadFromStream(WideStrings: TWideStrings; Stream: TStream; - Encoding: TSynEncoding): TSynEncoding; + Encoding: TSynEncoding; out WithBOM: Boolean): TSynEncoding; var WideStr: WideString; UTF8Str: UTF8String; AnsiStr: AnsiString; Size: Integer; - procedure SkipBOM; + function SkipBOM: Boolean; var BOM: array of Byte; begin + Result := False; case Encoding of seUTF8: begin SetLength(BOM, Min(Length(UTF8BOM), Size)); Stream.ReadBuffer(BOM[0], Length(BOM)); if (Length(BOM) <> Length(UTF8BOM)) or - not CompareMem(@BOM[0], @UTF8BOM[0], Length(UTF8BOM)) then - Stream.Seek(-Length(BOM), soFromCurrent); + not CompareMem(@BOM[0], @UTF8BOM[0], Length(UTF8BOM)) + then + Stream.Seek(-Length(BOM), soFromCurrent) + else + Result := True; end; seUTF16LE: begin SetLength(BOM, Min(Length(UTF16BOMLE), Size)); Stream.ReadBuffer(BOM[0], Length(BOM)); if (Length(BOM) <> Length(UTF16BOMLE)) or - not CompareMem(@BOM[0], @UTF16BOMLE[0], Length(UTF16BOMLE)) then - Stream.Seek(-Length(BOM), soFromCurrent); + not CompareMem(@BOM[0], @UTF16BOMLE[0], Length(UTF16BOMLE)) + then + Stream.Seek(-Length(BOM), soFromCurrent) + else + Result := True; end; seUTF16BE: begin SetLength(BOM, Min(Length(UTF16BOMBE), Size)); Stream.ReadBuffer(BOM[0], Length(BOM)); if (Length(BOM) <> Length(UTF16BOMBE)) or - not CompareMem(@BOM[0], @UTF16BOMBE[0], Length(UTF16BOMBE)) then - Stream.Seek(-Length(BOM), soFromCurrent); + not CompareMem(@BOM[0], @UTF16BOMBE[0], Length(UTF16BOMBE)) + then + Stream.Seek(-Length(BOM), soFromCurrent) + else + Result := True; end; end; Size := Stream.Size - Stream.Position; @@ -2935,7 +2954,7 @@ Size := Stream.Size - Stream.Position; // skip BOM, if it exists - SkipBOM; + WithBOM := SkipBOM; case Result of seUTF8: |
From: Maël Hörz <ma...@us...> - 2007-12-24 14:00:08
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24492/Source Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas SynEditHighlighter.pas SynEditPrint.pas SynHighlighterMulti.pas Log Message: Typos Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.70 retrieving revision 1.386.2.71 diff -u -d -r1.386.2.70 -r1.386.2.71 --- SynEdit.pas 18 Nov 2007 14:35:29 -0000 1.386.2.70 +++ SynEdit.pas 24 Dec 2007 13:59:56 -0000 1.386.2.71 @@ -3385,7 +3385,7 @@ nLine: Integer; // line index for the loop cRow: Integer; sLine: WideString; // the current line (tab expanded) - sLineExpandedAtWideGlyhs: WideString; + sLineExpandedAtWideGlyphs: WideString; sToken: WideString; // highlighter token info nTokenPos, nTokenLen: Integer; attr: TSynHighlighterAttributes; @@ -3410,7 +3410,7 @@ for nLine := vFirstLine to vLastLine do begin sLine := TSynEditStringList(Lines).ExpandedStrings[nLine - 1]; - sLineExpandedAtWideGlyhs := ExpandAtWideGlyphs(sLine); + sLineExpandedAtWideGlyphs := ExpandAtWideGlyphs(sLine); // determine whether will be painted with ActiveLineColor bCurrentLine := CaretY = nLine; // Initialize the text and background colors, maybe the line should @@ -3507,10 +3507,10 @@ begin // Remove text already displayed (in previous rows) if (vFirstChar <> FirstCol) or (vLastChar <> LastCol) then - sToken := Copy(sLineExpandedAtWideGlyhs, vFirstChar, vLastChar - vFirstChar) + sToken := Copy(sLineExpandedAtWideGlyphs, vFirstChar, vLastChar - vFirstChar) else - sToken := Copy(sLineExpandedAtWideGlyhs, 1, vLastChar); - if fShowSpecChar and (Length(sLineExpandedAtWideGlyhs) < vLastChar) then + sToken := Copy(sLineExpandedAtWideGlyphs, 1, vLastChar); + if fShowSpecChar and (Length(sLineExpandedAtWideGlyphs) < vLastChar) then sToken := sToken + SynLineBreakGlyph; nTokenLen := Length(sToken); if bComplexLine then @@ -3542,7 +3542,7 @@ fHighlighter.ResetRange else fHighlighter.SetRange(TSynEditStringList(Lines).Ranges[nLine - 2]); - fHighlighter.SetLineExpandedAtWideGlyhs(sLine, sLineExpandedAtWideGlyhs, + fHighlighter.SetLineExpandedAtWideGlyphs(sLine, sLineExpandedAtWideGlyphs, nLine - 1); // Try to concatenate as many tokens as possible to minimize the count // of ExtTextOutW calls necessary. This depends on the selection state Index: SynEditPrint.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditPrint.pas,v retrieving revision 1.34.2.9 retrieving revision 1.34.2.10 diff -u -d -r1.34.2.9 -r1.34.2.10 --- SynEditPrint.pas 21 May 2006 11:59:34 -0000 1.34.2.9 +++ SynEditPrint.pas 24 Dec 2007 13:59:57 -0000 1.34.2.10 @@ -682,7 +682,7 @@ i, WrapPos, OldWrapPos: Integer; Lines: TWideStringList; ClipRect: TRect; - sLine, sLineExpandedAtWideGlyhs: WideString; + sLine, sLineExpandedAtWideGlyphs: WideString; ExpandedPos: Integer; {$IFNDEF SYN_CLX} @@ -747,8 +747,8 @@ SaveCurrentFont; FHighlighter.SetRange(FLines.Objects[FLineNumber - 1]); sLine := Text; - sLineExpandedAtWideGlyhs := ExpandAtWideGlyphs(sLine); - FHighlighter.SetLineExpandedAtWideGlyhs(sLine, sLineExpandedAtWideGlyhs, FLineNumber); + sLineExpandedAtWideGlyphs := ExpandAtWideGlyphs(sLine); + FHighlighter.SetLineExpandedAtWideGlyphs(sLine, sLineExpandedAtWideGlyphs, FLineNumber); Token := ''; TokenStart := 0; Index: SynEditHighlighter.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditHighlighter.pas,v retrieving revision 1.36.2.15 retrieving revision 1.36.2.16 diff -u -d -r1.36.2.15 -r1.36.2.16 --- SynEditHighlighter.pas 25 Jun 2006 18:44:50 -0000 1.36.2.15 +++ SynEditHighlighter.pas 24 Dec 2007 13:59:57 -0000 1.36.2.16 @@ -193,7 +193,7 @@ procedure Next; virtual; procedure NextToEol; function PosToExpandedPos(Pos: Integer): Integer; - procedure SetLineExpandedAtWideGlyhs(const Line, ExpandedLine: WideString; + procedure SetLineExpandedAtWideGlyphs(const Line, ExpandedLine: WideString; LineNumber: Integer); virtual; procedure SetLine(const Value: WideString; LineNumber: Integer); virtual; procedure SetRange(Value: Pointer); virtual; @@ -1149,7 +1149,7 @@ end; end; -procedure TSynCustomHighlighter.SetLineExpandedAtWideGlyhs(const Line, +procedure TSynCustomHighlighter.SetLineExpandedAtWideGlyphs(const Line, ExpandedLine: WideString; LineNumber: Integer); begin fExpandedLineStr := ExpandedLine; Index: SynHighlighterMulti.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynHighlighterMulti.pas,v retrieving revision 1.34.2.9 retrieving revision 1.34.2.10 diff -u -d -r1.34.2.9 -r1.34.2.10 --- SynHighlighterMulti.pas 25 Jun 2006 18:44:50 -0000 1.34.2.9 +++ SynHighlighterMulti.pas 24 Dec 2007 13:59:57 -0000 1.34.2.10 @@ -556,7 +556,7 @@ else ExpandedTmpLine := Copy(fExpandedLineStr, 1, PosToExpandedPos(Markers[fNextMarker].fStartPos - 1)); - iHL.SetLineExpandedAtWideGlyhs(TmpLine, ExpandedTmpLine, fLineNumber); + iHL.SetLineExpandedAtWideGlyphs(TmpLine, ExpandedTmpLine, fLineNumber); end else iHL.SetLine(TmpLine, fLineNumber); @@ -588,7 +588,7 @@ else ExpandedTmpLine := Copy(fExpandedLineStr, ExpandedRun + 1, MaxInt); - iHL.SetLineExpandedAtWideGlyhs(TmpLine, ExpandedTmpLine, fLineNumber); + iHL.SetLineExpandedAtWideGlyphs(TmpLine, ExpandedTmpLine, fLineNumber); end else iHL.SetLine(TmpLine, fLineNumber); |
From: Flávio E. <et...@us...> - 2007-11-20 09:39:50
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv8330 Modified Files: Tag: UtterUnstable SynEdit.pas Log Message: Fix editor repaint/invalidation when Gutter.Visible is toggled. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.389.2.98 retrieving revision 1.389.2.99 diff -u -d -r1.389.2.98 -r1.389.2.99 --- SynEdit.pas 16 Nov 2007 21:26:15 -0000 1.389.2.98 +++ SynEdit.pas 20 Nov 2007 09:39:43 -0000 1.389.2.99 @@ -3358,6 +3358,7 @@ fGutterWidth := Value; fTextOffset := fGutterWidth + 2 - (LeftChar - 1) * fCharWidth; SizeOrFontChanged(False); + Invalidate; end; end; |
From: Maël Hörz <ma...@us...> - 2007-11-18 14:35:34
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv10671/Source Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas Log Message: Fix: [ 1771491 ] Bug in TCustomSynEdit.CaretInView Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.69 retrieving revision 1.386.2.70 diff -u -d -r1.386.2.69 -r1.386.2.70 --- SynEdit.pas 18 Nov 2007 14:07:27 -0000 1.386.2.69 +++ SynEdit.pas 18 Nov 2007 14:35:29 -0000 1.386.2.70 @@ -4079,9 +4079,9 @@ begin vCaretRowCol := DisplayXY; Result := (vCaretRowCol.Column >= LeftChar) - and (vCaretRowCol.Column < LeftChar + CharsInWindow) + and (vCaretRowCol.Column <= LeftChar + CharsInWindow) and (vCaretRowCol.Row >= TopLine) - and (vCaretRowCol.Row < TopLine + LinesInWindow); + and (vCaretRowCol.Row <= TopLine + LinesInWindow); end; procedure TCustomSynEdit.SetActiveLineColor(Value: TColor); |
From: Maël Hörz <ma...@us...> - 2007-11-18 14:34:02
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv9913/Source Modified Files: SynEdit.pas Log Message: Fix: [ 1771491 ] Bug in TCustomSynEdit.CaretInView Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.457 retrieving revision 1.458 diff -u -d -r1.457 -r1.458 --- SynEdit.pas 14 Mar 2007 04:58:08 -0000 1.457 +++ SynEdit.pas 18 Nov 2007 14:33:53 -0000 1.458 @@ -3863,7 +3863,7 @@ Result := (vCaretRowCol.Column >= LeftChar) and (vCaretRowCol.Column <= LeftChar + CharsInWindow) and (vCaretRowCol.Row >= TopLine) - and (vCaretRowCol.Column <= TopLine + LinesInWindow); + and (vCaretRowCol.Row <= TopLine + LinesInWindow); end; procedure TCustomSynEdit.SetActiveLineColor(Value: TColor); @@ -10279,4 +10279,4 @@ {$ELSE} SynEditClipboardFormat := RegisterClipboardFormat(SYNEDIT_CLIPBOARD_FORMAT); {$ENDIF} -end. \ No newline at end of file +end. |
From: Maël Hörz <ma...@us...> - 2007-11-18 14:07:38
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv31964/Source Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas Log Message: Fix: Logic in TCustomSynEdit.ExecuteAction was strange and didn't compile. Chose what seems to be the most sensible. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.68 retrieving revision 1.386.2.69 diff -u -d -r1.386.2.68 -r1.386.2.69 --- SynEdit.pas 5 Nov 2007 15:38:02 -0000 1.386.2.68 +++ SynEdit.pas 18 Nov 2007 14:07:27 -0000 1.386.2.69 @@ -9586,20 +9586,23 @@ PasteFromClipboard {$IFDEF SYN_COMPILER_5_UP} else if Action is TEditDelete then + begin if SelAvail then ClearSelection else CommandProcessor(ecDeleteChar, ' ', nil) + end {$IFDEF SYN_CLX} {$ELSE} - else if Action is TEditUndo then - Undo + else if Action is TEditUndo then + Undo {$ENDIF} - else if Action is TEditSelectAll then - SelectAll; + else if Action is TEditSelectAll then + SelectAll; {$ENDIF} -{$IFDEF SYN_COMPILER_6_UP} + end end +{$IFDEF SYN_COMPILER_6_UP} else if Action is TSearchAction then begin Result := Focused; @@ -9610,8 +9613,8 @@ else if Action is TSearchReplace then DoSearchReplaceExecute(TSearchReplace(Action)); end - else if Action is TSearchFindNext then - begin + else if Action is TSearchFindNext then + begin Result := Focused; DoSearchFindNextExecute(TSearchFindNext(Action)) {$ENDIF} |
From: Flávio E. <et...@us...> - 2007-11-16 21:26:19
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv740 Modified Files: Tag: UtterUnstable SynEdit.pas Log Message: Fix Range Check exception when searching with Lines.Count = 0. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.389.2.97 retrieving revision 1.389.2.98 diff -u -d -r1.389.2.97 -r1.389.2.98 --- SynEdit.pas 4 Oct 2007 04:58:40 -0000 1.389.2.97 +++ SynEdit.pas 16 Nov 2007 21:26:15 -0000 1.389.2.98 @@ -5678,7 +5678,7 @@ Result := 0; // can't search for or replace an empty string - if Length(ASearch) = 0 then exit; + if (Length(ASearch) = 0) or (Lines.Count = 0) then exit; // get the text range to search in, ignore the "Search in selection only" // option if nothing is selected bBackward := (ssoBackwards in AOptions); |
From: Flávio E. <et...@us...> - 2007-11-05 15:39:07
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv2652 Modified Files: Tag: SynEdit_2_0_x SynEdit.pas Log Message: Fix CaretInView to return false when CaretX = LeftChar + CharsInWindow or CaretY = TopChar + LinesInWindow. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.457.2.13 retrieving revision 1.457.2.14 diff -u -d -r1.457.2.13 -r1.457.2.14 --- SynEdit.pas 21 Aug 2007 00:21:46 -0000 1.457.2.13 +++ SynEdit.pas 5 Nov 2007 15:39:02 -0000 1.457.2.14 @@ -3883,9 +3883,9 @@ begin vCaretRowCol := DisplayXY; Result := (vCaretRowCol.Column >= LeftChar) - and (vCaretRowCol.Column <= LeftChar + CharsInWindow) + and (vCaretRowCol.Column < LeftChar + CharsInWindow) and (vCaretRowCol.Row >= TopLine) - and (vCaretRowCol.Row <= TopLine + LinesInWindow); + and (vCaretRowCol.Row < TopLine + LinesInWindow); end; procedure TCustomSynEdit.SetActiveLineColor(Value: TColor); |
From: Flávio E. <et...@us...> - 2007-11-05 15:38:06
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv2249 Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas Log Message: Fix [ 1771491 ] Bug in TCustomSynEdit.CaretInView. Also fix to return false when CaretX = LeftChar + CharsInWindow or CaretY = TopChar + LinesInWindow. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.67 retrieving revision 1.386.2.68 diff -u -d -r1.386.2.67 -r1.386.2.68 --- SynEdit.pas 1 Nov 2007 15:59:59 -0000 1.386.2.67 +++ SynEdit.pas 5 Nov 2007 15:38:02 -0000 1.386.2.68 @@ -4079,9 +4079,9 @@ begin vCaretRowCol := DisplayXY; Result := (vCaretRowCol.Column >= LeftChar) - and (vCaretRowCol.Column <= LeftChar + CharsInWindow) + and (vCaretRowCol.Column < LeftChar + CharsInWindow) and (vCaretRowCol.Row >= TopLine) - and (vCaretRowCol.Column <= TopLine + LinesInWindow); + and (vCaretRowCol.Row < TopLine + LinesInWindow); end; procedure TCustomSynEdit.SetActiveLineColor(Value: TColor); |
From: Flávio E. <et...@us...> - 2007-11-01 16:00:06
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15582 Modified Files: Tag: Unicode_2004_08_31 SynEdit.pas Log Message: Fix bug in TCustomSynEdit.ExecuteAction. Fix by Nils Hoyer. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.386.2.66 retrieving revision 1.386.2.67 diff -u -d -r1.386.2.66 -r1.386.2.67 --- SynEdit.pas 20 Jun 2007 22:12:22 -0000 1.386.2.66 +++ SynEdit.pas 1 Nov 2007 15:59:59 -0000 1.386.2.67 @@ -9590,7 +9590,6 @@ ClearSelection else CommandProcessor(ecDeleteChar, ' ', nil) - end {$IFDEF SYN_CLX} {$ELSE} else if Action is TEditUndo then |
From: Flávio E. <et...@us...> - 2007-10-04 04:58:48
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv10998 Modified Files: Tag: UtterUnstable SynEdit.pas Log Message: Optional parameter 'p_VisibleOnly' in GetAttribAtRowCol to optimise bracket highlighting. Better semantics would be nice... :-$ Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.389.2.96 retrieving revision 1.389.2.97 diff -u -d -r1.389.2.96 -r1.389.2.97 --- SynEdit.pas 11 Jul 2007 22:56:54 -0000 1.389.2.96 +++ SynEdit.pas 4 Oct 2007 04:58:40 -0000 1.389.2.97 @@ -494,7 +494,7 @@ procedure FindMatchingBracket; virtual; function GetMatchingBracket(out aMatchPos: TBufferCoord): Boolean; virtual; function GetMatchingBracketEx(const p_BracketPos: TBufferCoord; - out p_MatchPos: TBufferCoord): Boolean; virtual; + out p_MatchPos: TBufferCoord; p_VisibleOnly: Boolean = False): Boolean; virtual; {$IFDEF SYN_COMPILER_4_UP} function UpdateAction(Action: TBasicAction): boolean; override; function ExecuteAction(Action: TBasicAction): boolean; override; @@ -5052,7 +5052,6 @@ procedure TCustomSynEdit.EnsureCursorPosVisibleEx(ForceToMiddle: Boolean); var - TmpMiddle: Integer; v_CaretPos: TDisplayCoord; v_BlockEndPos: TDisplayCoord; begin @@ -6376,11 +6375,12 @@ function TCustomSynEdit.GetMatchingBracket(out aMatchPos: TBufferCoord): Boolean; begin - Result := GetMatchingBracketEx(CaretXY, aMatchPos ); + Result := GetMatchingBracketEx(CaretXY, aMatchPos, False); end; function TCustomSynEdit.GetMatchingBracketEx( - const p_BracketPos: TBufferCoord; out p_MatchPos: TBufferCoord): Boolean; + const p_BracketPos: TBufferCoord; out p_MatchPos: TBufferCoord; + p_VisibleOnly: Boolean): Boolean; const Brackets: array[0..7] of char = ('(', ')', '[', ']', '{', '}', '<', '>'); var @@ -6392,6 +6392,7 @@ attr:TSynHighlighterAttributes; p: TBufferCoord; isCommentOrString:boolean; + v_EndLine: Integer; begin // get char at caret PosX := p_BracketPos.Char; @@ -6411,6 +6412,10 @@ NumBrackets := 1; if Odd(i) then begin + if not p_VisibleOnly then + v_EndLine := 1 + else + v_EndLine := RowToLine(TopLine); repeat // search until start of line while PosX > 1 do @@ -6448,13 +6453,17 @@ end; end; // get previous line if possible - if PosY = 1 then break; + if PosY <= v_EndLine then break; Dec(PosY); Line := Lines[PosY - 1]; PosX := Length(Line) + 1; until FALSE; end else begin + if not p_VisibleOnly then + v_EndLine := Lines.Count + else + v_EndLine := RowToLine(TopLine + LinesInWindow); repeat // search until end of line Len := Length(Line); @@ -6493,7 +6502,7 @@ end; end; // get next line if possible - if PosY = Lines.Count then + if PosY >= v_EndLine then Break; Inc(PosY); Line := Lines[PosY - 1]; |
From: Flávio E. <et...@us...> - 2007-10-04 04:14:25
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv26147 Modified Files: Tag: UtterUnstable SynEditBasicActions.pas Log Message: Additional DoPaintTransient calls to help/fix bracket highlighting. This whole PaintTransient thing is nuts but there's no other way right now :-/ Index: SynEditBasicActions.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/Attic/SynEditBasicActions.pas,v retrieving revision 1.1.2.10 retrieving revision 1.1.2.11 diff -u -d -r1.1.2.10 -r1.1.2.11 --- SynEditBasicActions.pas 11 Jun 2007 23:52:15 -0000 1.1.2.10 +++ SynEditBasicActions.pas 4 Oct 2007 04:14:23 -0000 1.1.2.11 @@ -1218,6 +1218,7 @@ ecInsertLine, ecLineBreak: if not ReadOnly then begin + DoOnPaintTransientEx(ttBefore, True); UndoList.BeginBlock; try if SelAvail then @@ -1312,6 +1313,7 @@ finally UndoList.EndBlock; end; + DoOnPaintTransientEx(ttAfter, True); end; ecTab: if not ReadOnly then DoTabKey; @@ -1323,9 +1325,9 @@ // #127 is Ctrl + Backspace, #32 is space if not ReadOnly and (AChar >= #32) and (AChar <> #127) then begin - DoOnPaintTransient(ttBefore); + DoOnPaintTransientEx(ttBefore, True); SelText := AChar; - DoOnPaintTransient(ttAfter); + DoOnPaintTransientEx(ttAfter, True); end; ecUpperCase, ecLowerCase, |
From: Flávio E. <et...@us...> - 2007-10-04 04:06:26
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv23017 Modified Files: Tag: UtterUnstable SynTextDrawer.pas Log Message: Fix warnings for FPC. Index: SynTextDrawer.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynTextDrawer.pas,v retrieving revision 1.6.4.6 retrieving revision 1.6.4.7 diff -u -d -r1.6.4.6 -r1.6.4.7 --- SynTextDrawer.pas 26 Jan 2007 17:54:56 -0000 1.6.4.6 +++ SynTextDrawer.pas 4 Oct 2007 04:06:23 -0000 1.6.4.7 @@ -1256,7 +1256,7 @@ begin SetTextCharacterExtra(StockDC, FCharExtra + FCrntDx); {$IFDEF FPC} - Len := PtrInt(pRun) - PtrInt(pCrnt); + Len := PtrUInt(pRun) - PtrUInt(pCrnt); {$ELSE} Len := Integer(pRun) - Integer(pCrnt); {$ENDIF} @@ -1280,7 +1280,7 @@ GetDBCharRange; SetTextCharacterExtra(StockDC, FCharExtra + FCrntDBDx); {$IFDEF FPC} - Len := PtrInt(pRun) - PtrInt(pCrnt); + Len := PtrUInt(pRun) - PtrUInt(pCrnt); {$ELSE} Len := Integer(pRun) - Integer(pCrnt); {$ENDIF} |
From: Flávio E. <et...@us...> - 2007-10-04 04:05:47
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv22634 Modified Files: Tag: UtterUnstable SynEditKeyCmdEditor.pas Log Message: Fix inclusion of DFM for Delphi. Index: SynEditKeyCmdEditor.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditKeyCmdEditor.pas,v retrieving revision 1.10.4.1 retrieving revision 1.10.4.2 diff -u -d -r1.10.4.1 -r1.10.4.2 --- SynEditKeyCmdEditor.pas 27 Jan 2007 06:19:37 -0000 1.10.4.1 +++ SynEditKeyCmdEditor.pas 4 Oct 2007 04:05:43 -0000 1.10.4.2 @@ -119,6 +119,9 @@ implementation +{$IFNDEF SYN_LAZARUS} +{$R *.dfm} +{$ENDIF} { TSynEditKeystrokeEditorForm } |
From: Flávio E. <et...@us...> - 2007-10-04 04:05:15
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv22592 Modified Files: Tag: UtterUnstable SynEditKeyCmdsEditor.pas Log Message: Fix inclusion of DFM for Delphi. Index: SynEditKeyCmdsEditor.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEditKeyCmdsEditor.pas,v retrieving revision 1.10.4.1 retrieving revision 1.10.4.2 diff -u -d -r1.10.4.1 -r1.10.4.2 --- SynEditKeyCmdsEditor.pas 27 Jan 2007 06:19:37 -0000 1.10.4.1 +++ SynEditKeyCmdsEditor.pas 4 Oct 2007 04:05:12 -0000 1.10.4.2 @@ -122,6 +122,9 @@ implementation +{$IFNDEF SYN_LAZARUS} +{$R *.dfm} +{$ENDIF} uses {$IFDEF SYN_CLX} |
From: Flávio E. <et...@us...> - 2007-08-21 00:21:49
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7693 Modified Files: Tag: SynEdit_2_0_x SynEdit.pas Log Message: FIX: [ 1771491 ] Bug in TCustomSynEdit.CaretInView Fix by Michal Trybulec. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.457.2.12 retrieving revision 1.457.2.13 diff -u -d -r1.457.2.12 -r1.457.2.13 --- SynEdit.pas 11 Jul 2007 22:41:34 -0000 1.457.2.12 +++ SynEdit.pas 21 Aug 2007 00:21:46 -0000 1.457.2.13 @@ -3885,7 +3885,7 @@ Result := (vCaretRowCol.Column >= LeftChar) and (vCaretRowCol.Column <= LeftChar + CharsInWindow) and (vCaretRowCol.Row >= TopLine) - and (vCaretRowCol.Column <= TopLine + LinesInWindow); + and (vCaretRowCol.Row <= TopLine + LinesInWindow); end; procedure TCustomSynEdit.SetActiveLineColor(Value: TColor); |
From: Flávio E. <et...@us...> - 2007-08-21 00:08:43
|
Update of /cvsroot/synedit/SynEdit In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv4192 Modified Files: Tag: SynEdit_2_0_x Readme.txt Log Message: Bump release number. Index: Readme.txt =================================================================== RCS file: /cvsroot/synedit/SynEdit/Readme.txt,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -d -r1.7 -r1.7.2.1 --- Readme.txt 14 Mar 2007 05:40:59 -0000 1.7 +++ Readme.txt 21 Aug 2007 00:08:40 -0000 1.7.2.1 @@ -1,4 +1,4 @@ -This is version 2.0.5 of the SynEdit project. +This is version 2.0.6 of the SynEdit project. SynEdit has been started as an attempt to continue the no longer maintained sources of the mwEdit project. The last public version 0.92a of mwEdit can be |
From: Maël Hörz <ma...@us...> - 2007-07-13 17:38:45
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv12407/Source Modified Files: Tag: Unicode_2004_08_31 SynCompletionProposal.pas Log Message: Fixed Bug: [ 1748299 ] FastMM4 & CompletionProposal - Invalid Pointer Operation Index: SynCompletionProposal.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynCompletionProposal.pas,v retrieving revision 1.73.2.8 retrieving revision 1.73.2.9 diff -u -d -r1.73.2.8 -r1.73.2.9 --- SynCompletionProposal.pas 21 May 2006 11:59:34 -0000 1.73.2.8 +++ SynCompletionProposal.pas 13 Jul 2007 17:38:41 -0000 1.73.2.9 @@ -1364,13 +1364,6 @@ Style := Style or WS_THICKFRAME else Style := Style or WS_DLGFRAME; - - if not (csDesigning in ComponentState) then - begin - // Necessary for unicode support, especially IME won't work else - if Win32Platform = VER_PLATFORM_WIN32_NT then - WindowClass.lpfnWndProc := @DefWindowProcW; - end; end; end; |
From: Maël Hörz <ma...@us...> - 2007-07-13 15:34:39
|
Update of /cvsroot/synedit/SynEdit/SynGen In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv29713/SynGen Removed Files: HashTableGen.dfm HashTableGen.pas Log Message: I added these files by mistake, they are only meant for the Unicode version of SynEdit. --- HashTableGen.pas DELETED --- --- HashTableGen.dfm DELETED --- |
From: Flávio E. <et...@us...> - 2007-07-11 22:59:54
|
Update of /cvsroot/synedit/SynEdit/Demos/OnPaintTransientDemo In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv8883 Modified Files: Tag: UtterUnstable Unit1.pas Log Message: Fix drawing of token over gutter. Index: Unit1.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Demos/OnPaintTransientDemo/Unit1.pas,v retrieving revision 1.5 retrieving revision 1.5.4.1 diff -u -d -r1.5 -r1.5.4.1 --- Unit1.pas 22 Jan 2004 01:44:28 -0000 1.5 +++ Unit1.pas 11 Jul 2007 22:59:50 -0000 1.5.4.1 @@ -123,13 +123,16 @@ if Editor.Canvas.Brush.Color = clNone then Editor.Canvas.Brush.Color := Editor.Color; - Editor.Canvas.TextOut(Pix.X, Pix.Y, S); + if Pix.X > Editor.GutterWidth then + begin + Editor.Canvas.TextOut(Pix.X, Pix.Y, S); + end; P := Editor.GetMatchingBracketEx(P); if (P.Char > 0) and (P.Line > 0) then begin Pix := CharToPixels(P); - if Pix.X > Editor.Gutter.Width then + if Pix.X > Editor.GutterWidth then begin if S = OpenChars[i] then Editor.Canvas.TextOut(Pix.X, Pix.Y, CloseChars[i]) |
From: Flávio E. <et...@us...> - 2007-07-11 22:57:01
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv7733 Modified Files: Tag: UtterUnstable SynEdit.pas Log Message: Fix by Alan Garny: fix off-by-one errors in EnsureCursorPos and simplify it. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.389.2.95 retrieving revision 1.389.2.96 diff -u -d -r1.389.2.95 -r1.389.2.96 --- SynEdit.pas 5 Jul 2007 02:30:24 -0000 1.389.2.95 +++ SynEdit.pas 11 Jul 2007 22:56:54 -0000 1.389.2.96 @@ -5084,22 +5084,14 @@ // Make sure Y is visible if ForceToMiddle then begin - if v_CaretPos.Row < TopLine then - begin - TmpMiddle := (LinesInWindow +1) div 2; - TopLine := v_CaretPos.Row - TmpMiddle; - end - else if v_CaretPos.Row > TopLine + LinesInWindow then - begin - TmpMiddle := (LinesInWindow +1) div 2; - TopLine := v_CaretPos.Row - LinesInWindow + TmpMiddle; - end; + if (v_CaretPos.Row < TopLine) or (v_CaretPos.Row > (TopLine + (LinesInWindow - 1))) then + TopLine := v_CaretPos.Row - (LinesInWindow - 1) div 2; end else begin if v_CaretPos.Row < TopLine then TopLine := v_CaretPos.Row - else if v_CaretPos.Row > TopLine + LinesInWindow -1 then - TopLine := v_CaretPos.Row - LinesInWindow +1 + else if v_CaretPos.Row > TopLine + (LinesInWindow - 1) then + TopLine := v_CaretPos.Row - (LinesInWindow - 1) else TopLine := TopLine; end; |
From: Flávio E. <et...@us...> - 2007-07-11 22:41:47
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv1651 Modified Files: Tag: SynEdit_2_0_x SynEdit.pas Log Message: Fix by Alan Garny: fix off-by-one errors in EnsureCursorPos and simplify it. Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.457.2.11 retrieving revision 1.457.2.12 diff -u -d -r1.457.2.11 -r1.457.2.12 --- SynEdit.pas 5 Jul 2007 02:26:00 -0000 1.457.2.11 +++ SynEdit.pas 11 Jul 2007 22:41:34 -0000 1.457.2.12 @@ -6373,7 +6373,6 @@ procedure TCustomSynEdit.EnsureCursorPosVisibleEx(ForceToMiddle: Boolean); var - TmpMiddle: Integer; VisibleX: Integer; vCaretRow: integer; begin @@ -6392,24 +6391,13 @@ vCaretRow := DisplayY; if ForceToMiddle then begin - if vCaretRow < (TopLine - 1) then - begin - TmpMiddle := LinesInWindow div 2; - if vCaretRow - TmpMiddle < 0 then - TopLine := 1 - else - TopLine := vCaretRow - TmpMiddle + 1; - end - else if vCaretRow > (TopLine + (LinesInWindow - 2)) then - begin - TmpMiddle := LinesInWindow div 2; - TopLine := vCaretRow - (LinesInWindow - 1) + TmpMiddle; - end; + if (vCaretRow < TopLine) or (vCaretRow > (TopLine + (LinesInWindow - 1))) then + TopLine := vCaretRow - (LinesInWindow - 1) div 2; end else begin if vCaretRow < TopLine then TopLine := vCaretRow - else if vCaretRow > TopLine + Max(1, LinesInWindow) - 1 then + else if vCaretRow > TopLine + (LinesInWindow - 1) then TopLine := vCaretRow - (LinesInWindow - 1) else TopLine := TopLine; |
From: Maël Hörz <ma...@us...> - 2007-07-08 16:56:55
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv25526/Source Modified Files: Tag: Unicode_2004_08_31 SynEdit.inc Log Message: Index: SynEdit.inc =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.inc,v retrieving revision 1.16.2.12 retrieving revision 1.16.2.13 diff -u -d -r1.16.2.12 -r1.16.2.13 --- SynEdit.inc 21 May 2006 12:57:55 -0000 1.16.2.12 +++ SynEdit.inc 8 Jul 2007 16:56:44 -0000 1.16.2.13 @@ -36,6 +36,8 @@ (* SYN_COMPILER_7_UP : Delphi 7, Kylix 3 or higher is the compiler. *) (* SYN_COMPILER_9 : Delphi 2005 is the compiler. *) (* SYN_COMPILER_9_UP : Delphi 2005 or higher is the compiler. *) +(* SYN_COMPILER_10 : Delphi 2006 is the compiler. *) +(* SYN_COMPILER_10_UP : Delphi 2006 or higher is the compiler. *) (* SYN_CPPB : Any version of C++Builder is being used. *) (* SYN_CPPB_1 : C++B v1.0x is being used. *) (* SYN_CPPB_3 : C++B v3.0x is being used. *) @@ -64,6 +66,8 @@ (* SYN_DELPHI_8_UP : Delphi 8 or higher is being used. *) (* SYN_DELPHI_2005 : Delphi 2005 is being used. *) (* SYN_DELPHI_2005_UP : Delphi 2005 or higher is being used. *) +(* SYN_DELPHI_2006 : Delphi 2006 is being used. *) +(* SYN_DELPHI_2006_UP : Delphi 2006 or higher is being used. *) (* SYN_KYLIX : Kylix 1.0 is being using. *) (* SYN_CLX : A CLX application is being created. *) (******************************************************************************) @@ -84,13 +88,8 @@ {$IFDEF VER180} {$DEFINE SYN_COMPILER_10} - {$IFNDEF BCB} {$DEFINE SYN_DELPHI} {$DEFINE SYN_DELPHI_2006} - {$ELSE} - {.$DEFINE SYN_CPPB} - {.$DEFINE SYN_CPPB_10} - {$ENDIF} {$ENDIF} {$IFDEF VER170} |
From: Maël Hörz <ma...@us...> - 2007-07-08 15:56:05
|
Update of /cvsroot/synedit/SynEdit/SynGen In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv1783/SynGen Added Files: HashTableGen.dfm HashTableGen.pas Log Message: --- NEW FILE: HashTableGen.pas --- unit HashTableGen; {$I SynEdit.inc} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TFrmHashTableGen = class(TForm) LabelParams: TLabel; LabelD: TLabel; LabelC: TLabel; LabelM: TLabel; Label1: TLabel; Label2: TLabel; LabelPercentage: TLabel; ProgressBar1: TProgressBar; EditD: TMemo; EditC: TMemo; EditM: TMemo; ButtonFindHash: TButton; procedure ButtonFindHashClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FKeyList: TList; public procedure AssignKeyWords(KeyList: TList; CaseSensitive: Boolean); function GetHashKeyFunctionSource(ClassName: string): string; function GetKeyWordConstantsSource(CaseSensitive: Boolean): string; function KeyIndicesCount: Integer; end; const MaxTableSize = 100000; type THashKeyList = class private FMaxHashKey: Integer; FHashKeys: array[0..MaxTableSize - 1] of Boolean; public function Add(HashKey: Integer): Boolean; procedure Clear; end; var FrmHashTableGen: TFrmHashTableGen; implementation {$R *.dfm} uses {$IFDEF SYN_COMPILER_6_UP} StrUtils, {$ENDIF} SynGenUnit, SynUnicode; {$I primenumbers.inc} var c, d, m: Cardinal; FinalC, FinalD, FinalM: Cardinal; searching: Boolean; KeyWords: array of WideString; HashKeyList: THashKeyList; {$Q-} function HashKey(const S: WideString): Cardinal; var i: Integer; begin Result := 0; for i := 1 to Length(S) do Result := Result * c + Ord(S[i]) * d; Result := Result mod m; end; {$Q+} {$Q-} function FinalHashKey(const S: WideString): Cardinal; var i: Integer; begin Result := 0; for i := 1 to Length(S) do Result := Result * FinalC + Ord(S[i]) * FinalD; Result := Result mod FinalM; end; {$Q+} procedure WordWrapAtCol80(Words, Result: TStrings; Indentation: Integer); var WrappedLines: TStringList; i: Integer; Line: string; begin WrappedLines := TStringList.Create; try i := 0; while i < Words.Count do begin Line := StringOfChar(' ', Indentation); while (i < Words.Count) and (Length(Line) + Length(Words[i]) <= 80) do begin Line := Line + Words[i] + ' '; inc(i); end; WrappedLines.Add(Line); end; Result.Assign(WrappedLines); finally WrappedLines.Free; end; end; { TFrmHashTableGen } procedure TFrmHashTableGen.FormCreate(Sender: TObject); begin HashKeyList := THashKeyList.Create; ProgressBar1.Max := 1000; end; procedure TFrmHashTableGen.FormDestroy(Sender: TObject); begin HashKeyList.Free; end; procedure TFrmHashTableGen.AssignKeyWords(KeyList: TList; CaseSensitive: Boolean); var i: Integer; KeyWordsList: TStringList; begin FKeyList := nil; SetLength(KeyWords, 0); HashKeyList.Clear; KeyWordsList := TStringList.Create; try KeyWordsList.Sorted := True; KeyWordsList.Duplicates := dupIgnore; for i := 0 to KeyList.Count - 1 do KeyWordsList.Add(TLexKeys(KeyList[i]).KeyName); SetLength(KeyWords, KeyWordsList.Count); if CaseSensitive then for i := 0 to KeyWordsList.Count - 1 do KeyWords[i] := KeyWordsList[i] else for i := 0 to KeyWordsList.Count - 1 do KeyWords[i] := SynWideLowerCase(KeyWordsList[i]); FKeyList := KeyList; finally KeyWordsList.Free; end; end; procedure TFrmHashTableGen.FormShow(Sender: TObject); begin c := 0; d := 0; m := 0; FinalC := 0; FinalD := 0; FinalM := 0; ProgressBar1.Position := 0; EditD.Lines.Text := '0'; EditC.Lines.Text := '0'; EditM.Lines.Text := '0'; LabelPercentage.Caption := '0%'; ButtonFindHash.SetFocus; ButtonFindHash.Caption := 'Find Hash Params'; end; procedure TFrmHashTableGen.FormClose(Sender: TObject; var Action: TCloseAction); var i: Integer; begin if Assigned(FKeyList) then begin for i := 0 to FKeyList.Count - 1 do with TLexKeys(FKeyList[i]) do begin Key := FinalHashKey(SynWideLowerCase(KeyName)); end; end; end; procedure TFrmHashTableGen.ButtonFindHashClick(Sender: TObject); var i, j: Integer; collided: Boolean; Key, smallestM: Cardinal; procedure SearchStop; begin ButtonFindHash.Caption := 'Find Hash Params'; searching := False; Close; if FinalM = 0 then raise Exception.Create('Cannot build the hashtable as no working hash parameters were found'); end; begin collided := False; if searching then begin SearchStop; Exit; end else begin ProgressBar1.Position := 0; LabelPercentage.Caption := '0%'; Application.ProcessMessages; if Length(KeyWords) = 0 then exit; searching := True; ButtonFindHash.Caption := 'Stop Search'; end; smallestM := MaxTableSize + 1; for d := 1 to 1000 do begin for c := 1 to 1000 do for j := 0 to High(PrimeNumbers) do begin m := PrimeNumbers[j]; if m >= smallestM then begin m := smallestM; Break; end; for i := Low(KeyWords) to High(KeyWords) do begin Key := HashKey(KeyWords[i]); collided := HashKeyList.Add(Key); if collided then begin HashKeyList.Clear; break; end; end; if not collided then begin smallestM := m; EditD.Lines.Text := IntToStr(d); EditC.Lines.Text := IntToStr(c); EditM.Lines.Text := IntToStr(m); FinalD := d; FinalC := c; FinalM := m; if m = Cardinal(Length(KeyWords)) then begin ProgressBar1.Position := ProgressBar1.Max; LabelPercentage.Caption := '100%'; SearchStop; Exit; end; break; // all the following solutions will only have a bigger array end; Application.ProcessMessages; if not searching then begin SearchStop; Exit; end; end; ProgressBar1.Position := d; LabelPercentage.Caption := FloatToStr(d / 10) + '%'; Application.ProcessMessages; end; SearchStop; end; function TFrmHashTableGen.GetHashKeyFunctionSource(ClassName: string): string; begin Result := '{$Q-}'#13#10; Result := Result + Format('function %s.HashKey(Str: PWideChar): Cardinal;', [ClassName]) + #13#10; Result := Result + 'begin'#13#10; Result := Result + ' Result := 0;'#13#10; Result := Result + ' while IsIdentChar(Str^) do'#13#10; Result := Result + ' begin'#13#10; if (FinalC = 1) and (FinalD = 1) then Result := Result + ' Result := Result + Ord(Str^);'#13#10 else if FinalC = 1 then Result := Result + Format(' Result := Result + Ord(Str^) * %d;', [FinalD]) + #13#10 else if FinalD = 1 then Result := Result + Format(' Result := Result * %d + Ord(Str^);', [FinalC]) + #13#10 else Result := Result + Format(' Result := Result * %d + Ord(Str^) * %d;', [FinalC, FinalD]) + #13#10; Result := Result + ' inc(Str);'#13#10; Result := Result + ' end;'#13#10; Result := Result + ' Result := Result mod ' + IntToStr(FinalM) + ';'#13#10; Result := Result + ' fStringLen := Str - fToIdent;'#13#10; Result := Result + 'end;'#13#10; Result := Result + '{$Q+}'#13#10; end; {$IFNDEF SYN_COMPILER_6_UP} function DupeString(const AText: string; ACount: Integer): string; var P: PChar; C: Integer; begin C := Length(AText); SetLength(Result, C * ACount); P := Pointer(Result); if P = nil then Exit; while ACount > 0 do begin Move(Pointer(AText)^, P^, C); Inc(P, C); Dec(ACount); end; end; {$ENDIF} function TFrmHashTableGen.GetKeyWordConstantsSource(CaseSensitive: Boolean): string; var i: Integer; sl: TStringList; LastItem: string; begin // write KeyWords if not CaseSensitive then Result := Result + ' // as this language is case-insensitive keywords *must* be in lowercase'#13#10; Result := Result + Format(' KeyWords: array[0..%d] of WideString = (', [High(KeyWords)]) + #13#10; sl := TStringList.Create; try for i := Low(KeyWords) to High(KeyWords) do sl.Add(#39 + KeyWords[i] + #39 + ','); if sl.Count > 0 then begin // remove comma from last line LastItem := sl[sl.Count - 1]; Delete(LastItem, Length(LastItem), 1); sl[sl.Count - 1] := LastItem; WordWrapAtCol80(sl, sl, 4); Result := Result + sl.Text; end; finally sl.Free; end; Result := Result + ' );'#13#10; Result := Result + #13#10; // write KeyIndices Result := Result + Format(' KeyIndices: array[0..%d] of Integer = (', [FinalM - 1]) + #13#10; sl := TStringList.Create; try sl.Text := DupeString('-1,'#13#10, FinalM); for i := Low(KeyWords) to High(KeyWords) do sl[FinalHashKey(KeyWords[i])] := IntToStr(i) + ','; if sl.Count > 0 then begin // remove comma from last line LastItem := Trim(sl[sl.Count - 1]); Delete(LastItem, Length(LastItem), 1); sl[sl.Count - 1] := LastItem; WordWrapAtCol80(sl, sl, 4); Result := Result + sl.Text; end; finally sl.Free; end; Result := Result + ' );'#13#10; end; function TFrmHashTableGen.KeyIndicesCount: Integer; begin Result := FinalM; end; { THashKeyList } function THashKeyList.Add(HashKey: Integer): Boolean; begin if HashKey > FMaxHashKey then FMaxHashKey := HashKey; Result := FHashKeys[HashKey]; FHashKeys[HashKey] := True; end; procedure THashKeyList.Clear; begin FillChar(FHashKeys, FMaxHashKey + 1, 0); FMaxHashKey := 0; end; end. --- NEW FILE: HashTableGen.dfm --- object FrmHashTableGen: TFrmHashTableGen Left = 299 Top = 214 BorderStyle = bsDialog Caption = 'Generate Hash Table' ClientHeight = 166 ClientWidth = 409 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False Position = poScreenCenter OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 object LabelParams: TLabel Left = 8 Top = 8 Width = 56 Height = 13 Caption = 'Parameters:' end object LabelD: TLabel Left = 29 Top = 27 Width = 9 Height = 13 Caption = 'd:' end object LabelC: TLabel Left = 117 Top = 27 Width = 9 Height = 13 Caption = 'c:' end object LabelM: TLabel Left = 205 Top = 27 Width = 11 Height = 13 Caption = 'm:' end object Label1: TLabel Left = 8 Top = 96 Width = 363 Height = 13 Caption = 'm is the size of the hash-table. If it is small enough searching' + ' can be stopped.' Font.Charset = DEFAULT_CHARSET Font.Color = clBlue Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False end object Label2: TLabel Left = 8 Top = 112 Width = 197 Height = 13 Caption = 'Normally it won'#39't change much after 3-4%.' Font.Charset = DEFAULT_CHARSET Font.Color = clBlue Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False end object LabelPercentage: TLabel Left = 374 Top = 66 Width = 14 Height = 13 Caption = '0%' end object ProgressBar1: TProgressBar Left = 8 Top = 64 Width = 361 Height = 17 Max = 1000 TabOrder = 4 end object EditD: TMemo Left = 48 Top = 24 Width = 57 Height = 21 Alignment = taRightJustify Lines.Strings = ( '0') ParentColor = True ReadOnly = True TabOrder = 1 end object EditC: TMemo Left = 136 Top = 24 Width = 57 Height = 21 Alignment = taRightJustify Lines.Strings = ( '0') ParentColor = True ReadOnly = True TabOrder = 2 end object EditM: TMemo Left = 224 Top = 24 Width = 57 Height = 21 Alignment = taRightJustify Lines.Strings = ( '0') ParentColor = True ReadOnly = True TabOrder = 3 end object ButtonFindHash: TButton Left = 8 Top = 136 Width = 113 Height = 23 Caption = 'Find Hash Params' Default = True TabOrder = 0 OnClick = ButtonFindHashClick end end |
From: Flávio E. <et...@us...> - 2007-07-05 02:30:28
|
Update of /cvsroot/synedit/SynEdit/Source In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv17511 Modified Files: Tag: UtterUnstable SynEdit.pas Log Message: Should have read ecChar implementation a long time ago :-$ Index: SynEdit.pas =================================================================== RCS file: /cvsroot/synedit/SynEdit/Source/SynEdit.pas,v retrieving revision 1.389.2.94 retrieving revision 1.389.2.95 diff -u -d -r1.389.2.94 -r1.389.2.95 --- SynEdit.pas 4 Jul 2007 20:03:31 -0000 1.389.2.94 +++ SynEdit.pas 5 Jul 2007 02:30:24 -0000 1.389.2.95 @@ -3540,6 +3540,7 @@ Str: string; Start: PChar; P: PChar; + bChangeScroll: Boolean; begin Result := 0; sLeftSide := Copy(LineText, 1, CaretX - 1); @@ -3591,18 +3592,19 @@ ProperSetLine( CaretY -1, Str ); Inc(Result); end; - if (eoTrimTrailingSpaces in Options) and (sRightSide = '') then - begin - fCaretX := Length(LineText) + GetExpandedLength(Str, TabWidth) - - GetExpandedLength(LineText, TabWidth) +1; - if not (eoScrollPastEol in Options) - and (fCaretX > TSynEditStringList(Lines).LengthOfLongestLine) then + bChangeScroll := not (eoScrollPastEol in fOptions); + Include(fOptions, eoScrollPastEol); + try + if (eoTrimTrailingSpaces in Options) and (sRightSide = '') then begin - fCaretX := TSynEditStringList(Lines).LengthOfLongestLine +1; - end; - end - else - fCaretX := Length(Str) - Length(sRightSide) +1; + InternalCaretX := Length(LineText) + GetExpandedLength(Str, TabWidth) + - GetExpandedLength(LineText, TabWidth) +1; + end + else + InternalCaretX := Length(Str) - Length(sRightSide) +1; + finally + if bChangeScroll then Exclude(fOptions, eoScrollPastEol); + end; StatusChanged([scCaretX]); UpdateLastCaretX; end; |