fixed synedit: assigning text with #0, TSynPasSyn and TSynPHPSyn for #0, added PHP highlighter to IDE

git-svn-id: trunk@7539 -
This commit is contained in:
mattias 2005-08-22 11:08:59 +00:00
parent 7e441f98c9
commit 4b77b6b726
5 changed files with 94 additions and 13 deletions

View File

@ -2104,8 +2104,6 @@ var
bStartDrag: boolean;
{$IFDEF SYN_LAZARUS}
PrimarySelText: string;
StartOfBlock: TPoint;
EndOfBlock: TPoint;
LogCaretXY: TPoint;
{$ENDIF}
begin

View File

@ -144,6 +144,9 @@ type
{$IFDEF SYN_COMPILER_3_UP} override; {$ENDIF} //mh 2000-10-18
procedure SetTabWidth(Value: integer); //mh 2000-10-19
procedure SetUpdateState(Updating: Boolean); override;
{$IFDEF SYN_LAZARUS}
procedure SetTextStr(const Value: string); override;
{$ENDIF}
public
constructor Create;
destructor Destroy; override;
@ -319,8 +322,13 @@ end;
type
TSynEditFileReader = class(TSynEditFiler)
protected
fFilePos: {$IFDEF SYN_LAZARUS}TStreamSeekType{$ELSE}Cardinal{$ENDIF};
fFileSize: {$IFDEF SYN_LAZARUS}TStreamSeekType{$ELSE}Cardinal{$ENDIF};
{$IFDEF SYN_LAZARUS}
fFilePos: TStreamSeekType;
fFileSize: TStreamSeekType;
{$ELSE}
fFilePos: Cardinal;
fFileSize: Cardinal;
{$ENDIF}
procedure FillBuffer;
public
constructor Create(const FileName: string);
@ -1012,7 +1020,38 @@ begin
fOnChange(Self);
end;
end;
{end} //mh 2000-10-10
{$IFDEF SYN_LAZARUS}
procedure TSynEditStringList.SetTextStr(const Value: string);
var
StartPos: Integer;
p: Integer;
Len: Integer;
begin
BeginUpdate;
try
Clear;
p:=1;
StartPos:=p;
Len:=length(Value);
while p<=Len do begin
if not (Value[p] in [#10,#13]) then begin
inc(p);
end else begin
Add(copy(Value,StartPos,p-StartPos));
inc(p);
if (p<=Len) and (Value[p] in [#10,#13]) and (Value[p-1]<>Value[p]) then
inc(p);
StartPos:=p;
end;
end;
if StartPos<=Len then
Add(copy(Value,StartPos,Len-StartPos+1));
finally
EndUpdate;
end;
end;
{$ENDIF}
{ TSynEditUndoList }

View File

@ -1281,6 +1281,9 @@ end;
procedure TSynPasSyn.NullProc;
begin
fTokenID := tkNull;
{$IFDEF SYN_LAZARUS}
if Run<=fLineLen then inc(Run);
{$ENDIF}
end;
procedure TSynPasSyn.NumberProc;
@ -1496,7 +1499,7 @@ end;
function TSynPasSyn.GetEol: Boolean;
begin
Result := fTokenID = tkNull;
Result := (fTokenID = tkNull) {$IFDEF SYN_LAZARUS}and (Run > fLineLen){$ENDIF};
end;
function TSynPasSyn.GetToken: string;

View File

@ -83,6 +83,9 @@ type
private
fRange: TRangeState;
fLine: PChar;
{$IFDEF SYN_LAZARUS}
fLineLen: integer;
{$ENDIF}
fLineNumber: Integer;
fProcTable: array[#0..#255] of TProcTableProc;
Run: LongInt;
@ -694,6 +697,9 @@ end;
procedure TSynPHPSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin
fLine := PChar(NewValue);
{$IFDEF SYN_LAZARUS}
fLineLen := length(NewValue);
{$ENDIF}
Run := 0;
fLineNumber := LineNumber;
Next;
@ -903,6 +909,10 @@ end;
procedure TSynPHPSyn.NullProc;
begin
fTokenID := tkNull;
{$IFDEF SYN_LAZARUS}
if Run<fLineLen then
inc(Run);
{$ENDIF}
end;
procedure TSynPHPSyn.NumberProc;
@ -1348,7 +1358,7 @@ end;
function TSynPHPSyn.GetEol: Boolean;
begin
Result := fTokenID = tkNull;
Result := (fTokenID = tkNull) and (Run>=fLineLen);
end;
function TSynPHPSyn.GetRange: Pointer;

View File

@ -40,7 +40,7 @@ uses
SynEdit, SynEditHighlighter, SynEditAutoComplete, SynEditKeyCmds,
SynHighlighterPas, SynHighlighterHTML, SynHighlighterCPP, SynHighlighterXML,
SynHighlighterLFM, SynHighlighterPerl, SynHighlighterJava,
SynHighlighterPython, SynHighlighterUNIXShellScript,
SynHighlighterPython, SynHighlighterUNIXShellScript, SynHighlighterPHP,
Laz_XMLCfg, IDEWindowIntf,
IDECommands, CodeTemplateDialog, KeyMapping, InputHistory, IDEOptionDefs,
LazarusIDEStrConsts, KeymapSchemeDlg;
@ -54,7 +54,7 @@ type
TLazSyntaxHighlighter =
(lshNone, lshText, lshFreePascal, lshDelphi, lshLFM, lshXML, lshHTML,
lshCPP, lshPerl, lshJava, lshBash, lshPython);
lshCPP, lshPerl, lshJava, lshBash, lshPython, lshPHP);
TAdditionalHilightAttribute = (ahaNone, ahaTextBlock, ahaExecutionPoint,
ahaEnabledBreakpoint, ahaDisabledBreakpoint,
@ -79,7 +79,7 @@ const
LazSyntaxHighlighterClasses: array[TLazSyntaxHighlighter] of TCustomSynClass =
(nil, nil, TSynPasSyn, TSynPasSyn, TSynLFMSyn, TSynXMLSyn, TSynHTMLSyn,
TSynCPPSyn, TSynPerlSyn, TSynJavaSyn, TSynUNIXShellScriptSyn,
TSynPythonSyn);
TSynPythonSyn, TSynPHPSyn);
{ Comments }
@ -96,7 +96,8 @@ const
comtPerl, // lshPerl
comtCPP, // lshJava
comtPerl, // lshBash
comtPerl // lshPython
comtPerl, // lshPython
comtHTML // lshPHP
);
const
@ -521,7 +522,8 @@ const
'Perl',
'Java',
'Bash',
'Python'
'Python',
'PHP'
);
var
@ -555,7 +557,8 @@ const
lshPerl,
lshJava,
lshBash,
lshPython
lshPython,
lshPHP
);
DefaultColorScheme = 'Default';
@ -1046,6 +1049,34 @@ begin
end;
end;
Add(NewInfo);
// create info for PHP
NewInfo:=TEditOptLanguageInfo.Create;
with NewInfo do begin
TheType:=lshPHP;
DefaultCommentType:=DefaultCommentTypes[TheType];
SynClass:=LazSyntaxHighlighterClasses[TheType];
FileExtensions:='php;php3;php4';
SampleSource:=
'<?if ( ($HTTP_HOST == "www.lazarus.com") || ($HTTP_HOST == "lazarus.com") ){'#10
+' HEADER("Location:http://www.lazarus.freepascal.org/\n\n");'#10
+'};'#10
+'?>'#10
+#10;
AddAttrSampleLines[ahaTextBlock]:=8;
MappedAttributes:=TStringList.Create;
with MappedAttributes do begin
Add('Element=Reserved_word');
Add('Comment=Comment');
Add('Variable=Identifier');
Add('Space=Space');
Add('Symbol=Symbol');
Add('Number=Number');
Add('Key=Key');
Add('String=String');
end;
end;
Add(NewInfo);
end;
destructor TEditOptLangList.Destroy;