Merge branch 'main' into 'main'

Add Set Search Text/SetSearchText editor command to Set the current selection...

See merge request freepascal.org/lazarus/lazarus!2
This commit is contained in:
Maxim Ganetsky 2021-08-01 21:37:23 +00:00
commit 1a47228438
5 changed files with 30 additions and 1 deletions

View File

@ -376,6 +376,7 @@ const
ecDesignerForwardOne = ecFirstLazarus + 1006; ecDesignerForwardOne = ecFirstLazarus + 1006;
ecDesignerBackOne = ecFirstLazarus + 1007; ecDesignerBackOne = ecFirstLazarus + 1007;
ecDesignerToggleNonVisComps= ecFirstLazarus + 1008; ecDesignerToggleNonVisComps= ecFirstLazarus + 1008;
ecSetSearchText = ecFirstLazarus + 1009;
(* SynEdit Plugins (* SynEdit Plugins
@ -1935,7 +1936,7 @@ begin
end; end;
const const
IDEEditorCommandStrs: array[0..323] of TIdentMapEntry = ( IDEEditorCommandStrs: array[0..324] of TIdentMapEntry = (
// search // search
(Value: ecFind; Name: 'ecFind'), (Value: ecFind; Name: 'ecFind'),
(Value: ecFindAgain; Name: 'ecFindAgain'), (Value: ecFindAgain; Name: 'ecFindAgain'),
@ -1943,6 +1944,7 @@ const
(Value: ecFindPrevious; Name: 'ecFindPrevious'), (Value: ecFindPrevious; Name: 'ecFindPrevious'),
(Value: ecReplace; Name: 'ecReplace'), (Value: ecReplace; Name: 'ecReplace'),
(Value: ecIncrementalFind; Name: 'ecIncrementalFind'), (Value: ecIncrementalFind; Name: 'ecIncrementalFind'),
(Value: ecSetSearchText; Name: 'ecSetSearchText'),
(Value: ecFindProcedureDefinition; Name: 'ecFindProcedureDefinition'), (Value: ecFindProcedureDefinition; Name: 'ecFindProcedureDefinition'),
(Value: ecFindProcedureMethod; Name: 'ecFindProcedureMethod'), (Value: ecFindProcedureMethod; Name: 'ecFindProcedureMethod'),
(Value: ecGotoLineNumber; Name: 'ecGotoLineNumber'), (Value: ecGotoLineNumber; Name: 'ecGotoLineNumber'),

View File

@ -584,6 +584,7 @@ begin
ecFindInFiles : Result:= srkmecFindInFiles; ecFindInFiles : Result:= srkmecFindInFiles;
ecReplace : Result:= srkmecReplace; ecReplace : Result:= srkmecReplace;
ecIncrementalFind : Result:= lisMenuIncrementalFind; ecIncrementalFind : Result:= lisMenuIncrementalFind;
ecSetSearchText : Result:= lisMenuSetSearchText;
ecFindProcedureDefinition : Result:= srkmecFindProcedureDefinition; ecFindProcedureDefinition : Result:= srkmecFindProcedureDefinition;
ecFindProcedureMethod : Result:= srkmecFindProcedureMethod; ecFindProcedureMethod : Result:= srkmecFindProcedureMethod;
ecGotoLineNumber : Result:= srkmecGotoLineNumber; ecGotoLineNumber : Result:= srkmecGotoLineNumber;
@ -1152,6 +1153,7 @@ begin
ecFindInFiles: SetSingle(VK_F,[XCtrl,ssShift]); ecFindInFiles: SetSingle(VK_F,[XCtrl,ssShift]);
ecReplace: SetCombo(VK_R,[XCtrl],VK_UNKNOWN,[], VK_Q,[XCtrl],VK_A,[]); ecReplace: SetCombo(VK_R,[XCtrl],VK_UNKNOWN,[], VK_Q,[XCtrl],VK_A,[]);
ecIncrementalFind: SetSingle(VK_E,[XCtrl]); ecIncrementalFind: SetSingle(VK_E,[XCtrl]);
ecSetSearchText: SetCombo(VK_K,[XCtrl],VK_F,[]);
ecGotoLineNumber: SetCombo(VK_G,[XCtrl],VK_UNKNOWN,[], VK_Q,[XCtrl],VK_G,[]); ecGotoLineNumber: SetCombo(VK_G,[XCtrl],VK_UNKNOWN,[], VK_Q,[XCtrl],VK_G,[]);
ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
@ -1613,6 +1615,7 @@ begin
ecFindInFiles: SetSingle(VK_UNKNOWN,[]); ecFindInFiles: SetSingle(VK_UNKNOWN,[]);
ecReplace: SetCombo(VK_Q,[SSCtrl],VK_A,[]); ecReplace: SetCombo(VK_Q,[SSCtrl],VK_A,[]);
ecIncrementalFind: SetSingle(VK_UNKNOWN,[]); ecIncrementalFind: SetSingle(VK_UNKNOWN,[]);
ecSetSearchText: SetCombo(VK_K,[ssCtrl], VK_F,[]);
ecGotoLineNumber: SetCombo(VK_Q,[ssCtrl],VK_G,[]); ecGotoLineNumber: SetCombo(VK_Q,[ssCtrl],VK_G,[]);
ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
@ -2242,6 +2245,7 @@ begin
ecFindInFiles: SetSingle(VK_F,[ssMeta,ssShift]); ecFindInFiles: SetSingle(VK_F,[ssMeta,ssShift]);
ecReplace: SetSingle(VK_UNKNOWN,[]); ecReplace: SetSingle(VK_UNKNOWN,[]);
ecIncrementalFind: SetSingle(VK_E,[ssMeta]); ecIncrementalFind: SetSingle(VK_E,[ssMeta]);
ecSetSearchText: SetCombo(VK_K,[SSCtrl],VK_F,[]);
ecGotoLineNumber: SetSingle(VK_L,[ssMeta]); ecGotoLineNumber: SetSingle(VK_L,[ssMeta]);
ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindNextWordOccurrence:SetSingle(VK_UNKNOWN,[]);
ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]); ecFindPrevWordOccurrence:SetSingle(VK_UNKNOWN,[]);
@ -2851,6 +2855,7 @@ begin
AddDefault(C, 'Find in files', srkmecFindInFiles, ecFindInFiles); AddDefault(C, 'Find in files', srkmecFindInFiles, ecFindInFiles);
AddDefault(C, 'Replace text', srkmecReplace, ecReplace); AddDefault(C, 'Replace text', srkmecReplace, ecReplace);
AddDefault(C, 'Find incremental', lisKMFindIncremental, ecIncrementalFind); AddDefault(C, 'Find incremental', lisKMFindIncremental, ecIncrementalFind);
AddDefault(C, 'Set Search Text', lisKMSetSearchText, ecSetSearchText);
AddDefault(C, 'Go to line number', srkmecGotoLineNumber, ecGotoLineNumber); AddDefault(C, 'Go to line number', srkmecGotoLineNumber, ecGotoLineNumber);
AddDefault(C, 'Find next word occurrence', srkmecFindNextWordOccurrence, ecFindNextWordOccurrence); AddDefault(C, 'Find next word occurrence', srkmecFindNextWordOccurrence, ecFindNextWordOccurrence);
AddDefault(C, 'Find previous word occurrence', srkmecFindPrevWordOccurrence, ecFindPrevWordOccurrence); AddDefault(C, 'Find previous word occurrence', srkmecFindPrevWordOccurrence, ecFindPrevWordOccurrence);

View File

@ -385,6 +385,7 @@ resourcestring
lisMenuFindPrevious = 'Find &Previous'; lisMenuFindPrevious = 'Find &Previous';
lisMenuFindInFiles = 'Find &in Files ...'; lisMenuFindInFiles = 'Find &in Files ...';
lisMenuIncrementalFind = 'Incremental Find'; lisMenuIncrementalFind = 'Incremental Find';
lisMenuSetSearchText = 'Set Search Text';
lisMenuGotoLine = 'Goto Line ...'; lisMenuGotoLine = 'Goto Line ...';
lisMenuJumpBack = 'Jump Back'; lisMenuJumpBack = 'Jump Back';
lisMenuJumpForward = 'Jump Forward'; lisMenuJumpForward = 'Jump Forward';
@ -3293,6 +3294,7 @@ resourcestring
srkmecFindInFiles = 'Find in Files'; srkmecFindInFiles = 'Find in Files';
srkmecReplace = 'Replace Text'; srkmecReplace = 'Replace Text';
lisKMFindIncremental = 'Find Incremental'; lisKMFindIncremental = 'Find Incremental';
lisKMSetSearchText = 'Set Search Text';
srkmecFindProcedureDefinition = 'Find Procedure Definiton'; srkmecFindProcedureDefinition = 'Find Procedure Definiton';
srkmecFindProcedureMethod = 'Find Procedure Method'; srkmecFindProcedureMethod = 'Find Procedure Method';
srkmecGotoLineNumber = 'Go to Line Number'; srkmecGotoLineNumber = 'Go to Line Number';

View File

@ -140,6 +140,7 @@ type
itmSearchFindInFiles: TIDEMenuCommand; itmSearchFindInFiles: TIDEMenuCommand;
itmSearchReplace: TIDEMenuCommand; itmSearchReplace: TIDEMenuCommand;
itmIncrementalFind: TIDEMenuCommand; itmIncrementalFind: TIDEMenuCommand;
//itmSetSearchText: TIDEMenuCommand;
//itmJumpings: TIDEMenuSection; //itmJumpings: TIDEMenuSection;
itmGotoLine: TIDEMenuCommand; itmGotoLine: TIDEMenuCommand;
itmJumpBack: TIDEMenuCommand; itmJumpBack: TIDEMenuCommand;

View File

@ -395,6 +395,7 @@ type
function DoFindAndReplace(aFindText, aReplaceText: String; anOptions: TSynSearchOptions): Integer; function DoFindAndReplace(aFindText, aReplaceText: String; anOptions: TSynSearchOptions): Integer;
procedure FindNextUTF8; procedure FindNextUTF8;
procedure FindPrevious; procedure FindPrevious;
procedure SetSearchText;
procedure FindNextWordOccurrence(DirectionForward: boolean); procedure FindNextWordOccurrence(DirectionForward: boolean);
procedure ShowGotoLineDialog; procedure ShowGotoLineDialog;
@ -3691,6 +3692,23 @@ begin
end; end;
end; end;
procedure TSourceEditor.SetSearchText;
var
S: string;
begin
if EditorComponent.SelAvail then
S := EditorComponent.SelText
else
begin
S := EditorComponent.GetWordAtRowCol(EditorComponent.LogicalCaretXY);
//EditorComponent.Flags:=[ssoWholeWord];
end;
if S <> '' then begin
FSourceNoteBook.BeginIncrementalFind;
FSourceNoteBook.IncrementalSearchStr := S;
end;
end;
procedure TSourceEditor.FindNextWordOccurrence(DirectionForward: boolean); procedure TSourceEditor.FindNextWordOccurrence(DirectionForward: boolean);
var var
StartX, EndX: Integer; StartX, EndX: Integer;
@ -4131,6 +4149,7 @@ Begin
ecFindNext: FindNextUTF8; ecFindNext: FindNextUTF8;
ecFindPrevious: FindPrevious; ecFindPrevious: FindPrevious;
ecIncrementalFind: if FSourceNoteBook<>nil then FSourceNoteBook.BeginIncrementalFind; ecIncrementalFind: if FSourceNoteBook<>nil then FSourceNoteBook.BeginIncrementalFind;
ecSetSearchText: if FSourceNoteBook<>nil then SetSearchText;
ecReplace: StartFindAndReplace(true); ecReplace: StartFindAndReplace(true);
ecGotoLineNumber: ShowGotoLineDialog; ecGotoLineNumber: ShowGotoLineDialog;
ecFindNextWordOccurrence: FindNextWordOccurrence(true); ecFindNextWordOccurrence: FindNextWordOccurrence(true);