View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002367 | Double Commander | Graphical user interface | public | 2019-09-27 23:25 | 2022-04-16 11:26 |
Reporter | liquidvacuum | Assigned To | Alexx2000 | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | resolved | Resolution | fixed | ||
Projection | none | ETA | none | ||
Fixed in Version | 1.1.0 | ||||
Summary | 0002367: Add Find, Replace and Goto line commands to Compare files | ||||
Description | В инструменте "Сравнение файлов" отсутствуют команды "Найти...", "Найти далее", "Найти предыдущее", "Заменить...", "Перейти к строке...". Необходимо добавить команды "Найти...", "Найти далее", "Найти предыдущее", "Заменить...", "Перейти к строке...", идентичные командам во встроенном редакторе. Патч приложен. There are no "Find...", "Find next", "Find previous", " Replace...", "Go to line..." commands in the Compare files tool. There is need to add "Find...", "Find next", "Find previous", " Replace...", "Go to line..." commands, identical to the commands in the built-in editor. Patch attached. | ||||
Tags | No tags attached. | ||||
Attached Files | 05-differ-find.diff (19,203 bytes)
diff --git a/doublecmd-1.0.0.orig/src/fdiffer.lfm b/doublecmd-1.0.0/src/fdiffer.lfm index c4a845b..8aa4d26 100755 --- a/doublecmd-1.0.0.orig/src/fdiffer.lfm +++ b/doublecmd-1.0.0/src/fdiffer.lfm @@ -1093,9 +1093,6 @@ object frmDiffer: TfrmDiffer } OnClick = actEditDeleteExecute end - object miDivider9: TMenuItem - Caption = '-' - end object miEditSelectAll: TMenuItem Action = actEditSelectAll Bitmap.Data = { @@ -1136,6 +1133,24 @@ object frmDiffer: TfrmDiffer } OnClick = actEditSelectAllExecute end + object miDivider9: TMenuItem + Caption = '-' + end + object miFind: TMenuItem + Action = actEditFind + end + object miFindNext: TMenuItem + Action = actEditFindNext + end + object miFindPrevious: TMenuItem + Action = actEditFindPrevious + end + object miReplace: TMenuItem + Action = actEditRplc + end + object miGotoLine: TMenuItem + Action = actEditGotoLine + end end object mnuOptions: TMenuItem Caption = '&Options' @@ -1678,6 +1693,40 @@ object frmDiffer: TfrmDiffer ImageIndex = 19 OnExecute = actEditSelectAllExecute end + object actEditFind: TAction + Category = 'Edit' + Caption = '&Find' + HelpType = htKeyword + Hint = 'Find' + ImageIndex = 22 + OnExecute = actExecute + end + object actEditFindNext: TAction + Category = 'Edit' + Caption = 'Find next' + Hint = 'Find next' + OnExecute = actExecute + end + object actEditFindPrevious: TAction + Category = 'Edit' + Caption = 'Find previous' + OnExecute = actExecute + end + object actEditRplc: TAction + Category = 'Edit' + Caption = '&Replace' + HelpType = htKeyword + Hint = 'Replace' + ImageIndex = 23 + OnExecute = actExecute + end + object actEditGotoLine: TAction + Category = 'Edit' + Caption = 'Goto Line...' + Hint = 'Goto Line' + ImageIndex = 24 + OnExecute = actExecute + end object actEditRedo: TAction Category = 'Edit' Caption = 'Redo' @@ -1723,7 +1772,7 @@ object frmDiffer: TfrmDiffer left = 200 top = 136 Bitmap = { - 4C6916000000100000001000000077856C7C91794D7E8B67386F8B67388C8B67 + 4C6919000000100000001000000077856C7C91794D7E8B67386F8B67388C8B67 38D48B6738FF8A693DF880714AE57A7858850000000000000000000000000000 00000000000000000000000000009270425EBB96627ED1AD815DE6CEB1CDEFDF D0FFECDBC5FFDFC29BFFA08B68FD886E43FD5A7F6A1B00000000000000000000 @@ -2427,7 +2476,103 @@ object frmDiffer: TfrmDiffer 00001A00A8FF1F00DCFF5C41E0FF000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 00003516E8FF0000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000 + 0000000000000000000000000000979B9AFF858A88FF858A88FF858A88FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF8A8F8DFF0000 + 0000000000000000000000000000878C8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF858A88FF0000 + 0000000000000000000000000000868B89FFFFFFFFFFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFEFF0F0FFFFFFFFFF858A88FF0000 + 0000000000000000000000000000878C8AFFFFFFFFFFEFF0F0FFC6C7C7FFC6C7 + C7FFC6C7C7FFC6C7C7FFC6C7C7FFC6C7C7FFEFF0F0FFFFFFFFFF858A88FF0000 + 0000000000000000000000000000868B89FFFFFFFFFFEFF0F0FFEFF0F0FFEFF0 + F0FFEFF0F0FFD5D6D6FF808381FF808381FF808381FF808381FF808482FF0000 + 0000000000000000000000000000878C8AFFFFFFFFFFEFF0F0FFC6C7C7FFC6C7 + C7FFA6A9A8FF808381FFC8BAAEFFD2BCA6FFD4BAA2FFCDB9A8FF808381FF0000 + 0000000000000000000000000000868B89FFFFFFFFFFEFF0F0FFEFF0F0FFD5D7 + D6FF808381FFC8B7A8FFD2AC8AFFE7D3BFFFEAD7C5FFD9BA9CFFCBAD90FF8083 + 81FF000000000000000000000000878C8AFFFFFFFFFFEFF0F0FFC6C7C7FF8083 + 81FFBBAEA3FFCFA985FFF2E6DCFFF7EEE8FFF5ECE4FFECDACAFFD8B28EFFCBAF + 97FF808381FF0000000000000000878C8AFFFFFFFFFFEFF0F0FFEFF0F0FF8083 + 81FFD0B8A2FFDFC0A5FFF1E4D9FFF3EAE0FFF2E7DDFFE9D4C1FFDFBEA0FFD0A6 + 81FF808381FF0000000000000000868B89FFFDFEFEFFEFF0F0FFEFF0F0FF8083 + 81FFD6BFA9FFE0C1A5FFEEDED0FFF2E5DAFFEDDCCDFFECD9C8FFE8D0BCFFD1A7 + 80FF808381FF0000000000000000868B89FFF9FAFAFFEFF0F0FFEFF0F0FF8083 + 81FFC3B5A7FFD0AB89FFE5CAB3FFEBD7C3FFEAD4C1FFEEDDCFFFDABDA3FFCEAF + 93FF808381FF0000000000000000868B89FFFFFFFFFFFFFFFFFFFFFFFFFFCDCF + CFFF808381FFD1B89FFFD6B391FFDFC5AFFFE3CAB2FFD6BAA0FFD3B497FF8083 + 81FF737675FF0000000000000000898E8CFF868B89FF858A88FF858A88FF858A + 88FF7B807EFF808381FFDCC8B3FFCFAC8BFFD1A880FFD0B399FF808381FFA3A4 + A3FFA3A4A3FF6A6E6CFF00000000000000000000000000000000000000000000 + 0000000000006A6E6CFF808381FF808381FF808381FF808381FF8C8E8DFFB7B8 + B8FFA3A4A3FFA3A4A3FF828484FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000008C8E + 8DFFB7B8B8FFA3A4A3FF828484FF000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00008C8E8DFF8C8E8DFF828484FF000000000000000000000000000000008083 + 81FF808381FF808381FF00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000808381FFC8BA + AEFFD4BAA2FFCCB9A7FF808381FF000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000808381FFC8B7A7FFD1AC + 8AFFEAD7C5FFD9B99BFFCBAC90FF808381FF838785FF858A88FF858A88FF858A + 88FF8A8F8DFF000000000000000000000000808381FFBBAEA2FFCFA884FFF2E6 + DCFFF5ECE4FFECDACAFFD8B18DFFCBB097FF808381FFFFFFFFFFFFFFFFFFFFFF + FFFF858A88FF000000000000000000000000808381FFD0B8A2FFDEC0A4FFF1E4 + D9FFF2E7DDFFEAD5C3FFDFBFA2FFD0A580FF808381FFEFF0F0FFEFF0F0FFFFFF + FFFF02598FFF02598FFF0000000000000000808381FFC2B5A7FFD0AA88FFE8D0 + BBFFEEDCCDFFF3E8DEFFDCC1A8FFCEB094FF808381FFC6C7C7FFEFF0F0FF0259 + 8FFFC6EAEEFF71ADCFFF02598FFF0000000000000000808381FFD1B89FFFD6B3 + 91FFE6D0BBFFD8BEA6FFD3B597FF808381FFD0D2D1FFEFF0F0FF02598FFFC7EB + EFFF6AACD2FF5583A1FF02598FFF00000000828484FFA3A4A3FF808381FFDDC8 + B3FFD1A77FFFD1B499FF808381FF939695FFC6C7C7FF02598FFFC7EBEFFF6AAC + D2FF5787A4FF02598FFF00000000828484FFA3A4A3FFB7B8B8FF8C8E8DFF8083 + 81FF808381FF808381FFAFB1B0FFEFF0F0FF02598FFFC5E6EDFF69AACFFF5683 + A0FF02598FFF0000000000000000828484FFB7B8B8FF8C8E8DFFFFFFFFFFEFF0 + F0FFC6C7C7FFC6C7C7FFC6C7C7FF02598FFFC4E5EDFF649FC8FF5784A0FF0259 + 8FFF6A8089FF0000000000000000000000008C8E8DFF868B89FFFFFFFFFFEFF0 + F0FFEFF0F0FFEFF0F0FFEEEFEFFF395B70FF8AABC2FF5585A3FF02598FFFCADC + E7FF848987FF00000000000000000000000000000000868B89FFFDFEFEFFEFF0 + F0FFEFF0F0FFEEEFEFFF02598FFF26424CFF36576BFF02598FFFAFC1CCFFEFEF + EFFF7F8482FF00000000000000000000000000000000868B89FFF9FAFAFFEFF0 + F0FFEFF0F0FFEDEEEEFF000000FF02598FFF96A9B3FFC2C2C2FFCACBCBFFE2E2 + E2FF7B7F7DFF00000000000000000000000000000000868B89FFFFFFFFFFFFFF + FFFFFFFFFFFFFEFEFEFFF7F7F7FFE9E9E9FFE2E2E2FFE5E5E5FFEAEAEAFFEFEF + EFFF7F8482FF00000000000000000000000000000000898E8CFF868B89FF858A + 88FF858A88FF858A88FF848987FF838886FF828785FF838886FF838886FF8388 + 86FF888D8BFF0000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF00BBBBBBFF9B958AFFA09990FF948A + 7CFF886F4FFF8B6738FF896A40FF7F7253FF858A88FF858A88FF858A88FF858A + 88FF858A88FFBBBBBBFFFFFFFF00FFFFFF00858A88FFA59C8FFFB2ADA8FFBAA3 + 8FFFBAA38FFFBAA38FFFBAA38FFFCCBBADFF874A20FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF858A88FFFFFFFF00FFFFFF00858A88FFBBBBBBFFBBBBBBFF948A + 7CFF9A7441FF9F7844FFBAA38FFFBAA38FFFCCBBADFF874A20FFB7B7B7FFB7B7 + B7FFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFFFFFFFFF874A20FFBAA38FFFCCBBADFF874A20FFFFFFFFFFFFFF + FFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFBFBFBFFF874A20FFBAA38FFFCCBBADFF874A20FFBFBFBFFFBFBF + BFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FF874A20FF874A + 20FF874A20FF874A20FF874A20FFBAA38FFFCCBBADFF874A20FF874A20FF874A + 20FF874A20FF874A20FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FF874A + 20FFBAA38FFFBAA38FFFBAA38FFFB5957AFFB5957AFFB5957AFFB5957AFFCCBB + ADFF874A20FF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFF874A20FFBAA38FFFB5957AFFB5957AFFB5957AFFB5957AFFCCBBADFF874A + 20FFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFF874A20FFBAA38FFFB5957AFFB5957AFFCCBBADFF874A20FFC8C8 + C8FFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFFFFFFFFF874A20FFBAA38FFFCCBBADFF874A20FFFFFFFFFFFFFF + FFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFD4D4D4FFD4D4D4FF874A20FF874A20FFD4D4D4FFD4D4D4FFD4D4 + D4FFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000 + FFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFEFEFEFF858A88FFFFFFFF00FFFFFF00858A88FFD8D8D8FFD8D8D8FFBBBB + BBFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFEFEFFFEFE + FEFFFFFFFFFF858A88FFFFFFFF00FFFFFF00BBBBBBFF858A88FF858A88FF858A + 88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A88FF858A + 88FF858A88FFBBBBBBFFFFFFFF00 } end object ContextMenu: TPopupMenu diff --git a/doublecmd-1.0.0.orig/src/fdiffer.pas b/doublecmd-1.0.0/src/fdiffer.pas index b4217b6..341583e 100755 --- a/doublecmd-1.0.0.orig/src/fdiffer.pas +++ b/doublecmd-1.0.0/src/fdiffer.pas @@ -51,6 +51,11 @@ type actEditRedo: TAction; actEditSelectAll: TAction; actEditPaste: TAction; + actEditFind: TAction; + actEditFindNext: TAction; + actEditFindPrevious: TAction; + actEditRplc: TAction; + actEditGotoLine: TAction; actAbout: TAction; actAutoCompare: TAction; actLineDifferences: TAction; @@ -91,6 +96,11 @@ type miCutContext: TMenuItem; miDeleteContext: TMenuItem; miEditSelectAll: TMenuItem; + miFind: TMenuItem; + miFindNext: TMenuItem; + miFindPrevious: TMenuItem; + miReplace: TMenuItem; + miGotoLine: TMenuItem; miDivider9: TMenuItem; miEditDelete: TMenuItem; miEditPaste: TMenuItem; @@ -218,6 +228,13 @@ type EncodingList: TStringList; ScrollLock: LongInt; FShowIdentical: Boolean; + bSearchBackwards: Boolean; + bSearchCaseSensitive: Boolean; + bSearchFromCaret: Boolean; + bSearchSelectionOnly: Boolean; + bSearchWholeWords: Boolean; + bSearchRegExp: Boolean; + sSearchText, sReplaceText: String; FWaitData: TWaitData; FCommands: TFormCommands; procedure ShowIdentical; @@ -241,10 +258,18 @@ type public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; + procedure DoSearchReplaceText(AReplace: boolean; ABackwards: boolean); + procedure ShowSearchReplaceDialog(AReplace: boolean); + function GetDisplayNumber(LineNumber: Integer): Integer; published procedure cm_CopyLeftToRight(const Params: array of string); procedure cm_CopyRightToLeft(const Params: array of string); procedure cm_Exit(const Params: array of string); + procedure cm_EditFind(const Params: array of string); + procedure cm_EditFindNext(const Params: array of string); + procedure cm_EditFindPrevious(const Params: array of string); + procedure cm_EditRplc(const Params: array of string); + procedure cm_EditGotoLine(const Params: array of string); procedure cm_FirstDifference(const Params: array of string); procedure cm_LastDifference(const Params: array of string); procedure cm_NextDifference(const Params: array of string); @@ -262,7 +287,7 @@ implementation uses LCLType, LazFileUtils, LConvEncoding, SynEditTypes, uHash, uLng, uGlobs, - uShowMsg, DCClassesUtf8, dmCommonData, DCOSUtils, uConvEncoding; + uShowMsg, DCClassesUtf8, dmCommonData, DCOSUtils, uConvEncoding, fEditSearch; const HotkeysCategory = 'Differ'; @@ -727,6 +752,136 @@ begin pnlLeft.Width:= (ClientWidth div 2) - (Splitter.Width div 2); end; +procedure TfrmDiffer.DoSearchReplaceText(AReplace: boolean; + ABackwards: boolean); +var + Options: TSynSearchOptions; +begin + if AReplace then + begin + Options := [ssoPrompt, ssoReplace, ssoReplaceAll]; + end + else + begin + Options := []; + end; + if ABackwards then + begin + Include(Options, ssoBackwards); + end; + if bSearchCaseSensitive then + begin + Include(Options, ssoMatchCase); + end; + if not bSearchFromCaret then + begin + Include(Options, ssoEntireScope); + end; + if bSearchSelectionOnly then + begin + Include(Options, ssoSelectedOnly); + end; + if bSearchWholeWords then + begin + Include(Options, ssoWholeWord); + end; + if bSearchRegExp then + begin + Include(Options, ssoRegExpr); + end; + try + if SynDiffEditActive.SearchReplace(sSearchText, sReplaceText, Options) = 0 then + begin + if ssoBackwards in Options then + begin + SynDiffEditActive.BlockEnd := SynDiffEditActive.BlockBegin; + end + else + begin + SynDiffEditActive.BlockBegin := SynDiffEditActive.BlockEnd; + end; + SynDiffEditActive.CaretXY := SynDiffEditActive.BlockBegin; + msgOK(Format(rsViewNotFound, ['"' + sSearchText + '"'])); + end; + except + on E: Exception do msgError(E.Message); + end; +end; + +procedure TfrmDiffer.ShowSearchReplaceDialog(AReplace: boolean); +var + dlg: TfrmEditSearchReplace; +begin + dlg := TfrmEditSearchReplace.Create(Self, AReplace); + with dlg do try + // assign search options + SearchBackwards := bSearchBackwards; + SearchCaseSensitive := bSearchCaseSensitive; + SearchFromCursor := bSearchFromCaret; + SearchInSelectionOnly := bSearchSelectionOnly; + SearchRegExp := bSearchRegExp; + // start with last search text + SearchText := sSearchText; + // if something is selected search for that text + if SynDiffEditActive.SelAvail and (SynDiffEditActive.BlockBegin.Y = SynDiffEditActive.BlockEnd.Y) then + begin + SearchText := SynDiffEditActive.SelText; + end + else + begin + SearchText := SynDiffEditActive.GetWordAtRowCol(SynDiffEditActive.CaretXY); + end; + SearchTextHistory := glsSearchHistory.Text; + if AReplace then + with dlg as TfrmEditSearchReplace do + begin + ReplaceText := sReplaceText; + ReplaceTextHistory := glsReplaceHistory.Text; + end; + SearchWholeWords := bSearchWholeWords; + if ShowModal = mrOK then + begin + bSearchBackwards := SearchBackwards; + bSearchCaseSensitive := SearchCaseSensitive; + bSearchFromCaret := SearchFromCursor; + bSearchSelectionOnly := SearchInSelectionOnly; + bSearchWholeWords := SearchWholeWords; + bSearchRegExp := SearchRegExp; + sSearchText := SearchText; + glsSearchHistory.Text := SearchTextHistory; + if AReplace then + with dlg as TfrmEditSearchReplace do + begin + sReplaceText := ReplaceText; + glsReplaceHistory.Text := ReplaceTextHistory; + end; + if sSearchText <> '' then + begin + DoSearchReplaceText(AReplace, bSearchBackwards); + bSearchFromCaret:= True; + gFirstTextSearch:= False; + end; + end; + finally + FreeAndNil(dlg); + end; +end; + +function TfrmDiffer.GetDisplayNumber(LineNumber: Integer): Integer; +var + I: Integer; +begin + Result := 1; + for I := 0 to SynDiffEditActive.Lines.Count - 1 do + begin + if SynDiffEditActive.Lines.Number[I] = LineNumber then + begin + Result := I + 1; + Break; + end; + end; +end; + procedure TfrmDiffer.BinaryCompareFinish; begin BinaryCompare:= nil; @@ -841,6 +996,81 @@ begin Close; end; +procedure TfrmDiffer.cm_EditFind(const Params: array of string); +begin + if not actBinaryCompare.Checked then + begin + ShowSearchReplaceDialog(False); + end; +end; + +procedure TfrmDiffer.cm_EditFindNext(const Params:array of string); +begin + if not actBinaryCompare.Checked then + begin + if gFirstTextSearch then + begin + ShowSearchReplaceDialog(False); + Exit; + end; + if sSearchText <> '' then + begin + DoSearchReplaceText(False, bSearchBackwards); + bSearchFromCaret:= True; + end; + end; +end; + +procedure TfrmDiffer.cm_EditFindPrevious(const Params: array of string); +begin + if not actBinaryCompare.Checked then + begin + if gFirstTextSearch then + begin + bSearchBackwards:=True; + ShowSearchReplaceDialog(False); + Exit; + end; + if sSearchText <> '' then + begin + SynDiffEditActive.SelEnd:=SynDiffEditActive.SelStart; + DoSearchReplaceText(False, True); + bSearchFromCaret:= True; + end; + end; +end; + +procedure TfrmDiffer.cm_EditRplc(const Params:array of string); +begin + if not actBinaryCompare.Checked then + begin + ShowSearchReplaceDialog(True); + end; +end; + +procedure TfrmDiffer.cm_EditGotoLine(const Params:array of string); +var + P: TPoint; + Value: String; + NewTopLine: Integer; +begin + if not actBinaryCompare.Checked then + begin + if ShowInputQuery(rsEditGotoLineTitle, rsEditGotoLineQuery, Value) then + begin + P.X := 1; + P.Y := GetDisplayNumber(StrToIntDef(Value, 1)); + NewTopLine := P.Y - (SynDiffEditActive.LinesInWindow div 2); + if NewTopLine < 1 then begin + NewTopLine := 1; + end; + SynDiffEditActive.CaretXY := P; + SynDiffEditActive.TopLine := NewTopLine; + SynDiffEditActive.SetFocus; + end; + end; +end; + procedure TfrmDiffer.cm_FirstDifference(const Params: array of string); var Line: Integer; diff --git a/doublecmd-1.0.0.orig/src/uglobs.pas b/doublecmd-1.0.0/src/uglobs.pas index dac1bd7..02a3103 100755 --- a/doublecmd-1.0.0.orig/src/uglobs.pas +++ b/doublecmd-1.0.0/src/uglobs.pas @@ -1151,6 +1151,12 @@ begin with HMForm.Hotkeys do begin AddIfNotExists(['Ctrl+R'],[],'cm_Reload'); + AddIfNotExists([SmkcSuper + 'F' ,'','', + 'F7' ,'',''],'cm_EditFind'); + AddIfNotExists(['F3'],[],'cm_EditFindNext'); + AddIfNotExists(['Shift+F3'],[],'cm_EditFindPrevious'); + AddIfNotExists(VK_H, [ssModifier], 'cm_EditRplc'); + AddIfNotExists(VK_G, [ssModifier], 'cm_EditGotoLine'); AddIfNotExists(['Alt+Down'],[],'cm_NextDifference'); AddIfNotExists(['Alt+Up'],[],'cm_PrevDifference'); AddIfNotExists(['Alt+Home'],[],'cm_FirstDifference'); | ||||
Fixed in Revision | |||||
Operating system | |||||
Widgetset | |||||
Architecture | |||||
|
Для команды "Заменить..." по умолчанию выбрана горячая клавиша Ctrl+H, поскольку Ctrl+R уже занята для "Перезагрузить". Возможно, горячие клавиши Ctrl+R для "Заменить..." (как во встроенном редакторе) и, например, F5 для "Перезагрузить" были бы более предпочтительны для унификации интерфейса. Между пунктами меню "Вырезать"/"Копировать"/"Вставить"/"Удалить" и пунктом "Выделить всё" удалён разделитель, т.к. во встроенных просмотрщике и редакторе он также отсутствует. Однако во многих приложениях разделитель между ними присутствует. Возможно, необходимо оставить его, добавить во встроенных просмотрщике и редакторе. |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-09-27 23:25 | liquidvacuum | New Issue | |
2019-09-27 23:25 | liquidvacuum | File Added: 05-differ-find.diff | |
2019-09-28 00:12 | liquidvacuum | Note Added: 0003278 | |
2022-04-16 11:26 | Alexx2000 | Status | new => resolved |
2022-04-16 11:26 | Alexx2000 | Fixed in Version | => 1.1.0 |
2022-04-16 11:26 | Alexx2000 | Resolution | open => fixed |
2022-04-16 11:26 | Alexx2000 | Assigned To | => Alexx2000 |