Skip to content

Commit db952f8

Browse files
committed
feat: for keyboard navigation on the completion proposal, wrap around the item list
Refs #2534
1 parent 6c5b66c commit db952f8

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

source/main.pas

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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;
72457248
end;
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+
72477268
procedure TMainForm.SynMemoQueryProcessCommand(Sender: TObject;
72487269
var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer);
72497270
const

0 commit comments

Comments
 (0)