1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-04 16:35:15 -05:00

Added base for code completion. I believe find declaration works (control+click).

This commit is contained in:
Niels 2010-03-26 21:34:41 +01:00
parent e1d5f0788f
commit 70599f5a92
13 changed files with 1455 additions and 1307 deletions

View File

@ -424,8 +424,8 @@ begin
end;
J := AnsiString(UpCase(I))[1];
case I of
'a'..'z', 'A'..'Z', '_': mHashTable[I] := Ord(J) - 64;
'0'..'9': mHashTable[I] := Ord(J) - 47;
'a'..'z', 'A'..'Z', '_': mHashTable[I] := Ord(J) - 64;
'0'..'9': mHashTable[I] := Ord(J) - 47;
else mHashTable[Char(I)] := 0;
end;
end;
@ -2238,7 +2238,7 @@ end;
function TmwBasePasLex.GetIsJunk: Boolean;
begin
result := IsTokenIDJunk(FTokenID) or (FUseDefines and (FDefineStack > 0) and (TokenID <> tokNull) and (TokenID <> tok_DONE));
result := IsTokenIDJunk(FTokenID) or (FUseDefines and (FDefineStack > 0) and (TokenID <> tokNull) and (TokenID <> tok_DONE));
// Result := fTokenID in [tokAnsiComment, tokBorComment, tokCRLF, tokCRLFCo, tokSlashesComment, tokSpace]; //XM 20001210
end;

View File

@ -11,6 +11,7 @@
<TargetFileExt Value=".exe"/>
<ResourceType Value="res"/>
<UseXPManifest Value="True"/>
<Icon Value="0"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<VersionInfo>
@ -39,14 +40,16 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="44">
<Units Count="45">
<Unit0>
<Filename Value="Valistus.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="Valistus"/>
<CursorPos X="21" Y="17"/>
<CursorPos X="31" Y="4"/>
<TopLine Value="1"/>
<UsageCount Value="126"/>
<EditorIndex Value="3"/>
<UsageCount Value="140"/>
<Loaded Value="True"/>
</Unit0>
<Unit1>
<Filename Value="main.pas"/>
@ -54,36 +57,36 @@
<ComponentName Value="MainForm"/>
<ResourceBaseClass Value="Form"/>
<UnitName Value="Main"/>
<CursorPos X="37" Y="426"/>
<TopLine Value="404"/>
<CursorPos X="38" Y="26"/>
<TopLine Value="10"/>
<EditorIndex Value="0"/>
<UsageCount Value="126"/>
<UsageCount Value="140"/>
<Loaded Value="True"/>
</Unit1>
<Unit2>
<Filename Value="..\v_Constants.pas"/>
<UnitName Value="v_Constants"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit2>
<Unit3>
<Filename Value="..\v_SynPlugins.pas"/>
<UnitName Value="v_SynPlugins"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit3>
<Unit4>
<Filename Value="..\v_ideCodeParser.pas"/>
<UnitName Value="v_ideCodeParser"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit4>
<Unit5>
<Filename Value="..\v_ideCodeInsight.pas"/>
<UnitName Value="v_ideCodeInsight"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit5>
<Unit6>
<Filename Value="..\v_MiscFunctions.pas"/>
<UnitName Value="v_MiscFunctions"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit6>
<Unit7>
<Filename Value="v_Constants.pas"/>
@ -91,65 +94,63 @@
<UnitName Value="v_Constants"/>
<CursorPos X="5" Y="7"/>
<TopLine Value="1"/>
<UsageCount Value="126"/>
<UsageCount Value="140"/>
</Unit7>
<Unit8>
<Filename Value="CastaliaPasLex.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CastaliaPasLex"/>
<CursorPos X="3" Y="374"/>
<TopLine Value="355"/>
<UsageCount Value="126"/>
<CursorPos X="20" Y="2241"/>
<TopLine Value="2222"/>
<UsageCount Value="140"/>
</Unit8>
<Unit9>
<Filename Value="CastaliaPasLexTypes.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CastaliaPasLexTypes"/>
<CursorPos X="61" Y="140"/>
<TopLine Value="177"/>
<UsageCount Value="126"/>
<CursorPos X="26" Y="308"/>
<TopLine Value="284"/>
<UsageCount Value="140"/>
</Unit9>
<Unit10>
<Filename Value="CastaliaSimplePasPar.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CastaliaSimplePasPar"/>
<CursorPos X="15" Y="517"/>
<TopLine Value="500"/>
<UsageCount Value="126"/>
<CursorPos X="40" Y="4617"/>
<TopLine Value="4679"/>
<UsageCount Value="140"/>
</Unit10>
<Unit11>
<Filename Value="CastaliaSimplePasParTypes.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="CastaliaSimplePasParTypes"/>
<CursorPos X="1" Y="19"/>
<CursorPos X="54" Y="10"/>
<TopLine Value="1"/>
<UsageCount Value="126"/>
<UsageCount Value="140"/>
</Unit11>
<Unit12>
<Filename Value="v_SynPlugins.pas"/>
<UnitName Value="v_SynPlugins"/>
<CursorPos X="15" Y="27"/>
<TopLine Value="8"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit12>
<Unit13>
<Filename Value="v_ideCodeParser.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="v_ideCodeParser"/>
<CursorPos X="22" Y="273"/>
<TopLine Value="255"/>
<EditorIndex Value="3"/>
<UsageCount Value="126"/>
<Loaded Value="True"/>
<CursorPos X="17" Y="208"/>
<TopLine Value="189"/>
<UsageCount Value="140"/>
</Unit13>
<Unit14>
<Filename Value="v_ideCodeInsight.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="v_ideCodeInsight"/>
<CursorPos X="41" Y="285"/>
<TopLine Value="259"/>
<CursorPos X="31" Y="19"/>
<TopLine Value="4"/>
<EditorIndex Value="2"/>
<UsageCount Value="126"/>
<UsageCount Value="140"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
@ -158,48 +159,46 @@
<UnitName Value="v_MiscFunctions"/>
<CursorPos X="27" Y="5"/>
<TopLine Value="1"/>
<UsageCount Value="126"/>
<UsageCount Value="140"/>
</Unit15>
<Unit16>
<Filename Value="ValistusDefines.inc"/>
<IsPartOfProject Value="True"/>
<CursorPos X="2" Y="2"/>
<TopLine Value="1"/>
<EditorIndex Value="4"/>
<UsageCount Value="126"/>
<Loaded Value="True"/>
<UsageCount Value="140"/>
</Unit16>
<Unit17>
<Filename Value="C:\Lazarus\FPC\Source\rtl\inc\objpash.inc"/>
<Filename Value="..\..\..\FPC\Source\rtl\inc\objpash.inc"/>
<CursorPos X="23" Y="192"/>
<TopLine Value="173"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit17>
<Unit18>
<Filename Value="C:\Lazarus\FPC\Source\rtl\inc\systemh.inc"/>
<Filename Value="..\..\..\FPC\Source\rtl\inc\systemh.inc"/>
<CursorPos X="11" Y="825"/>
<TopLine Value="806"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit18>
<Unit19>
<Filename Value="C:\Lazarus\FPC\Source\rtl\objpas\classes\classesh.inc"/>
<Filename Value="..\..\..\FPC\Source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="25" Y="598"/>
<TopLine Value="1"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit19>
<Unit20>
<Filename Value="C:\Lazarus\LazSVN\lcl\stdctrls.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\stdctrls.pp"/>
<UnitName Value="StdCtrls"/>
<CursorPos X="20" Y="33"/>
<TopLine Value="16"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit20>
<Unit21>
<Filename Value="C:\Lazarus\LazSVN\lcl\lcltype.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\lcltype.pp"/>
<UnitName Value="LCLType"/>
<CursorPos X="17" Y="607"/>
<TopLine Value="579"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit21>
<Unit22>
<Filename Value="v_autocompleteform.pas"/>
@ -208,273 +207,184 @@
<ResourceBaseClass Value="Form"/>
<UnitName Value="v_AutoCompleteForm"/>
<CursorPos X="46" Y="574"/>
<TopLine Value="543"/>
<TopLine Value="1"/>
<EditorIndex Value="1"/>
<UsageCount Value="122"/>
<UsageCount Value="136"/>
<Loaded Value="True"/>
</Unit22>
<Unit23>
<Filename Value="C:\Lazarus\LazSVN\lcl\include\winapih.inc"/>
<Filename Value="..\..\..\LazSVN\lcl\include\winapih.inc"/>
<CursorPos X="18" Y="235"/>
<TopLine Value="3"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit23>
<Unit24>
<Filename Value="C:\Lazarus\LazSVN\lcl\controls.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\controls.pp"/>
<UnitName Value="Controls"/>
<CursorPos X="15" Y="1800"/>
<TopLine Value="1781"/>
<UsageCount Value="15"/>
<UsageCount Value="14"/>
</Unit24>
<Unit25>
<Filename Value="C:\Lazarus\LazSVN\lcl\graphics.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\graphics.pp"/>
<UnitName Value="Graphics"/>
<CursorPos X="3" Y="92"/>
<TopLine Value="82"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit25>
<Unit26>
<Filename Value="C:\Lazarus\LazSVN\lcl\forms.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\forms.pp"/>
<UnitName Value="Forms"/>
<CursorPos X="15" Y="582"/>
<TopLine Value="527"/>
<UsageCount Value="13"/>
<UsageCount Value="12"/>
</Unit26>
<Unit27>
<Filename Value="C:\Lazarus\LazSVN\lcl\lclclasses.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\lclclasses.pp"/>
<UnitName Value="LCLClasses"/>
<CursorPos X="31" Y="38"/>
<TopLine Value="22"/>
<UsageCount Value="3"/>
<UsageCount Value="2"/>
</Unit27>
<Unit28>
<Filename Value="C:\Lazarus\LazSVN\lcl\lmessages.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\lmessages.pp"/>
<UnitName Value="LMessages"/>
<CursorPos X="3" Y="327"/>
<TopLine Value="83"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit28>
<Unit29>
<Filename Value="C:\Lazarus\FPC\Source\packages\fcl-image\src\fpcanvas.pp"/>
<Filename Value="..\..\..\FPC\Source\packages\fcl-image\src\fpcanvas.pp"/>
<UnitName Value="FPCanvas"/>
<CursorPos X="32" Y="78"/>
<TopLine Value="59"/>
<UsageCount Value="1"/>
<UsageCount Value="10"/>
</Unit29>
<Unit30>
<Filename Value="C:\Lazarus\FPC\Source\rtl\objpas\objpas.pp"/>
<Filename Value="..\..\..\FPC\Source\rtl\objpas\objpas.pp"/>
<UnitName Value="objpas"/>
<CursorPos X="8" Y="36"/>
<TopLine Value="17"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit30>
<Unit31>
<Filename Value="C:\Lazarus\LazSVN\lcl\stringhashlist.pas"/>
<Filename Value="..\..\..\LazSVN\lcl\stringhashlist.pas"/>
<UnitName Value="StringHashList"/>
<CursorPos X="44" Y="57"/>
<TopLine Value="40"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit31>
<Unit32>
<Filename Value="C:\Lazarus\FPC\Source\rtl\objpas\strutils.pp"/>
<Filename Value="..\..\..\FPC\Source\rtl\objpas\strutils.pp"/>
<UnitName Value="strutils"/>
<CursorPos X="10" Y="72"/>
<TopLine Value="53"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit32>
<Unit33>
<Filename Value="C:\Lazarus\FPC\Source\rtl\objpas\sysutils\syspchh.inc"/>
<Filename Value="..\..\..\FPC\Source\rtl\objpas\sysutils\syspchh.inc"/>
<CursorPos X="18" Y="32"/>
<TopLine Value="11"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit33>
<Unit34>
<Filename Value="C:\Lazarus\LazSVN\components\synedit\synedit.pp"/>
<Filename Value="..\..\..\LazSVN\components\synedit\synedit.pp"/>
<UnitName Value="SynEdit"/>
<CursorPos X="45" Y="5647"/>
<TopLine Value="5621"/>
<UsageCount Value="14"/>
<UsageCount Value="13"/>
</Unit34>
<Unit35>
<Filename Value="C:\Lazarus\LazSVN\components\synedit\synedithighlighter.pp"/>
<Filename Value="..\..\..\LazSVN\components\synedit\synedithighlighter.pp"/>
<UnitName Value="SynEditHighlighter"/>
<CursorPos X="33" Y="230"/>
<TopLine Value="303"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit35>
<Unit36>
<Filename Value="C:\Lazarus\FPC\Source\rtl\win32\system.pp"/>
<Filename Value="..\..\..\FPC\Source\rtl\win32\system.pp"/>
<UnitName Value="System"/>
<CursorPos X="2" Y="35"/>
<TopLine Value="16"/>
<UsageCount Value="7"/>
<UsageCount Value="6"/>
</Unit36>
<Unit37>
<Filename Value="C:\Lazarus\LazSVN\components\synedit\syneditkeycmds.pp"/>
<Filename Value="..\..\..\LazSVN\components\synedit\syneditkeycmds.pp"/>
<UnitName Value="SynEditKeyCmds"/>
<CursorPos X="11" Y="261"/>
<TopLine Value="135"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit37>
<Unit38>
<Filename Value="C:\Lazarus\LazSVN\components\synedit\syneditmiscclasses.pp"/>
<Filename Value="..\..\..\LazSVN\components\synedit\syneditmiscclasses.pp"/>
<UnitName Value="SynEditMiscClasses"/>
<CursorPos X="34" Y="996"/>
<TopLine Value="1007"/>
<UsageCount Value="10"/>
<UsageCount Value="9"/>
</Unit38>
<Unit39>
<Filename Value="C:\Lazarus\FPC\Source\rtl\objpas\sysutils\sysstrh.inc"/>
<Filename Value="..\..\..\FPC\Source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="10" Y="223"/>
<TopLine Value="204"/>
<UsageCount Value="5"/>
<UsageCount Value="4"/>
</Unit39>
<Unit40>
<Filename Value="C:\Lazarus\LazSVN\components\synedit\syneditautocomplete.pp"/>
<Filename Value="..\..\..\LazSVN\components\synedit\syneditautocomplete.pp"/>
<UnitName Value="SynEditAutoComplete"/>
<CursorPos X="13" Y="182"/>
<TopLine Value="157"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit40>
<Unit41>
<Filename Value="C:\Lazarus\LazSVN\lcl\extendedstrings.pas"/>
<Filename Value="..\..\..\LazSVN\lcl\extendedstrings.pas"/>
<UnitName Value="ExtendedStrings"/>
<CursorPos X="34" Y="42"/>
<TopLine Value="31"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit41>
<Unit42>
<Filename Value="C:\Lazarus\LazSVN\lcl\widgetset\wsreferences.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\widgetset\wsreferences.pp"/>
<UnitName Value="WSReferences"/>
<CursorPos X="14" Y="90"/>
<TopLine Value="71"/>
<UsageCount Value="8"/>
<UsageCount Value="7"/>
</Unit42>
<Unit43>
<Filename Value="C:\Lazarus\LazSVN\lcl\lresources.pp"/>
<Filename Value="..\..\..\LazSVN\lcl\lresources.pp"/>
<UnitName Value="LResources"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit43>
<Unit44>
<Filename Value="..\..\..\LazSVN\components\synedit\synhighlighterpas.pp"/>
<UnitName Value="SynHighlighterPas"/>
<CursorPos X="32" Y="2760"/>
<TopLine Value="2741"/>
<UsageCount Value="10"/>
</Unit44>
</Units>
<JumpHistory Count="29" HistoryIndex="28">
<JumpHistory Count="5" HistoryIndex="4">
<Position1>
<Filename Value="main.pas"/>
<Caret Line="411" Column="36" TopLine="396"/>
<Filename Value="Valistus.lpr"/>
<Caret Line="17" Column="21" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="v_ideCodeParser.pas"/>
<Caret Line="43" Column="33" TopLine="24"/>
<Filename Value="v_ideCodeInsight.pas"/>
<Caret Line="19" Column="31" TopLine="4"/>
</Position2>
<Position3>
<Filename Value="main.pas"/>
<Caret Line="414" Column="34" TopLine="396"/>
<Caret Line="414" Column="114" TopLine="408"/>
</Position3>
<Position4>
<Filename Value="v_ideCodeParser.pas"/>
<Caret Line="104" Column="25" TopLine="85"/>
<Filename Value="main.pas"/>
<Caret Line="27" Column="29" TopLine="10"/>
</Position4>
<Position5>
<Filename Value="v_ideCodeParser.pas"/>
<Caret Line="705" Column="21" TopLine="686"/>
<Filename Value="main.pas"/>
<Caret Line="26" Column="79" TopLine="10"/>
</Position5>
<Position6>
<Filename Value="main.pas"/>
<Caret Line="414" Column="37" TopLine="396"/>
</Position6>
<Position7>
<Filename Value="v_ideCodeParser.pas"/>
<Caret Line="104" Column="21" TopLine="85"/>
</Position7>
<Position8>
<Filename Value="v_ideCodeParser.pas"/>
<Caret Line="705" Column="21" TopLine="686"/>
</Position8>
<Position9>
<Filename Value="main.pas"/>
<Caret Line="419" Column="135" TopLine="393"/>
</Position9>
<Position10>
<Filename Value="main.pas"/>
<Caret Line="380" Column="69" TopLine="361"/>
</Position10>
<Position11>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="528" Column="6" TopLine="492"/>
</Position11>
<Position12>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="520" Column="26" TopLine="492"/>
</Position12>
<Position13>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="529" Column="49" TopLine="513"/>
</Position13>
<Position14>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="530" Column="25" TopLine="514"/>
</Position14>
<Position15>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="82" Column="18" TopLine="63"/>
</Position15>
<Position16>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="88" Column="49" TopLine="63"/>
</Position16>
<Position17>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="532" Column="49" TopLine="516"/>
</Position17>
<Position18>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="548" Column="37" TopLine="516"/>
</Position18>
<Position19>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="530" Column="24" TopLine="516"/>
</Position19>
<Position20>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="79" Column="28" TopLine="63"/>
</Position20>
<Position21>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="79" Column="28" TopLine="63"/>
</Position21>
<Position22>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="534" Column="53" TopLine="516"/>
</Position22>
<Position23>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="556" Column="11" TopLine="529"/>
</Position23>
<Position24>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="532" Column="10" TopLine="513"/>
</Position24>
<Position25>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="537" Column="25" TopLine="518"/>
</Position25>
<Position26>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="544" Column="11" TopLine="525"/>
</Position26>
<Position27>
<Filename Value="main.pas"/>
<Caret Line="434" Column="12" TopLine="403"/>
</Position27>
<Position28>
<Filename Value="main.pas"/>
<Caret Line="437" Column="9" TopLine="403"/>
</Position28>
<Position29>
<Filename Value="v_autocompleteform.pas"/>
<Caret Line="574" Column="46" TopLine="543"/>
</Position29>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

Binary file not shown.

View File

@ -597,12 +597,13 @@ object MainForm: TMainForm
Lines.Strings = (
'program New;'
''
'procedure c(d); forward;'
''
'function a(b): Boolean;'
'procedure TestingTest(a: Integer = 2; b: string = ''test'');'
'begin'
'end;'
''
'var'
' TIA: array of Integer = (1, 2, 3);'
''
'type'
' x = (thiz, iz, enum);'
' y = set of x;'
@ -621,7 +622,8 @@ object MainForm: TMainForm
' xx: x;'
' yy: y;'
' zz: TIntegerArray;'
' i: Integer;'
' i: Integer = 123;'
' stringetiestring: string = ''test'';'
'begin'
' with a, b[zz[i]], c do'
' d := ''test'';'

View File

@ -426,15 +426,15 @@ begin
begin
if (d.Owner is TciProcedureDeclaration) and (not (d is TciProcedureDeclaration)) then
d := d.Owner;
with TParamHint.Create(Self) do
begin
//with TParamHint.Create(Self) do
//begin
if (TciProcedureDeclaration(d).SynParams <> '') then
//txtDebug.Lines.Add(TciProcedureDeclaration(d).SynParams)
Caption := TciProcedureDeclaration(d).SynParams
txtDebug.Lines.Add(TciProcedureDeclaration(d).SynParams)
//Caption := TciProcedureDeclaration(d).SynParams
else
//txtDebug.Lines.Add('<no parameters expected>');
Caption := '<no parameters expected>';
end;
txtDebug.Lines.Add('<no parameters expected>');
//Caption := '<no parameters expected>';
//end;
end;
finally
FreeAndNil(ms);

View File

@ -269,8 +269,8 @@ begin
else
fDeclarationAtPos := nil;
if (fDeclarationatPos is TciJunk) and (fDeclarationatPos.Owner <> nil) {and (fDeclarationatPos.EndPos = fPos)} then
fDeclarationAtPos := fDeclarationatPos.Owner;
(*if (fDeclarationatPos is TciJunk) and (fDeclarationatPos.Owner <> nil) {and (fDeclarationatPos.EndPos = fPos)} then
fDeclarationAtPos := fDeclarationatPos.Owner;*)
if (fDeclarationAtPos <> nil) and (not (fDeclarationAtPos is TciJunk)) then
begin

View File

@ -1024,7 +1024,7 @@ begin
Lexer.Next;
if Lexer.IsJunk and (not InDeclaration(TciJunk)) then
begin
if (not InDeclaration(nil)) then
{if (not InDeclaration(nil)) then
PushStack(TciJunk);
while (Lexer.IsJunk) do
begin
@ -1044,6 +1044,18 @@ begin
fStack.Top.Free;
fStack.Pop;
end;
end;}
while Lexer.IsJunk do
begin
if (Lexer.TokenID in [tokAnsiComment, tokBorComment, tokSlashesComment]) then
begin
if (not InDeclaration(TciJunk)) then
PushStack(TciJunk);
end
else if InDeclaration(TciJunk) then
PopStack;
Lexer.Next;
end;
end;
end;

View File

@ -25,6 +25,9 @@ object ScriptFrame: TScriptFrame
OnDragDrop = SynEditDragDrop
OnDragOver = SynEditDragOver
OnKeyDown = SynEditKeyDown
OnKeyPress = SynEditKeyPress
OnClickLink = SynEditClickLink
OnMouseLink = SynEditMouseLink
Gutter.Width = 57
Gutter.MouseActions = <
item

View File

@ -9,149 +9,150 @@ LazarusResources.Add('TScriptFrame','FORMDATA',[
+'h'#7#7'fpFixed'#12'Font.Quality'#7#16'fqNonAntialiased'#11'ParentColor'#8#10
+'ParentFont'#8#9'PopupMenu'#7#17'Form1.ScriptPopup'#8'TabOrder'#2#0#10'OnDra'
+'gDrop'#7#15'SynEditDragDrop'#10'OnDragOver'#7#15'SynEditDragOver'#9'OnKeyDo'
+'wn'#7#14'SynEditKeyDown'#12'Gutter.Width'#2'9'#19'Gutter.MouseActions'#14#1
+#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc'
+'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#13#9'MoveCaret'#8#6'Option'#2#0#8
+'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10
+'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'
+#8#6'Option'#2#0#8'Priority'#2#0#0#0#11'Highlighter'#7#17'SynFreePascalSyn1'
+#10'Keystrokes'#14#1#7'Command'#7#4'ecUp'#8'ShortCut'#2'&'#0#1#7'Command'#7#7
+'ecSelUp'#8'ShortCut'#3'& '#0#1#7'Command'#7#10'ecScrollUp'#8'ShortCut'#3'&@'
+#0#1#7'Command'#7#6'ecDown'#8'ShortCut'#2'('#0#1#7'Command'#7#9'ecSelDown'#8
+'ShortCut'#3'( '#0#1#7'Command'#7#12'ecScrollDown'#8'ShortCut'#3'(@'#0#1#7'C'
+'ommand'#7#6'ecLeft'#8'ShortCut'#2'%'#0#1#7'Command'#7#9'ecSelLeft'#8'ShortC'
+'ut'#3'% '#0#1#7'Command'#7#10'ecWordLeft'#8'ShortCut'#3'%@'#0#1#7'Command'#7
+#13'ecSelWordLeft'#8'ShortCut'#3'%`'#0#1#7'Command'#7#7'ecRight'#8'ShortCut'
+#2''''#0#1#7'Command'#7#10'ecSelRight'#8'ShortCut'#3''' '#0#1#7'Command'#7#11
+'ecWordRight'#8'ShortCut'#3'''@'#0#1#7'Command'#7#14'ecSelWordRight'#8'Short'
+'Cut'#3'''`'#0#1#7'Command'#7#10'ecPageDown'#8'ShortCut'#2'"'#0#1#7'Command'
+#7#13'ecSelPageDown'#8'ShortCut'#3'" '#0#1#7'Command'#7#12'ecPageBottom'#8'S'
+'hortCut'#3'"@'#0#1#7'Command'#7#15'ecSelPageBottom'#8'ShortCut'#3'"`'#0#1#7
+'Command'#7#8'ecPageUp'#8'ShortCut'#2'!'#0#1#7'Command'#7#11'ecSelPageUp'#8
+'ShortCut'#3'! '#0#1#7'Command'#7#9'ecPageTop'#8'ShortCut'#3'!@'#0#1#7'Comma'
+'nd'#7#12'ecSelPageTop'#8'ShortCut'#3'!`'#0#1#7'Command'#7#11'ecLineStart'#8
+'ShortCut'#2'$'#0#1#7'Command'#7#14'ecSelLineStart'#8'ShortCut'#3'$ '#0#1#7
+'Command'#7#11'ecEditorTop'#8'ShortCut'#3'$@'#0#1#7'Command'#7#14'ecSelEdito'
+'rTop'#8'ShortCut'#3'$`'#0#1#7'Command'#7#9'ecLineEnd'#8'ShortCut'#2'#'#0#1#7
+'Command'#7#12'ecSelLineEnd'#8'ShortCut'#3'# '#0#1#7'Command'#7#14'ecEditorB'
+'ottom'#8'ShortCut'#3'#@'#0#1#7'Command'#7#17'ecSelEditorBottom'#8'ShortCut'
+#3'#`'#0#1#7'Command'#7#12'ecToggleMode'#8'ShortCut'#2'-'#0#1#7'Command'#7#6
+'ecCopy'#8'ShortCut'#3'-@'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'- '#0#1
+#7'Command'#7#12'ecDeleteChar'#8'ShortCut'#2'.'#0#1#7'Command'#7#5'ecCut'#8
+'ShortCut'#3'. '#0#1#7'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#2#8#0#1#7
+'Command'#7#16'ecDeleteLastChar'#8'ShortCut'#3#8' '#0#1#7'Command'#7#16'ecDe'
+'leteLastWord'#8'ShortCut'#3#8'@'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#4#8
+#128#0#0#0#1#7'Command'#7#6'ecRedo'#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#7
+#11'ecLineBreak'#8'ShortCut'#2#13#0#1#7'Command'#7#11'ecSelectAll'#8'ShortCu'
+'t'#3'A@'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'C@'#0#1#7'Command'#7#13'e'
+'cBlockIndent'#8'ShortCut'#3'I@'#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'
+#3'M@'#0#1#7'Command'#7#15'ecBlockUnindent'#8'ShortCut'#3'U@'#0#1#7'Command'
+#7#7'ecPaste'#8'ShortCut'#3'V@'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'X@'#0
+#1#7'Command'#7#12'ecDeleteLine'#8'ShortCut'#3'Y@'#0#1#7'Command'#7#11'ecDel'
+'eteEOL'#8'ShortCut'#3'Y`'#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#3'Z@'#0#1#7
+'Command'#7#6'ecRedo'#8'ShortCut'#3'Z`'#0#1#7'Command'#7#13'ecGotoMarker0'#8
+'ShortCut'#3'0@'#0#1#7'Command'#7#13'ecGotoMarker1'#8'ShortCut'#3'1@'#0#1#7
+'Command'#7#13'ecGotoMarker2'#8'ShortCut'#3'2@'#0#1#7'Command'#7#13'ecGotoMa'
+'rker3'#8'ShortCut'#3'3@'#0#1#7'Command'#7#13'ecGotoMarker4'#8'ShortCut'#3'4'
+'@'#0#1#7'Command'#7#13'ecGotoMarker5'#8'ShortCut'#3'5@'#0#1#7'Command'#7#13
+'ecGotoMarker6'#8'ShortCut'#3'6@'#0#1#7'Command'#7#13'ecGotoMarker7'#8'Short'
+'Cut'#3'7@'#0#1#7'Command'#7#13'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7'Comma'
+'nd'#7#13'ecGotoMarker9'#8'ShortCut'#3'9@'#0#1#7'Command'#7#12'ecSetMarker0'
+#8'ShortCut'#3'0`'#0#1#7'Command'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'#0#1#7
+'Command'#7#12'ecSetMarker2'#8'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecSetMark'
+'er3'#8'ShortCut'#3'3`'#0#1#7'Command'#7#12'ecSetMarker4'#8'ShortCut'#3'4`'#0
+#1#7'Command'#7#12'ecSetMarker5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12'ecSet'
+'Marker6'#8'ShortCut'#3'6`'#0#1#7'Command'#7#12'ecSetMarker7'#8'ShortCut'#3
+'7`'#0#1#7'Command'#7#12'ecSetMarker8'#8'ShortCut'#3'8`'#0#1#7'Command'#7#12
+'ecSetMarker9'#8'ShortCut'#3'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCu'
+'t'#4'1'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160#0#0#0
,#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Command'#7#12
+'EcFoldLevel1'#8'ShortCut'#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8
+'ShortCut'#4'5'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'#4'6'
+#160#0#0#0#1#7'Command'#7#12'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1#7'Co'
+'mmand'#7#12'EcFoldLevel8'#8'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12'EcFo'
+'ldLevel9'#8'ShortCut'#4'9'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8'Shor'
+'tCut'#4'0'#160#0#0#0#1#7'Command'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'#160#0
+#0#0#1#7'Command'#7#15'EcUnFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7'Comma'
+'nd'#7#18'EcToggleMarkupWord'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7#14'e'
+'cNormalSelect'#8'ShortCut'#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8'Shor'
+'tCut'#3'C`'#0#1#7'Command'#7#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'Comma'
+'nd'#7#5'ecTab'#8'ShortCut'#2#9#0#1#7'Command'#7#10'ecShiftTab'#8'ShortCut'#3
+#9' '#0#1#7'Command'#7#14'ecMatchBracket'#8'ShortCut'#3'B`'#0#1#7'Command'#7
+#10'ecColSelUp'#8'ShortCut'#4'&'#160#0#0#0#1#7'Command'#7#12'ecColSelDown'#8
+'ShortCut'#4'('#160#0#0#0#1#7'Command'#7#12'ecColSelLeft'#8'ShortCut'#4'%'
+#160#0#0#0#1#7'Command'#7#13'ecColSelRight'#8'ShortCut'#4''''#160#0#0#0#1#7
+'Command'#7#16'ecColSelPageDown'#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'#7#18
+'ecColSelPageBottom'#8'ShortCut'#4'"'#224#0#0#0#1#7'Command'#7#14'ecColSelPa'
+'geUp'#8'ShortCut'#4'!'#160#0#0#0#1#7'Command'#7#15'ecColSelPageTop'#8'Short'
+'Cut'#4'!'#224#0#0#0#1#7'Command'#7#17'ecColSelLineStart'#8'ShortCut'#4'$'
+#160#0#0#0#1#7'Command'#7#15'ecColSelLineEnd'#8'ShortCut'#4'#'#160#0#0#0#1#7
+'Command'#7#17'ecColSelEditorTop'#8'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7
+#20'ecColSelEditorBottom'#8'ShortCut'#4'#'#224#0#0#0#0#12'MouseActions'#14#1
+#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10
+'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCare'
+'t'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'
+#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'
+#8'ClickDir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Prior'
+'ity'#2#0#0#1#5'Shift'#11#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6
+'wn'#7#14'SynEditKeyDown'#10'OnKeyPress'#7#15'SynEditKeyPress'#11'OnClickLin'
+'k'#7#16'SynEditClickLink'#11'OnMouseLink'#7#16'SynEditMouseLink'#12'Gutter.'
+'Width'#2'9'#19'Gutter.MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6
+'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Com'
+'mand'#2#13#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9
+'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'Click'
+'Dir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0
+#0#0#11'Highlighter'#7#17'SynFreePascalSyn1'#10'Keystrokes'#14#1#7'Command'#7
+#4'ecUp'#8'ShortCut'#2'&'#0#1#7'Command'#7#7'ecSelUp'#8'ShortCut'#3'& '#0#1#7
+'Command'#7#10'ecScrollUp'#8'ShortCut'#3'&@'#0#1#7'Command'#7#6'ecDown'#8'Sh'
+'ortCut'#2'('#0#1#7'Command'#7#9'ecSelDown'#8'ShortCut'#3'( '#0#1#7'Command'
+#7#12'ecScrollDown'#8'ShortCut'#3'(@'#0#1#7'Command'#7#6'ecLeft'#8'ShortCut'
+#2'%'#0#1#7'Command'#7#9'ecSelLeft'#8'ShortCut'#3'% '#0#1#7'Command'#7#10'ec'
+'WordLeft'#8'ShortCut'#3'%@'#0#1#7'Command'#7#13'ecSelWordLeft'#8'ShortCut'#3
+'%`'#0#1#7'Command'#7#7'ecRight'#8'ShortCut'#2''''#0#1#7'Command'#7#10'ecSel'
+'Right'#8'ShortCut'#3''' '#0#1#7'Command'#7#11'ecWordRight'#8'ShortCut'#3''''
+'@'#0#1#7'Command'#7#14'ecSelWordRight'#8'ShortCut'#3'''`'#0#1#7'Command'#7
+#10'ecPageDown'#8'ShortCut'#2'"'#0#1#7'Command'#7#13'ecSelPageDown'#8'ShortC'
+'ut'#3'" '#0#1#7'Command'#7#12'ecPageBottom'#8'ShortCut'#3'"@'#0#1#7'Command'
+#7#15'ecSelPageBottom'#8'ShortCut'#3'"`'#0#1#7'Command'#7#8'ecPageUp'#8'Shor'
+'tCut'#2'!'#0#1#7'Command'#7#11'ecSelPageUp'#8'ShortCut'#3'! '#0#1#7'Command'
+#7#9'ecPageTop'#8'ShortCut'#3'!@'#0#1#7'Command'#7#12'ecSelPageTop'#8'ShortC'
+'ut'#3'!`'#0#1#7'Command'#7#11'ecLineStart'#8'ShortCut'#2'$'#0#1#7'Command'#7
+#14'ecSelLineStart'#8'ShortCut'#3'$ '#0#1#7'Command'#7#11'ecEditorTop'#8'Sho'
+'rtCut'#3'$@'#0#1#7'Command'#7#14'ecSelEditorTop'#8'ShortCut'#3'$`'#0#1#7'Co'
+'mmand'#7#9'ecLineEnd'#8'ShortCut'#2'#'#0#1#7'Command'#7#12'ecSelLineEnd'#8
+'ShortCut'#3'# '#0#1#7'Command'#7#14'ecEditorBottom'#8'ShortCut'#3'#@'#0#1#7
+'Command'#7#17'ecSelEditorBottom'#8'ShortCut'#3'#`'#0#1#7'Command'#7#12'ecTo'
+'ggleMode'#8'ShortCut'#2'-'#0#1#7'Command'#7#6'ecCopy'#8'ShortCut'#3'-@'#0#1
+#7'Command'#7#7'ecPaste'#8'ShortCut'#3'- '#0#1#7'Command'#7#12'ecDeleteChar'
+#8'ShortCut'#2'.'#0#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'. '#0#1#7'Command'
+#7#16'ecDeleteLastChar'#8'ShortCut'#2#8#0#1#7'Command'#7#16'ecDeleteLastChar'
+#8'ShortCut'#3#8' '#0#1#7'Command'#7#16'ecDeleteLastWord'#8'ShortCut'#3#8'@'
+#0#1#7'Command'#7#6'ecUndo'#8'ShortCut'#4#8#128#0#0#0#1#7'Command'#7#6'ecRed'
+'o'#8'ShortCut'#4#8#160#0#0#0#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#2#13
+#0#1#7'Command'#7#11'ecSelectAll'#8'ShortCut'#3'A@'#0#1#7'Command'#7#6'ecCop'
+'y'#8'ShortCut'#3'C@'#0#1#7'Command'#7#13'ecBlockIndent'#8'ShortCut'#3'I@'#0
+#1#7'Command'#7#11'ecLineBreak'#8'ShortCut'#3'M@'#0#1#7'Command'#7#15'ecBloc'
+'kUnindent'#8'ShortCut'#3'U@'#0#1#7'Command'#7#7'ecPaste'#8'ShortCut'#3'V@'#0
+#1#7'Command'#7#5'ecCut'#8'ShortCut'#3'X@'#0#1#7'Command'#7#12'ecDeleteLine'
+#8'ShortCut'#3'Y@'#0#1#7'Command'#7#11'ecDeleteEOL'#8'ShortCut'#3'Y`'#0#1#7
+'Command'#7#6'ecUndo'#8'ShortCut'#3'Z@'#0#1#7'Command'#7#6'ecRedo'#8'ShortCu'
+'t'#3'Z`'#0#1#7'Command'#7#13'ecGotoMarker0'#8'ShortCut'#3'0@'#0#1#7'Command'
+#7#13'ecGotoMarker1'#8'ShortCut'#3'1@'#0#1#7'Command'#7#13'ecGotoMarker2'#8
+'ShortCut'#3'2@'#0#1#7'Command'#7#13'ecGotoMarker3'#8'ShortCut'#3'3@'#0#1#7
+'Command'#7#13'ecGotoMarker4'#8'ShortCut'#3'4@'#0#1#7'Command'#7#13'ecGotoMa'
+'rker5'#8'ShortCut'#3'5@'#0#1#7'Command'#7#13'ecGotoMarker6'#8'ShortCut'#3'6'
+'@'#0#1#7'Command'#7#13'ecGotoMarker7'#8'ShortCut'#3'7@'#0#1#7'Command'#7#13
+'ecGotoMarker8'#8'ShortCut'#3'8@'#0#1#7'Command'#7#13'ecGotoMarker9'#8'Short'
+'Cut'#3'9@'#0#1#7'Command'#7#12'ecSetMarker0'#8'ShortCut'#3'0`'#0#1#7'Comman'
+'d'#7#12'ecSetMarker1'#8'ShortCut'#3'1`'#0#1#7'Command'#7#12'ecSetMarker2'#8
+'ShortCut'#3'2`'#0#1#7'Command'#7#12'ecSetMarker3'#8'ShortCut'#3'3`'#0#1#7'C'
+'ommand'#7#12'ecSetMarker4'#8'ShortCut'#3'4`'#0#1#7'Command'#7#12'ecSetMarke'
+'r5'#8'ShortCut'#3'5`'#0#1#7'Command'#7#12'ecSetMarker6'#8'ShortCut'#3'6`'#0
+#1#7'Command'#7#12'ecSetMarker7'#8'ShortCut'#3'7`'#0#1#7'Command'#7#12'ecSet'
+'Marker8'#8'ShortCut'#3'8`'#0#1#7'Command'#7#12'ecSetMarker9'#8'ShortCut'#3
,'9`'#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'1'#160#0#0#0#1#7'Comman'
+'d'#7#12'EcFoldLevel2'#8'ShortCut'#4'2'#160#0#0#0#1#7'Command'#7#12'EcFoldLe'
+'vel1'#8'ShortCut'#4'3'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'
+#4'4'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel1'#8'ShortCut'#4'5'#160#0#0#0#1
+#7'Command'#7#12'EcFoldLevel6'#8'ShortCut'#4'6'#160#0#0#0#1#7'Command'#7#12
+'EcFoldLevel7'#8'ShortCut'#4'7'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel8'#8
+'ShortCut'#4'8'#160#0#0#0#1#7'Command'#7#12'EcFoldLevel9'#8'ShortCut'#4'9'
+#160#0#0#0#1#7'Command'#7#12'EcFoldLevel0'#8'ShortCut'#4'0'#160#0#0#0#1#7'Co'
+'mmand'#7#13'EcFoldCurrent'#8'ShortCut'#4'-'#160#0#0#0#1#7'Command'#7#15'EcU'
+'nFoldCurrent'#8'ShortCut'#4'+'#160#0#0#0#1#7'Command'#7#18'EcToggleMarkupWo'
+'rd'#8'ShortCut'#4'M'#128#0#0#0#1#7'Command'#7#14'ecNormalSelect'#8'ShortCut'
+#3'N`'#0#1#7'Command'#7#14'ecColumnSelect'#8'ShortCut'#3'C`'#0#1#7'Command'#7
+#12'ecLineSelect'#8'ShortCut'#3'L`'#0#1#7'Command'#7#5'ecTab'#8'ShortCut'#2#9
+#0#1#7'Command'#7#10'ecShiftTab'#8'ShortCut'#3#9' '#0#1#7'Command'#7#14'ecMa'
+'tchBracket'#8'ShortCut'#3'B`'#0#1#7'Command'#7#10'ecColSelUp'#8'ShortCut'#4
+'&'#160#0#0#0#1#7'Command'#7#12'ecColSelDown'#8'ShortCut'#4'('#160#0#0#0#1#7
+'Command'#7#12'ecColSelLeft'#8'ShortCut'#4'%'#160#0#0#0#1#7'Command'#7#13'ec'
+'ColSelRight'#8'ShortCut'#4''''#160#0#0#0#1#7'Command'#7#16'ecColSelPageDown'
+#8'ShortCut'#4'"'#160#0#0#0#1#7'Command'#7#18'ecColSelPageBottom'#8'ShortCut'
+#4'"'#224#0#0#0#1#7'Command'#7#14'ecColSelPageUp'#8'ShortCut'#4'!'#160#0#0#0
+#1#7'Command'#7#15'ecColSelPageTop'#8'ShortCut'#4'!'#224#0#0#0#1#7'Command'#7
+#17'ecColSelLineStart'#8'ShortCut'#4'$'#160#0#0#0#1#7'Command'#7#15'ecColSel'
+'LineEnd'#8'ShortCut'#4'#'#160#0#0#0#1#7'Command'#7#17'ecColSelEditorTop'#8
+'ShortCut'#4'$'#224#0#0#0#1#7'Command'#7#20'ecColSelEditorBottom'#8'ShortCut'
+#4'#'#224#0#0#0#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssSh'
+'ift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickD'
+'ir'#7#6'cdDown'#7'Command'#2#1#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0
+#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'
+#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'
+#2#1#9'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#5'ssAlt'#0
+#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7
+#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option'
+#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#5'ssAlt'#0#9'ShiftMask'#11#7
+'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'Cl'
+'ickDir'#7#6'cdDown'#7'Command'#2#3#9'MoveCaret'#9#6'Option'#2#1#8'Priority'
+#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10'ClickCoun'
+'t'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#12#9'MoveCaret'#8#6'Opt'
+'ion'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6
+'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'ClickDir'#7#6'cdDown'#7'Command'#2#6
+#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'
+#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccTriple'#8'ClickDir'#7#6'cdD'
+'own'#7'Command'#2#7#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shif'
+'t'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#6'ccQuad'#8
+'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'MoveCaret'#9#6'Option'#2#0#8'Priorit'
+'y'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#8'mbMiddle'#10'Click'
+'Count'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#10#9'MoveCaret'#9
+#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#7
+'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSi'
+'ngle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#11#9'MoveCaret'#8#6'Option'#2#0#8
+'Priority'#2#0#0#0#15'MouseSelActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6
+'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7
+'Command'#2#3#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7
+'ssShift'#5'ssAlt'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#0#6'Button'#7#6'mbL'
+'eft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDown'#7'Command'#2#3#9
+'MoveCaret'#9#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11
+#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'
+#7'Command'#2#12#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'ccDouble'#8'Cl'
+'ickDir'#7#6'cdDown'#7'Command'#2#6#9'MoveCaret'#9#6'Option'#2#0#8'Priority'
+#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'
+#7#8'ccTriple'#8'ClickDir'#7#6'cdDown'#7'Command'#2#7#9'MoveCaret'#9#6'Optio'
+'n'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mb'
+'Left'#10'ClickCount'#7#6'ccQuad'#8'ClickDir'#7#6'cdDown'#7'Command'#2#8#9'M'
+'oveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11
+#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#6'cdDo'
+'wn'#7'Command'#2#10#9'MoveCaret'#9#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shif'
+'t'#11#6'ssCtrl'#0#9'ShiftMask'#11#7'ssShift'#5'ssAlt'#6'ssCtrl'#0#6'Button'
+#7#6'mbLeft'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2
+#11#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#15'MouseSelActions'#14#1
+#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#8'cc'
+'Single'#8'ClickDir'#7#6'cdDown'#7'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0
+#8'Priority'#2#0#0#0#13'Lines.Strings'#1#6#12'program new;'#6#5'begin'#6#4'e'
+'nd.'#0#7'Options'#11#12'eoAutoIndent'#11'eoGroupUndo'#15'eoScrollPastEol'#11
+'eoSmartTabs'#11'eoTabIndent'#14'eoTabsToSpaces'#20'eoTrimTrailingSpaces'#18
+'eoBracketHighlight'#0#21'BracketHighlightStyle'#7#8'sbhsBoth'#8'OnChange'#7
+#13'SynEditChange'#16'OnProcessCommand'#7#21'SynEditProcessCommand'#20'OnPro'
+'cessUserCommand'#7#25'SynEditProcessUserCommand'#19'OnSpecialLineColors'#7
+#24'SynEditSpecialLineColors'#14'OnStatusChange'#7#19'SynEditStatusChange'#0
+#244#18'TSynGutterPartList'#0#0#15'TSynGutterMarks'#0#5'Width'#2#23#0#0#20'T'
+'SynGutterLineNumber'#0#5'Width'#2#17#12'MouseActions'#14#0#21'MarkupInfo.Ba'
+'ckground'#7#9'clBtnFace'#21'MarkupInfo.Foreground'#7#6'clNone'#10'DigitCoun'
+'t'#2#2#30'ShowOnlyLineNumbersMultiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZero'
+'s'#8#0#0#17'TSynGutterChanges'#0#5'Width'#2#4#13'ModifiedColor'#4#252#233#0
+#0#10'SavedColor'#7#7'clGreen'#0#0#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0
+#21'TSynGutterCodeFolding'#0#12'MouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'
,#11#0#6'Button'#7#7'mbRight'#10'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cd'
+'Up'#7'Command'#2#16#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shif'
+'t'#11#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickCount'
+#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'
+#2#0#8'Priority'#2#0#0#1#5'Shift'#11#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'
+'Command'#2#9#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#13'Lines.Stri'
+'ngs'#1#6#12'program new;'#6#5'begin'#6#4'end.'#0#7'Options'#11#12'eoAutoInd'
+'ent'#11'eoGroupUndo'#15'eoScrollPastEol'#11'eoSmartTabs'#11'eoTabIndent'#14
+'eoTabsToSpaces'#20'eoTrimTrailingSpaces'#18'eoBracketHighlight'#0#21'Bracke'
+'tHighlightStyle'#7#8'sbhsBoth'#8'OnChange'#7#13'SynEditChange'#16'OnProcess'
+'Command'#7#21'SynEditProcessCommand'#20'OnProcessUserCommand'#7#25'SynEditP'
+'rocessUserCommand'#19'OnSpecialLineColors'#7#24'SynEditSpecialLineColors'#14
+'OnStatusChange'#7#19'SynEditStatusChange'#0#244#18'TSynGutterPartList'#0#0
+#15'TSynGutterMarks'#0#5'Width'#2#23#0#0#20'TSynGutterLineNumber'#0#5'Width'
+#2#17#12'MouseActions'#14#0#21'MarkupInfo.Background'#7#9'clBtnFace'#21'Mark'
+'upInfo.Foreground'#7#6'clNone'#10'DigitCount'#2#2#30'ShowOnlyLineNumbersMul'
+'tiplesOf'#2#1#9'ZeroStart'#8#12'LeadingZeros'#8#0#0#17'TSynGutterChanges'#0
+#5'Width'#2#4#13'ModifiedColor'#4#252#233#0#0#10'SavedColor'#7#7'clGreen'#0#0
,#19'TSynGutterSeparator'#0#5'Width'#2#2#0#0#21'TSynGutterCodeFolding'#0#12'M'
+'ouseActions'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#7'mbRight'#10
+'ClickCount'#7#8'ccSingle'#8'ClickDir'#7#4'cdUp'#7'Command'#2#16#9'MoveCaret'
+#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#7'ssShift'
+#0#6'Button'#7#8'mbMiddle'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'
+#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#1#5'Shift'#11
+#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'Click'
+'Dir'#7#6'cdDown'#7'Command'#2#0#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0
+#0#0#21'MarkupInfo.Background'#7#6'clNone'#21'MarkupInfo.Foreground'#7#6'clG'
+'ray'#20'MouseActionsExpanded'#14#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'
+#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2
+#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MouseActionsCollapse'
+'d'#14#1#5'Shift'#11#6'ssCtrl'#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'm'
+'bLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9
+'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11
+#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6
+'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0
+#0#0#17'TSynFreePascalSyn'#17'SynFreePascalSyn1'#7'Enabled'#8#23'CommentAttr'
+'i.Foreground'#7#6'clBlue'#18'CommentAttri.Style'#11#6'fsBold'#0#26'Identifi'
+'erAttri.Foreground'#7#9'clDefault'#22'NumberAttri.Foreground'#7#6'clNavy'#22
+'StringAttri.Foreground'#7#6'clBlue'#22'SymbolAttri.Foreground'#7#5'clRed'#25
+'DirectiveAttri.Foreground'#7#5'clRed'#20'DirectiveAttri.Style'#11#6'fsBold'
+#0#12'CompilerMode'#7#9'pcmObjFPC'#14'NestedComments'#9#4'left'#3'@'#1#3'top'
+#2#16#0#0#0
+#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#1#5'Shift'#11
+#7'ssShift'#0#9'ShiftMask'#11#7'ssShift'#0#6'Button'#7#8'mbMiddle'#10'ClickC'
+'ount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'O'
+'ption'#2#1#8'Priority'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6
+'mbLeft'#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#0#9
+'MoveCaret'#8#6'Option'#2#0#8'Priority'#2#0#0#0#21'MarkupInfo.Background'#7#6
+'clNone'#21'MarkupInfo.Foreground'#7#6'clGray'#20'MouseActionsExpanded'#14#1
+#5'Shift'#11#0#9'ShiftMask'#11#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'cc'
+'Any'#8'ClickDir'#7#6'cdDown'#7'Command'#2#14#9'MoveCaret'#8#6'Option'#2#0#8
+'Priority'#2#0#0#0#21'MouseActionsCollapsed'#14#1#5'Shift'#11#6'ssCtrl'#0#9
+'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'#10'ClickCount'#7#5'ccAny'#8
+'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCaret'#8#6'Option'#2#0#8'Priori'
+'ty'#2#0#0#1#5'Shift'#11#0#9'ShiftMask'#11#6'ssCtrl'#0#6'Button'#7#6'mbLeft'
+#10'ClickCount'#7#5'ccAny'#8'ClickDir'#7#6'cdDown'#7'Command'#2#15#9'MoveCar'
+'et'#8#6'Option'#2#1#8'Priority'#2#0#0#0#0#0#0#0#17'TSynFreePascalSyn'#17'Sy'
+'nFreePascalSyn1'#7'Enabled'#8#23'CommentAttri.Foreground'#7#6'clBlue'#18'Co'
+'mmentAttri.Style'#11#6'fsBold'#0#26'IdentifierAttri.Foreground'#7#9'clDefau'
+'lt'#22'NumberAttri.Foreground'#7#6'clNavy'#22'StringAttri.Foreground'#7#6'c'
+'lBlue'#22'SymbolAttri.Foreground'#7#5'clRed'#25'DirectiveAttri.Foreground'#7
+#5'clRed'#20'DirectiveAttri.Style'#11#6'fsBold'#0#12'CompilerMode'#7#9'pcmOb'
+'jFPC'#14'NestedComments'#9#4'left'#3'@'#1#3'top'#2#16#0#0#0
]);

View File

@ -28,7 +28,8 @@ interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, SynHighlighterPas, SynEdit, SynEditMarkupHighAll,
mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType,MufasaBase, SynEditMarkupSpecialLine, Graphics, Controls;
mmlpsthread,ComCtrls, SynEditKeyCmds, LCLType,MufasaBase, SynEditMarkupSpecialLine, Graphics, Controls,
v_ideCodeInsight, v_ideCodeParser, CastaliaPasLexTypes, CastaliaSimplePasPar, SynEditHighlighter;
const
ecCodeCompletion = ecUserFirst;
type
@ -46,11 +47,16 @@ type
SynEdit: TSynEdit;
SynFreePascalSyn1: TSynFreePascalSyn;
procedure SynEditChange(Sender: TObject);
procedure SynEditClickLink(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SynEditDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure SynEditDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure SynEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
procedure SynEditKeyPress(Sender: TObject; var Key: char);
procedure SynEditMouseLink(Sender: TObject; X, Y: Integer;
var AllowMouseLink: Boolean);
procedure SynEditProcessCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
procedure SynEditProcessUserCommand(Sender: TObject;
@ -81,10 +87,43 @@ type
{ public declarations }
end;
function WordAtCaret(e: TSynEdit; var sp, ep: Integer; Start: Integer = -1): string;
implementation
uses
TestUnit, SynEditTypes, LCLIntF, StrUtils,framefunctionlist;
function WordAtCaret(e: TSynEdit; var sp, ep: Integer; Start: Integer = -1): string;
var
s: string;
l: Integer;
begin
Result := '';
if (Start = -1) then
Start := e.CaretX;
sp := Start - 1;
ep := Start - 1;
s := e.Lines[e.CaretY - 1];
l := Length(s);
//if (sp > l) then
// Dec(sp);
if (sp < 1) or (sp > l) or (not (s[sp] in ['a'..'z', 'A'..'Z', '0'..'9', '_'])) then
begin
Inc(sp);
Inc(ep);
if (sp < 1) or (sp > l) or (not (s[sp] in ['a'..'z', 'A'..'Z', '0'..'9', '_'])) then
Exit('');
end;
while (sp > 1) and (sp <= l) and (s[sp - 1] in ['a'..'z', 'A'..'Z', '0'..'9', '_']) do
Dec(sp);
while (ep >= 1) and (ep < l) and (s[ep + 1] in ['a'..'z', 'A'..'Z', '0'..'9', '_']) do
Inc(ep);
Result := Copy(s, sp, ep - sp + 1);
end;
{ TScriptFrame }
procedure TScriptFrame.SynEditChange(Sender: TObject);
@ -98,6 +137,44 @@ begin
end;
end;
procedure TScriptFrame.SynEditClickLink(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
mp: TCodeInsight;
ms: TMemoryStream;
d: TDeclaration;
sp, ep: Integer;
begin
mp := TCodeInsight.Create;
mp.OnMessage := @Form1.OnCCMessage;
mp.OnFindInclude := @Form1.OnCCFindInclude;
ms := TMemoryStream.Create;
SynEdit.Lines.SaveToStream(ms);
try
SynEdit.GetWordBoundsAtRowCol(SynEdit.CaretXY, sp, ep);
mp.Run(ms);
mp.Position := SynEdit.SelStart + (ep - SynEdit.CaretX) - 1;
d := mp.FindVarBase(mp.GetExpressionAtPos);
if (d <> nil) then
begin
if (TCodeInsight(d.Parser).FileName <> mp.FileName) then
mDebugLn('Declared in "' + TCodeInsight(d.Parser).FileName + '" at ' + IntToStr(d.StartPos))
else
begin
SynEdit.SelStart := d.StartPos + 1;
SynEdit.SelEnd := d.StartPos + Length(TrimRight(d.RawText)) + 1;
end;
end;
finally
FreeAndNil(ms);
FreeAndNil(mp);
end;
end;
procedure TScriptFrame.SynEditDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TFunctionListFrame then
@ -125,6 +202,22 @@ begin
Form1.ActionFindNextExecute(Sender);
key := 0;
end;
Form1.CodeCompletionForm.HandleKeyDown(Sender, Key, Shift);
end;
procedure TScriptFrame.SynEditKeyPress(Sender: TObject; var Key: char);
begin
Form1.CodeCompletionForm.HandleKeyPress(Sender, Key);
end;
procedure TScriptFrame.SynEditMouseLink(Sender: TObject; X, Y: Integer;
var AllowMouseLink: Boolean);
var
s: string;
Attri: TSynHighlighterAttributes;
begin
AllowMouseLink := SynEdit.GetHighlighterAttriAtRowCol(Point(X, Y), s, Attri) and (Attri.Name = 'Identifier');
end;
procedure TScriptFrame.SynEditProcessCommand(Sender: TObject;
@ -144,14 +237,22 @@ end;
procedure TScriptFrame.SynEditProcessUserCommand(Sender: TObject;
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
var
{var
LineText,SearchText : string;
Caret : TPoint;
i,endI : integer;
i,endI : integer;}
var
mp: TCodeInsight;
ms: TMemoryStream;
ItemList, InsertList: TStringList;
sp, ep: Integer;
p: TPoint;
s, Filter: string;
Attri: TSynHighlighterAttributes;
begin
if Command = ecCodeCompletion then
if (Command = ecCodeCompletion) and ((not SynEdit.GetHighlighterAttriAtRowCol(SynEdit.CaretXY, s, Attri)) or (Attri.Name = 'Identifier')) then
begin
form1.FunctionListShown(True);
{form1.FunctionListShown(True);
with form1.frmFunctionList do
if editSearchList.CanFocus then
begin;
@ -187,8 +288,63 @@ begin
SynEdit.SelectedColor.Foreground:= clBlack;
SynEdit.SelectedColor.Background:= clWhite;
Synedit.MarkupByClass[TSynEditMarkupHighlightAllCaret].TempDisable;
end;}
mp := TCodeInsight.Create;
mp.OnMessage := @Form1.OnCCMessage;
mp.OnFindInclude := @Form1.OnCCFindInclude;
ms := TMemoryStream.Create;
ItemList := TStringList.Create;
InsertList := TStringList.Create;
InsertList.Sorted := True;
Synedit.Lines.SaveToStream(ms);
try
Filter := WordAtCaret(Synedit, sp, ep);
Form1.CodeCompletionStart := Point(sp, Synedit.CaretY);
mp.Run(ms, nil, Synedit.SelStart + (ep - Synedit.CaretX) - 1);
s := mp.GetExpressionAtPos;
if (s <> '') then
begin
sp := LastDelimiter('.', s);
if (sp > 0) then
Delete(s, sp, Length(s) - sp + 1)
else
s := '';
end;
mp.FillSynCompletionProposal(ItemList, InsertList, s);
p := SynEdit.ClientToScreen(SynEdit.RowColumnToPixels(Point(ep, SynEdit.CaretY)));
p.y := p.y + SynEdit.LineHeight;
Form1.CodeCompletionForm.Show(p, ItemList, InsertList, Filter, SynEdit);
finally
FreeAndNil(ms);
FreeAndNil(mp);
ItemList.Free;
InsertList.Free;
end;
end;
if Form1.CodeCompletionForm.Visible then
case Command of
ecDeleteChar, ecDeleteWord, ecDeleteEOL:
begin
if (SynEdit.CaretY = Form1.CodeCompletionStart.y) then
begin
//e.GetWordBoundsAtRowCol(acp_start, sp, ep);
s := WordAtCaret(SynEdit, sp, ep, Form1.CodeCompletionStart.x);
if (SynEdit.CaretX >= Form1.CodeCompletionStart.x) and (SynEdit.CaretX <= ep) then
begin
Form1.CodeCompletionForm.ListBox.Filter := s;
Exit;
end;
end;
Form1.CodeCompletionForm.Hide;
end;
end;
end;
procedure TScriptFrame.SynEditSpecialLineColors(Sender: TObject;
@ -204,6 +360,9 @@ end;
procedure TScriptFrame.SynEditStatusChange(Sender: TObject;
Changes: TSynStatusChanges);
var
sp, ep: Integer;
s: string;
begin
{$IFDEF UpdateEditButtons}
if scSelection in changes then
@ -213,8 +372,25 @@ begin
form1.TT_Paste.Enabled:= SynEdit.CanPaste;
end;
{$ENDIF}
end;
if Form1.CodeCompletionForm.Visible then
if (scAll in Changes) or (scTopLine in Changes) then
Form1.CodeCompletionForm.Visible := False
else if (scCaretX in Changes) or (scCaretY in Changes) or (scSelection in Changes) or (scModified in Changes) then
begin
if (SynEdit.CaretY = Form1.CodeCompletionStart.y) then
begin
s := WordAtCaret(SynEdit, sp, ep, Form1.CodeCompletionStart.x);
if (SynEdit.CaretX >= Form1.CodeCompletionStart.x) and (SynEdit.CaretX - 1 <= ep) then
begin
Form1.CodeCompletionForm.ListBox.Filter := s;
Exit;
end;
end;
Form1.CodeCompletionForm.Hide;
end;
end;
procedure TScriptFrame.undo;
begin

View File

@ -207,8 +207,8 @@ object Form1: TForm1
end
object StatusBar: TStatusBar
Left = 0
Height = 23
Top = 512
Height = 22
Top = 513
Width = 739
Panels = <
item
@ -230,7 +230,7 @@ object Form1: TForm1
object PanelMemo: TPanel
Left = 0
Height = 154
Top = 358
Top = 359
Width = 739
Align = alBottom
ClientHeight = 154
@ -250,19 +250,19 @@ object Form1: TForm1
Cursor = crVSplit
Left = 0
Height = 5
Top = 353
Top = 354
Width = 739
Align = alBottom
ResizeAnchor = akBottom
end
object ScriptPanel: TPanel
Left = 0
Height = 329
Height = 330
Top = 24
Width = 739
Align = alClient
BevelOuter = bvNone
ClientHeight = 329
ClientHeight = 330
ClientWidth = 739
DockSite = True
TabOrder = 4
@ -270,7 +270,7 @@ object Form1: TForm1
OnDockOver = ScriptPanelDockOver
object PageControl1: TPageControl
Left = 155
Height = 294
Height = 295
Top = 0
Width = 584
Align = alClient
@ -289,7 +289,7 @@ object Form1: TForm1
object SearchPanel: TPanel
Left = 0
Height = 35
Top = 294
Top = 295
Width = 739
Align = alBottom
BevelOuter = bvSpace
@ -385,7 +385,7 @@ object Form1: TForm1
end
object LabeledEditSearch: TLabeledEdit
Left = 104
Height = 21
Height = 23
Top = 6
Width = 174
EditLabel.AnchorSideLeft.Control = LabeledEditSearch
@ -393,10 +393,10 @@ object Form1: TForm1
EditLabel.AnchorSideTop.Side = asrCenter
EditLabel.AnchorSideRight.Control = LabeledEditSearch
EditLabel.AnchorSideBottom.Control = LabeledEditSearch
EditLabel.Left = 73
EditLabel.Height = 14
EditLabel.Left = 71
EditLabel.Height = 16
EditLabel.Top = 9
EditLabel.Width = 28
EditLabel.Width = 30
EditLabel.Caption = 'Find: '
EditLabel.ParentColor = False
LabelPosition = lpLeft
@ -409,9 +409,9 @@ object Form1: TForm1
end
object CheckBoxMatchCase: TCheckBox
Left = 320
Height = 17
Height = 19
Top = 7
Width = 72
Width = 80
Caption = 'Match case'
OnClick = CheckBoxMatchCaseClick
TabOrder = 1
@ -419,28 +419,28 @@ object Form1: TForm1
end
object SplitterFunctionList: TSplitter
Left = 150
Height = 294
Height = 295
Top = 0
Width = 5
OnCanResize = SplitterFunctionListCanResize
Visible = False
end
inline frmFunctionList: TFunctionListFrame
Height = 294
Height = 295
Width = 150
ClientHeight = 294
ClientHeight = 295
ClientWidth = 150
OnEndDock = nil
TabOrder = 3
inherited FunctionList: TTreeView
Height = 255
Height = 252
Width = 150
OnChange = FunctionListChange
OnEnter = FunctionListEnter
OnExit = FunctionListExit
end
inherited editSearchList: TEdit
Top = 273
Top = 272
Width = 150
OnExit = editSearchListExit
OnKeyDown = editSearchListKeyDown

File diff suppressed because it is too large Load Diff

View File

@ -42,7 +42,7 @@ uses
SynEditMarkupHighAll, LMessages, Buttons,
stringutil,mufasatypesutil,mufasabase,
about, framefunctionlist, ocr, updateform, simbasettings, psextension, virtualextension,
extensionmanager, settingssandbox;
extensionmanager, settingssandbox, v_ideCodeInsight, v_ideCodeParser, CastaliaPasLexTypes, CastaliaSimplePasPar, v_AutoCompleteForm, PSDump;
const
SimbaVersion = 587;
@ -314,6 +314,10 @@ type
procedure TT_UpdateClick(Sender: TObject);
procedure UpdateMenuButtonClick(Sender: TObject);
procedure UpdateTimerCheck(Sender: TObject);
procedure OnCCMessage(Sender: TObject; const Typ: TMessageEventType; const Msg: string; X, Y: Integer);
procedure OnCompleteCode(Str: string);
function OnCCFindInclude(Sender: TObject; var FileName: string): Boolean;
private
PopupTab : integer;
RecentFileItems : array of TMenuItem;
@ -330,6 +334,8 @@ type
SearchString : string;
CurrScript : TScriptFrame; //The current scriptframe
CurrTab : TMufasaTab; //The current TMufasaTab
CodeCompletionForm: TAutoCompletePopup;
CodeCompletionStart: TPoint;
Tabs : TList;
Manager: TIOManager;
OCR_Fonts: TMOCR;
@ -427,8 +433,41 @@ end;
var
DebugCriticalSection: syncobjs.TCriticalSection;
procedure TForm1.ProcessDebugStream(Sender: TObject);
procedure TForm1.OnCCMessage(Sender: TObject; const Typ: TMessageEventType; const Msg: string; X, Y: Integer);
begin
if (Typ = meNotSupported) then
Exit;
if (Sender is TmwSimplePasPar) then
if (TmwSimplePasPar(Sender).Lexer.TokenID = tok_DONE) then
Exit;
mDebugLn('ERROR: '+Format('%d:%d %s', [Y + 1, X, Msg])+' in '+TCodeInsight(Sender).FileName);
end;
procedure TForm1.OnCompleteCode(Str: string);
var
sp, ep: Integer;
s: string;
begin
if (Str <> '') then
begin
s := WordAtCaret(CurrScript.SynEdit, sp, ep);
if (s <> '') then
begin
CurrScript.SynEdit.SelStart := CurrScript.SynEdit.SelStart + (sp - CurrScript.SynEdit.CaretX);
CurrScript.SynEdit.SelEnd := CurrScript.SynEdit.SelStart + (ep - CurrScript.SynEdit.CaretX) + 1;
CurrScript.SynEdit.SelText := Str;
end
else
CurrScript.SynEdit.InsertTextAtCaret(Str);
end;
end;
function TForm1.OnCCFindInclude(Sender: TObject; var FileName: string): Boolean;
begin
Result := False;
end;
procedure TForm1.ProcessDebugStream(Sender: TObject);
begin
if length(DebugStream) = 0 then
Exit;
@ -1482,6 +1521,7 @@ end;
procedure TForm1.StopCodeCompletion;
begin
CodeCompletionForm.Hide;
if frmFunctionList.InCodeCompletion then
with CurrScript,frmFunctionList do
begin;
@ -1699,6 +1739,11 @@ begin
MainDir:= ExtractFileDir(Application.ExeName);
RecentFiles := TStringList.Create;
SimbaSettingsFile := MainDir + DS + 'settings.xml';
//AutoCompletionStart := Point(-1, -1);
CodeCompletionForm := TAutoCompletePopup.Create(Self);
CodeCompletionForm.InsertProc := @OnCompleteCode;
{$ifdef MSWindows}
ConsoleVisible := True;
PrevWndProc := Windows.WNDPROC(GetWindowLong(self.handle,GWL_WNDPROC));
@ -1748,7 +1793,6 @@ begin
FirstRun := true;//Our next run is the first run.
HandleParameters;
TT_Update.Visible:= false;
end;
procedure TForm1.FormDestroy(Sender: TObject);