mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 23:18:01 +02:00
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:
parent
7e441f98c9
commit
4b77b6b726
@ -2104,8 +2104,6 @@ var
|
||||
bStartDrag: boolean;
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
PrimarySelText: string;
|
||||
StartOfBlock: TPoint;
|
||||
EndOfBlock: TPoint;
|
||||
LogCaretXY: TPoint;
|
||||
{$ENDIF}
|
||||
begin
|
||||
|
@ -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 }
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user