@@ -915,6 +915,8 @@ TMainForm = class(TExtForm)
915915 SourceValue: string; var SourceStart, SourceEnd: TPoint; KeyChar: TUTF8Char;
916916 Shift: TShiftState);
917917 procedure SynCompletionProposalExecute(Sender: TObject);
918+ // Wrap around items on top and at the end of the list
919+ procedure SynCompletionProposalFormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
918920 procedure PageControlMainChange(Sender: TObject);
919921 procedure PageControlMainChanging(Sender: TObject; var AllowChange: Boolean);
920922 procedure PageControlHostChange(Sender: TObject);
@@ -2102,6 +2104,7 @@ procedure TMainForm.FormCreate(Sender: TObject);
21022104 // Completion proposal window
21032105 SynCompletionProposal.TheForm.Width := Min(Max(AppSettings.ReadInt(asCompletionProposalWidth), 50), 350);
21042106 SynCompletionProposal.TheForm.BackgroundColor := clBtnFace;
2107+ SynCompletionProposal.TheForm.OnKeyDown := SynCompletionProposalFormKeyDown;
21052108 SynCompletionProposal.LinesInWindow := Min(AppSettings.ReadInt(asCompletionProposalNbLinesInWindow), 10);
21062109 FProposalItems := TProposalItemList.Create;
21072110 FProposalTriggeredByDot := False;
@@ -7244,6 +7247,24 @@ procedure TMainForm.SynCompletionProposalSearchPosition(var APosition: integer);
72447247 Proposal.ItemList.EndUpdate;
72457248end;
72467249
7250+
7251+ procedure TMainForm.SynCompletionProposalFormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
7252+ begin
7253+ if (SynCompletionProposal.ItemList.Count > 0) then begin
7254+ if (Key = VK_DOWN) and (SynCompletionProposal.Position >= SynCompletionProposal.ItemList.Count - 1) then
7255+ begin
7256+ SynCompletionProposal.Position := 0;
7257+ Key := 0;
7258+ end
7259+ else if (Key = VK_UP) and (SynCompletionProposal.Position <= 0) then
7260+ begin
7261+ SynCompletionProposal.Position := SynCompletionProposal.ItemList.Count - 1;
7262+ Key := 0;
7263+ end;
7264+ end;
7265+ end;
7266+
7267+
72477268procedure TMainForm.SynMemoQueryProcessCommand(Sender: TObject;
72487269 var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
72497270const
0 commit comments