~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to components/synedit/synhighlighterxml.pas

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
If you do not delete the provisions above, a recipient may use your version
26
26
of this file under either the MPL or the GPL.
27
27
 
28
 
$Id: synhighlighterxml.pas 25786 2010-05-30 22:16:26Z martin $
 
28
$Id: synhighlighterxml.pas 35922 2012-03-13 10:34:49Z mattias $
29
29
 
30
30
You may retrieve the latest version of this file at the SynEdit home page,
31
31
located at http://SynEdit.SourceForge.net
56
56
{$I SynEdit.inc}
57
57
 
58
58
uses
59
 
  Classes, math, Graphics, SynEditTypes, SynEditHighlighter,
 
59
  Classes, Graphics, SynEditTypes, SynEditHighlighter,
60
60
  SynEditHighlighterFoldBase, SynEditHighlighterXMLBase;
61
61
 
62
62
type
98
98
 
99
99
type
100
100
 
101
 
  { TSynHighlighterXmlRangeList }
102
 
 
103
 
  TSynHighlighterXmlRangeList = class(TSynHighlighterRangeList)
104
 
  private
105
 
    FItemOffset: Integer;
106
 
    function GetXmlRangeInfo(Index: Integer): TSynXmlRangeInfo;
107
 
    procedure SetXmlRangeInfo(Index: Integer; const AValue: TSynXmlRangeInfo);
108
 
  protected
109
 
    procedure SetCapacity(const AValue: Integer); override;
110
 
  public
111
 
    constructor Create;
112
 
    procedure Move(AFrom, ATo, ALen: Integer); override;
113
 
    property XmlRangeInfo[Index: Integer]: TSynXmlRangeInfo
114
 
      read GetXmlRangeInfo write SetXmlRangeInfo;
115
 
  end;
116
 
 
117
101
  TProcTableProc = procedure of object;
118
102
 
119
103
  { TSynXMLSyn }
180
164
    function GetFoldConfigCount: Integer; override;
181
165
    function GetFoldConfigInternalCount: Integer; override;
182
166
  public
183
 
    {$IFNDEF SYN_CPPB_1} class {$ENDIF}
184
 
    function GetLanguageName: string; override;
 
167
    class function GetLanguageName: string; override;
185
168
  public
186
169
    constructor Create(AOwner: TComponent); override;
187
170
    function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes;
239
222
 
240
223
const
241
224
  NameChars : set of char = ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.', ':', '-'];
242
 
  MaxFoldNestDeep = 500;
243
225
 
244
226
constructor TSynXMLSyn.Create(AOwner: TComponent);
245
227
begin
954
936
  Result := ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.', '-'] + TSynSpecialChars;
955
937
end;
956
938
 
957
 
{$IFNDEF SYN_CPPB_1} class {$ENDIF}
958
 
function TSynXMLSyn.GetLanguageName: string;
 
939
class function TSynXMLSyn.GetLanguageName: string;
959
940
begin
960
941
  Result := SYNS_LangXML;
961
942
end;
1012
993
  Result := ord(high(TXmlCodeFoldBlockType)) - ord(low(TXmlCodeFoldBlockType)) + 1;
1013
994
end;
1014
995
 
1015
 
{ TSynHighlighterXmlRangeList }
1016
 
 
1017
 
function TSynHighlighterXmlRangeList.GetXmlRangeInfo(Index: Integer): TSynXmlRangeInfo;
1018
 
begin
1019
 
  if (Index < 0) or (Index >= Count) then begin
1020
 
    Result.ElementOpenList := nil;
1021
 
    exit;
1022
 
  end;
1023
 
  Result := TSynXmlRangeInfo((ItemPointer[Index] + FItemOffset)^);
1024
 
end;
1025
 
 
1026
 
procedure TSynHighlighterXmlRangeList.SetXmlRangeInfo(Index: Integer;
1027
 
  const AValue: TSynXmlRangeInfo);
1028
 
begin
1029
 
  TSynXmlRangeInfo((ItemPointer[Index] + FItemOffset)^) := AValue;
1030
 
end;
1031
 
 
1032
 
procedure TSynHighlighterXmlRangeList.SetCapacity(const AValue: Integer);
1033
 
var
1034
 
  i: LongInt;
1035
 
begin
1036
 
  for i := AValue to Capacity-1 do
1037
 
    with TSynXmlRangeInfo((ItemPointer[i] + FItemOffset)^) do begin
1038
 
      ElementOpenList := nil;
1039
 
      ElementCloseList := nil;
1040
 
    end;
1041
 
  inherited SetCapacity(AValue);
1042
 
end;
1043
 
 
1044
 
constructor TSynHighlighterXmlRangeList.Create;
1045
 
begin
1046
 
  inherited;
1047
 
  FItemOffset := ItemSize;
1048
 
  ItemSize := FItemOffset + SizeOf(TSynXmlRangeInfo);
1049
 
end;
1050
 
 
1051
 
procedure TSynHighlighterXmlRangeList.Move(AFrom, ATo, ALen: Integer);
1052
 
var
1053
 
  i: LongInt;
1054
 
begin
1055
 
  if ATo > AFrom then
1056
 
    for i:= Max(AFrom + ALen, ATo) to ATo + ALen - 1 do // move forward
1057
 
      with TSynXmlRangeInfo((ItemPointer[i] + FItemOffset)^) do begin
1058
 
        ElementOpenList := nil;
1059
 
        ElementCloseList := nil;
1060
 
      end
1061
 
  else
1062
 
    for i:= ATo to Min(ATo + ALen , AFrom) - 1 do // move backward
1063
 
      with TSynXmlRangeInfo((ItemPointer[i] + FItemOffset)^) do begin
1064
 
        ElementOpenList := nil;
1065
 
        ElementCloseList := nil;
1066
 
      end;
1067
 
  inherited Move(AFrom, ATo, ALen);
1068
 
end;
1069
 
 
1070
996
initialization
1071
 
 
1072
 
  {$IFNDEF SYN_CPPB_1}
1073
997
  RegisterPlaceableHighlighter(TSynXMLSyn);
1074
 
  {$ENDIF}
1075
998
 
1076
999
end.
1077
1000
 
1078
 
 
1079