Skip to content

Commit 7b05d29

Browse files
committed
bk/2024-08-28-0143
1 parent c611d88 commit 7b05d29

File tree

5 files changed

+153
-3
lines changed

5 files changed

+153
-3
lines changed

Package/DelphiAIDeveloper.dpk

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ contains
110110
DelphiAIDev.CodeCompletion.Vars in '..\Src\CodeCompletion\DelphiAIDev.CodeCompletion.Vars.pas',
111111
DelphiAIDev.IDE.OTAIDENotifier in '..\Src\IDE\OTAIDENotifier\DelphiAIDev.IDE.OTAIDENotifier.pas',
112112
DelphiAIDev.IDE.OTAEditorNotifier in '..\Src\IDE\OTAEditorNotifier\DelphiAIDev.IDE.OTAEditorNotifier.pas',
113-
DelphiAIDev.IDE.NTAEditViewNotifier in '..\Src\IDE\NTAEditViewNotifier\DelphiAIDev.IDE.NTAEditViewNotifier.pas';
113+
DelphiAIDev.IDE.NTAEditViewNotifier in '..\Src\IDE\NTAEditViewNotifier\DelphiAIDev.IDE.NTAEditViewNotifier.pas',
114+
DelphiAIDev.CodeCompletion.Search in '..\Src\CodeCompletion\DelphiAIDev.CodeCompletion.Search.pas';
114115

115116
end.

Package/DelphiAIDeveloper.dproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@
226226
<DCCReference Include="..\Src\IDE\OTAIDENotifier\DelphiAIDev.IDE.OTAIDENotifier.pas"/>
227227
<DCCReference Include="..\Src\IDE\OTAEditorNotifier\DelphiAIDev.IDE.OTAEditorNotifier.pas"/>
228228
<DCCReference Include="..\Src\IDE\NTAEditViewNotifier\DelphiAIDev.IDE.NTAEditViewNotifier.pas"/>
229+
<DCCReference Include="..\Src\CodeCompletion\DelphiAIDev.CodeCompletion.Search.pas"/>
229230
<RcItem Include="Img\c4d_Logo.bmp">
230231
<ResourceType>BITMAP</ResourceType>
231232
<ResourceId>c4d_Logo</ResourceId>
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
unit DelphiAIDev.CodeCompletion.Search;
2+
3+
interface
4+
5+
uses
6+
System.SysUtils,
7+
System.Classes,
8+
ToolsAPI,
9+
DelphiAIDev.Types,
10+
DelphiAIDev.Consts,
11+
DelphiAIDev.Settings,
12+
DelphiAIDev.Utils,
13+
DelphiAIDev.Utils.OTA,
14+
DelphiAIDev.CodeCompletion.Vars,
15+
DelphiAIDev.Chat;
16+
17+
type
18+
IDelphiAIDevCodeCompletionSearch = interface
19+
['{5F8BDEE9-14DC-4C8C-BA7A-681A94844AD8}']
20+
procedure Process(const AContext: IOTAKeyContext);
21+
end;
22+
23+
TDelphiAIDevCodeCompletionSearch = class(TInterfacedObject, IDelphiAIDevCodeCompletionSearch)
24+
private
25+
FSettings: TDelphiAIDevSettings;
26+
FQuestions: TStrings;
27+
FChat: TDelphiAIDevChat;
28+
protected
29+
procedure Process(const AContext: IOTAKeyContext);
30+
public
31+
class function New: IDelphiAIDevCodeCompletionSearch;
32+
constructor Create;
33+
destructor Destroy; override;
34+
end;
35+
36+
implementation
37+
38+
class function TDelphiAIDevCodeCompletionSearch.New: IDelphiAIDevCodeCompletionSearch;
39+
begin
40+
Result := Self.Create;
41+
end;
42+
43+
constructor TDelphiAIDevCodeCompletionSearch.Create;
44+
begin
45+
FSettings := TDelphiAIDevSettings.GetInstance;
46+
FChat := TDelphiAIDevChat.Create;
47+
FQuestions := TStringList.Create;
48+
end;
49+
50+
destructor TDelphiAIDevCodeCompletionSearch.Destroy;
51+
begin
52+
FQuestions.Free;
53+
FChat.Free;
54+
inherited;
55+
end;
56+
57+
procedure TDelphiAIDevCodeCompletionSearch.Process(const AContext: IOTAKeyContext);
58+
var
59+
LRow: Integer;
60+
LColumn: Integer;
61+
i: Integer;
62+
LText: string;
63+
begin
64+
FSettings.ValidateFillingSelectedAI;
65+
66+
FQuestions.Clear;
67+
FQuestions.Add(FSettings.LanguageQuestions.GetLanguageDefinition);
68+
FQuestions.Add(TUtilsOTA.GetSelectedBlockOrAllCodeUnit.Trim);
69+
FQuestions.Add(FSettings.LanguageQuestions.GetMsgCodeOnly);
70+
71+
FQuestions.Add('Com base no seguinte código delphi, de uma sugestão ' +
72+
'de código para ser adicionado onde esta o comentário //Suggestion');
73+
TUtils.ShowMsg(FQuestions.Text);
74+
try
75+
FChat.ProcessSend(FQuestions.Text);
76+
except
77+
Abort;
78+
end;
79+
//Self.AddBlockText;
80+
81+
TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Clear;
82+
for i := 0 to Pred(FChat.Response.Count) do
83+
begin
84+
TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Add(FChat.Response[i]);
85+
end;
86+
87+
TUtils.ShowMsg(TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Text);
88+
89+
LRow := AContext.EditBuffer.EditPosition.Row;
90+
LColumn := AContext.EditBuffer.EditPosition.Column;
91+
92+
TDelphiAIDevCodeCompletionVars.GetInstance.LineIni := LRow; // + 1;
93+
TDelphiAIDevCodeCompletionVars.GetInstance.LineEnd := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + (TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count); // + 1 //TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + 1;
94+
95+
//Context.EditBuffer.EditPosition.InsertText(sLineBreak + sLineBreak);
96+
LText := '';
97+
for i := 0 to Pred(TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count) do
98+
LText := LText + sLineBreak;
99+
100+
AContext.EditBuffer.EditPosition.InsertText(LText.TrimRight + sLineBreak);
101+
AContext.EditBuffer.EditPosition.Move(TDelphiAIDevCodeCompletionVars.GetInstance.LineIni, LColumn);
102+
103+
TDelphiAIDevCodeCompletionVars.GetInstance.Row := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni;
104+
TDelphiAIDevCodeCompletionVars.GetInstance.Column := LColumn;
105+
106+
//Context.EditBuffer.EditPosition.MoveBOL;
107+
// //LTextCurrentLineOrBlock := Context.EditBuffer.EditBlock.Text;
108+
// LTextCurrentLineOrBlock := GetCurrentLineOrBlock(CnOtaGetTopMostEditView);
109+
// if LTextCurrentLineOrBlock.Trim.IsEmpty then
110+
// Exit;
111+
end;
112+
113+
end.

Src/KeyboardBinding/DelphiAIDev.KeyboardBinding.pas

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ interface
99
Vcl.Menus,
1010
ToolsAPI,
1111
DelphiAIDev.Utils.CnWizard,
12-
DelphiAIDev.Chat.View;
12+
DelphiAIDev.Chat.View,
13+
DelphiAIDev.CodeCompletion.Search;
1314

1415
type
1516
TDelphiAIDevKeyboardBinding = class(TNotifierObject, IOTAKeyboardBinding)
@@ -141,7 +142,9 @@ procedure TDelphiAIDevKeyboardBinding.KeyAltHome(const Context: IOTAKeyContext;
141142
if KeyCode <> Shortcut(VK_HOME, [ssAlt]) then
142143
Exit;
143144

144-
Self.AddBlockText;
145+
TDelphiAIDevCodeCompletionSearch.New.Process(Context);
146+
147+
//Self.AddBlockText;
145148

146149
LRow := Context.EditBuffer.EditPosition.Row;
147150
LColumn := Context.EditBuffer.EditPosition.Column;
@@ -167,6 +170,35 @@ procedure TDelphiAIDevKeyboardBinding.KeyAltHome(const Context: IOTAKeyContext;
167170
// Exit;
168171

169172
BindingResult := TKeyBindingResult.krUnhandled; //krNextProc;
173+
174+
175+
//**
176+
//Self.AddBlockText;
177+
178+
{LRow := Context.EditBuffer.EditPosition.Row;
179+
LColumn := Context.EditBuffer.EditPosition.Column;
180+
181+
TDelphiAIDevCodeCompletionVars.GetInstance.LineIni := LRow; // + 1;
182+
TDelphiAIDevCodeCompletionVars.GetInstance.LineEnd := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + (TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count); // + 1 //TDelphiAIDevCodeCompletionVars.GetInstance.LineIni + 1;
183+
184+
//Context.EditBuffer.EditPosition.InsertText(sLineBreak + sLineBreak);
185+
LText := '';
186+
for i := 0 to Pred(TDelphiAIDevCodeCompletionVars.GetInstance.Contents.Count) do
187+
LText := LText + sLineBreak;
188+
189+
Context.EditBuffer.EditPosition.InsertText(LText.TrimRight + sLineBreak);
190+
Context.EditBuffer.EditPosition.Move(TDelphiAIDevCodeCompletionVars.GetInstance.LineIni, LColumn);
191+
192+
TDelphiAIDevCodeCompletionVars.GetInstance.Row := TDelphiAIDevCodeCompletionVars.GetInstance.LineIni;
193+
TDelphiAIDevCodeCompletionVars.GetInstance.Column := LColumn;
194+
195+
//Context.EditBuffer.EditPosition.MoveBOL;
196+
// //LTextCurrentLineOrBlock := Context.EditBuffer.EditBlock.Text;
197+
// LTextCurrentLineOrBlock := GetCurrentLineOrBlock(CnOtaGetTopMostEditView);
198+
// if LTextCurrentLineOrBlock.Trim.IsEmpty then
199+
// Exit;
200+
201+
BindingResult := TKeyBindingResult.krUnhandled; //krNextProc; }
170202
end;
171203

172204
procedure TDelphiAIDevKeyboardBinding.KeyTab(const Context: IOTAKeyContext; KeyCode: TShortcut; var BindingResult: TKeyBindingResult);

Src/Test/DelphiAIDev.Test.pas

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ implementation
3030

3131
procedure TDelphiAIDevTest.Clear;
3232
begin
33+
//Suggestion
34+
35+
3336

3437
end;
3538

0 commit comments

Comments
 (0)