mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 10:39:18 +02:00
IDE: Find/Replace: save options depending on selection availability. Issue #32619
git-svn-id: trunk@56325 -
This commit is contained in:
parent
92c78dc830
commit
cee38e2b1b
@ -375,7 +375,7 @@ begin
|
|||||||
AssignToComboBox(FileMaskComboBox, InputHistories.FindInFilesMaskHistory);
|
AssignToComboBox(FileMaskComboBox, InputHistories.FindInFilesMaskHistory);
|
||||||
Options := InputHistories.FindInFilesSearchOptions;
|
Options := InputHistories.FindInFilesSearchOptions;
|
||||||
//share basic options with FindReplaceDlg
|
//share basic options with FindReplaceDlg
|
||||||
SynSearchOptions := InputHistoriesSO.FindOptions * SharedOptions;
|
SynSearchOptions := InputHistoriesSO.FindOptions[False] * SharedOptions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazFindInFilesDialog.SaveHistory;
|
procedure TLazFindInFilesDialog.SaveHistory;
|
||||||
@ -391,7 +391,7 @@ begin
|
|||||||
InputHistories.AddToFindInFilesMaskHistory(FileMaskComboBox.Text);
|
InputHistories.AddToFindInFilesMaskHistory(FileMaskComboBox.Text);
|
||||||
InputHistories.FindInFilesSearchOptions:=Options;
|
InputHistories.FindInFilesSearchOptions:=Options;
|
||||||
//share basic options with FindReplaceDlg
|
//share basic options with FindReplaceDlg
|
||||||
InputHistoriesSO.FindOptions := InputHistoriesSO.FindOptions - SharedOptions
|
InputHistoriesSO.FindOptions[False] := InputHistoriesSO.FindOptions[False] - SharedOptions
|
||||||
+ (SynSearchOptions*SharedOptions);
|
+ (SynSearchOptions*SharedOptions);
|
||||||
InputHistories.Save;
|
InputHistories.Save;
|
||||||
end;
|
end;
|
||||||
|
@ -39,7 +39,7 @@ uses
|
|||||||
// RTL + LCL
|
// RTL + LCL
|
||||||
Classes, SysUtils, Laz_AVL_Tree,
|
Classes, SysUtils, Laz_AVL_Tree,
|
||||||
// LCL
|
// LCL
|
||||||
Dialogs,
|
Dialogs, SynEditTypes,
|
||||||
// LazUtils
|
// LazUtils
|
||||||
LazFileCache, LazFileUtils, LazUTF8, AvgLvlTree, Laz2_XMLCfg,
|
LazFileCache, LazFileUtils, LazUTF8, AvgLvlTree, Laz2_XMLCfg,
|
||||||
// Codetools
|
// Codetools
|
||||||
@ -275,7 +275,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
LazFindSearchOptionsDefault = [];
|
LazFindSearchOptionsDefault: array[Boolean] of TSynSearchOptions = ([], [ssoEntireScope, ssoSelectedOnly]);
|
||||||
LazFindInFileSearchOptionsDefault = [fifSearchOpen, fifIncludeSubDirs];
|
LazFindInFileSearchOptionsDefault = [fifSearchOpen, fifIncludeSubDirs];
|
||||||
LazFindInFileSearchOptionNames: array[TLazFindInFileSearchOption] of string =(
|
LazFindInFileSearchOptionNames: array[TLazFindInFileSearchOption] of string =(
|
||||||
'MatchCase',
|
'MatchCase',
|
||||||
|
@ -41,15 +41,27 @@ type
|
|||||||
{ TInputHistoriesWithSearchOpt }
|
{ TInputHistoriesWithSearchOpt }
|
||||||
|
|
||||||
TInputHistoriesWithSearchOpt = class(TInputHistories)
|
TInputHistoriesWithSearchOpt = class(TInputHistories)
|
||||||
|
private const
|
||||||
|
PathToOptions0: array[Boolean] of string = ('Options', 'Options'); // old config file
|
||||||
|
PathToOptions1: array[Boolean] of string = ('Options', 'SelOptions'); // new config file
|
||||||
|
XMLConfigVersion = 1;
|
||||||
|
public const
|
||||||
|
SaveOptionsGeneral = [ssoMatchCase, ssoWholeWord, ssoRegExpr, ssoRegExprMultiLine,
|
||||||
|
ssoPrompt, ssoBackwards];
|
||||||
|
SaveOptionsSelSpecific = [ssoEntireScope, ssoSelectedOnly];
|
||||||
|
SaveOptions = SaveOptionsGeneral + SaveOptionsSelSpecific;
|
||||||
private
|
private
|
||||||
FFindOptions: TSynSearchOptions;
|
FFindOptions: array[Boolean] of TSynSearchOptions; // array[SelAvail] - selection available
|
||||||
|
function GetFindOptions(const ASelAvail: Boolean): TSynSearchOptions;
|
||||||
|
procedure SetFindOptions(const ASelAvail: Boolean;
|
||||||
|
const AFindOptions: TSynSearchOptions);
|
||||||
protected
|
protected
|
||||||
procedure LoadSearchOptions(XMLConfig: TXMLConfig; const Path: string); override;
|
procedure LoadSearchOptions(XMLConfig: TXMLConfig; const Path: string); override;
|
||||||
procedure SaveSearchOptions(XMLConfig: TXMLConfig; const Path: string); override;
|
procedure SaveSearchOptions(XMLConfig: TXMLConfig; const Path: string); override;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
property FindOptions: TSynSearchOptions read FFindOptions write FFindOptions;
|
property FindOptions[const ASelAvail: Boolean]: TSynSearchOptions read GetFindOptions write SetFindOptions;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -86,30 +98,61 @@ begin
|
|||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TInputHistoriesWithSearchOpt.GetFindOptions(
|
||||||
|
const ASelAvail: Boolean): TSynSearchOptions;
|
||||||
|
begin
|
||||||
|
Result := FFindOptions[ASelAvail]*SaveOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TInputHistoriesWithSearchOpt.LoadSearchOptions(XMLConfig: TXMLConfig; const Path: string);
|
procedure TInputHistoriesWithSearchOpt.LoadSearchOptions(XMLConfig: TXMLConfig; const Path: string);
|
||||||
var
|
var
|
||||||
FindOption: TSynSearchOption;
|
FindOption: TSynSearchOption;
|
||||||
|
PathToOptions: array[Boolean] of string;
|
||||||
|
I: Boolean;
|
||||||
begin
|
begin
|
||||||
FFindOptions:=[];
|
if XMLConfig.GetValue(Path+'Find/Version/Value',0)<=0 then
|
||||||
for FindOption:=Low(FFindOptions) to High(FFindOptions) do
|
PathToOptions := PathToOptions0
|
||||||
|
else
|
||||||
|
PathToOptions := PathToOptions1;
|
||||||
|
|
||||||
|
for I := Low(FFindOptions) to High(FFindOptions) do
|
||||||
begin
|
begin
|
||||||
if XMLConfig.GetValue(Path+'Find/Options/'+LazFindSearchOptionNames[FindOption],
|
FFindOptions[I]:=[];
|
||||||
FindOption in LazFindSearchOptionsDefault)
|
for FindOption:=Low(FFindOptions[I]) to High(FFindOptions[I]) do
|
||||||
|
begin
|
||||||
|
if XMLConfig.GetValue(Path+'Find/'+PathToOptions[I]+'/'+LazFindSearchOptionNames[FindOption],
|
||||||
|
FindOption in LazFindSearchOptionsDefault[I])
|
||||||
then
|
then
|
||||||
Include(FFindOptions,FindOption);
|
Include(FFindOptions[I],FindOption);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TInputHistoriesWithSearchOpt.SaveSearchOptions(XMLConfig: TXMLConfig; const Path: string);
|
procedure TInputHistoriesWithSearchOpt.SaveSearchOptions(XMLConfig: TXMLConfig; const Path: string);
|
||||||
var
|
var
|
||||||
FindOption: TSynSearchOption;
|
FindOption: TSynSearchOption;
|
||||||
|
I: Boolean;
|
||||||
begin
|
begin
|
||||||
for FindOption:=Low(FFindOptions) to High(FFindOptions) do begin
|
for I := Low(FFindOptions) to High(FFindOptions) do
|
||||||
|
begin
|
||||||
|
XMLConfig.SetValue(Path+'Find/Version/Value', XMLConfigVersion);
|
||||||
|
|
||||||
|
for FindOption:=Low(FFindOptions[I]) to High(FFindOptions[I]) do
|
||||||
|
begin
|
||||||
XMLConfig.SetDeleteValue(
|
XMLConfig.SetDeleteValue(
|
||||||
Path+'Find/Options/'+LazFindSearchOptionNames[FindOption],
|
Path+'Find/'+PathToOptions1[I]+'/'+LazFindSearchOptionNames[FindOption],
|
||||||
FindOption in FindOptions,
|
FindOption in FindOptions[I],
|
||||||
FindOption in LazFindSearchOptionsDefault);
|
FindOption in LazFindSearchOptionsDefault[I]);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TInputHistoriesWithSearchOpt.SetFindOptions(const ASelAvail: Boolean;
|
||||||
|
const AFindOptions: TSynSearchOptions);
|
||||||
|
begin
|
||||||
|
FFindOptions[ASelAvail] := AFindOptions*SaveOptions;
|
||||||
|
FFindOptions[not ASelAvail] := AFindOptions*SaveOptionsGeneral // change only general options
|
||||||
|
+ FFindOptions[not ASelAvail]*SaveOptionsSelSpecific;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -3328,9 +3328,6 @@ end;
|
|||||||
|
|
||||||
{------------------------------S T A R T F I N D-----------------------------}
|
{------------------------------S T A R T F I N D-----------------------------}
|
||||||
procedure TSourceEditor.StartFindAndReplace(Replace:boolean);
|
procedure TSourceEditor.StartFindAndReplace(Replace:boolean);
|
||||||
const
|
|
||||||
SaveOptions = [ssoMatchCase, ssoWholeWord, ssoRegExpr, ssoRegExprMultiLine,
|
|
||||||
ssoPrompt, ssoEntireScope, ssoBackwards];
|
|
||||||
var
|
var
|
||||||
NewOptions: TSynSearchOptions;
|
NewOptions: TSynSearchOptions;
|
||||||
ALeft,ATop:integer;
|
ALeft,ATop:integer;
|
||||||
@ -3346,16 +3343,14 @@ begin
|
|||||||
NewOptions := NewOptions + [ssoReplace, ssoReplaceAll]
|
NewOptions := NewOptions + [ssoReplace, ssoReplaceAll]
|
||||||
else
|
else
|
||||||
NewOptions := NewOptions - [ssoReplace, ssoReplaceAll];
|
NewOptions := NewOptions - [ssoReplace, ssoReplaceAll];
|
||||||
NewOptions:=NewOptions-SaveOptions+InputHistoriesSO.FindOptions*SaveOptions
|
NewOptions:=NewOptions-InputHistoriesSO.SaveOptions
|
||||||
-[ssoSelectedOnly];
|
+InputHistoriesSO.FindOptions[EditorComponent.SelAvail];
|
||||||
|
|
||||||
// Fill in history items
|
// Fill in history items
|
||||||
LazFindReplaceDialog.TextToFindComboBox.Items.Assign(InputHistoriesSO.FindHistory);
|
LazFindReplaceDialog.TextToFindComboBox.Items.Assign(InputHistoriesSO.FindHistory);
|
||||||
LazFindReplaceDialog.ReplaceTextComboBox.Items.Assign(InputHistoriesSO.ReplaceHistory);
|
LazFindReplaceDialog.ReplaceTextComboBox.Items.Assign(InputHistoriesSO.ReplaceHistory);
|
||||||
|
|
||||||
with EditorComponent do begin
|
with EditorComponent do begin
|
||||||
if SelAvail then
|
|
||||||
NewOptions := NewOptions + [ssoSelectedOnly, ssoEntireScope];
|
|
||||||
if EditorOpts.FindTextAtCursor then begin
|
if EditorOpts.FindTextAtCursor then begin
|
||||||
if SelAvail and (BlockBegin.Y = BlockEnd.Y) and
|
if SelAvail and (BlockBegin.Y = BlockEnd.Y) and
|
||||||
( ((ComparePoints(BlockBegin, LogicalCaretXY) <= 0) and
|
( ((ComparePoints(BlockBegin, LogicalCaretXY) <= 0) and
|
||||||
@ -3386,7 +3381,7 @@ begin
|
|||||||
|
|
||||||
LazFindReplaceDialog.Options := NewOptions;
|
LazFindReplaceDialog.Options := NewOptions;
|
||||||
DlgResult:=LazFindReplaceDialog.ShowModal;
|
DlgResult:=LazFindReplaceDialog.ShowModal;
|
||||||
InputHistoriesSO.FindOptions:=LazFindReplaceDialog.Options*SaveOptions;
|
InputHistoriesSO.FindOptions[EditorComponent.SelAvail]:=LazFindReplaceDialog.Options;
|
||||||
InputHistoriesSO.FindAutoComplete:=LazFindReplaceDialog.EnableAutoComplete;
|
InputHistoriesSO.FindAutoComplete:=LazFindReplaceDialog.EnableAutoComplete;
|
||||||
if DlgResult = mrCancel then
|
if DlgResult = mrCancel then
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user