+enh: option to fill empty search text in F/R dialog

This commit is contained in:
METANEOCORTEX\Kotti 2023-03-14 20:31:28 +01:00
parent cd7fe6b459
commit dc6ca9faad
7 changed files with 30 additions and 12 deletions

View File

@ -230,7 +230,8 @@
#define IDS_MUI_CLEAR_REPL_HISTORY 15043
#define IDS_MUI_WRAPSEARCH_FWD 15044
#define IDS_MUI_WRAPSEARCH_BCK 15045
#define IDS_MUI_REPLCLIPTAG 15046
#define IDS_MUI_SEARCHCLIPIFEMPTY 15046
#define IDS_MUI_REPLCLIPTAG 15047
#define IDS_MUI_TRANSL_AUTHOR 15050
#define IDS_MUI_ASSOCIATED_EXT 15051

View File

@ -273,7 +273,9 @@ BEGIN
"Suchen-Historie löschen"
IDS_MUI_CLEAR_REPL_HISTORY
"Ersetzen-Historie löschen"
IDS_MUI_REPLCLIPTAG "Ersetzen durch Clipboard Shortcut [^c]"
IDS_MUI_SEARCHCLIPIFEMPTY
"Suche Clipboardinhalt wenn keine Selektion"
IDS_MUI_REPLCLIPTAG "Ersetzen durch Clipboard mittels Shortcut [^c]"
IDS_MUI_WRAPSEARCH_FWD "Wrap-Around Fund von Oben"
IDS_MUI_WRAPSEARCH_BCK "Wrap-Around Fund von Unten"
END

View File

@ -273,7 +273,9 @@ BEGIN
"Clear Find History"
IDS_MUI_CLEAR_REPL_HISTORY
"Clear Replace History"
IDS_MUI_REPLCLIPTAG "Replace by Clipboard Shortcut [^c]"
IDS_MUI_SEARCHCLIPIFEMPTY
"Search by Clipboard if empty selection"
IDS_MUI_REPLCLIPTAG "Replace by Clipboard on Shortcut [^c]"
IDS_MUI_WRAPSEARCH_FWD "Wrap-Around match from top"
IDS_MUI_WRAPSEARCH_BCK "Wrap-Around match from bottom"
END

View File

@ -1692,6 +1692,7 @@ void LoadSettings()
GET_BOOL_VALUE_FROM_INISECTION(EditLayoutRTL, false);
GET_BOOL_VALUE_FROM_INISECTION(DialogsLayoutRTL, false);
GET_BOOL_VALUE_FROM_INISECTION(PreferredLocale4DateFmt, false);
GET_BOOL_VALUE_FROM_INISECTION(SearchByClipboardIfEmpty, true);
GET_BOOL_VALUE_FROM_INISECTION(ReplaceByClipboardTag, true);
#ifdef D_NP3_WIN10_DARK_MODE
@ -2117,6 +2118,7 @@ static bool _SaveSettings(bool bForceSaveSettings)
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, EditLayoutRTL);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, DialogsLayoutRTL);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, PreferredLocale4DateFmt);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, SearchByClipboardIfEmpty);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ReplaceByClipboardTag);
#ifdef D_NP3_WIN10_DARK_MODE

View File

@ -5813,13 +5813,13 @@ static LPCWSTR _EditGetFindStrg(HWND hwnd, const LPEDITFINDREPLACE lpefr, bool b
}
// 2nd: try get clipboard content
if (StrgIsEmpty(hfind) && bFillEmpty) {
if (StrgIsEmpty(hfind) && bFillEmpty && Settings.SearchByClipboardIfEmpty) {
LPWSTR const buf = StrgWriteAccessBuf(hfind, FNDRPL_BUFFER);
EditGetClipboardW(buf, StrgGetAllocLength(hfind));
StrgSanitize(hfind);
}
// 3rd: try get most recently used find pattern
// 3nd: try get most recently used find pattern
if (StrgIsEmpty(hfind) && bFillEmpty) {
LPWSTR const buf = StrgWriteAccessBuf(hfind, FNDRPL_BUFFER);
MRU_Enum(Globals.pMRUfind, 0, buf, (int)StrgGetAllocLength(hfind));
@ -5860,8 +5860,7 @@ static LPCWSTR _EditGetFindStrg(HWND hwnd, const LPEDITFINDREPLACE lpefr, bool b
static char* _GetReplaceString(HWND hwnd, CLPCEDITFINDREPLACE lpefr, int* iReplaceMsg)
{
char* pszReplace = NULL; // replace text of arbitrary size
if (Settings.ReplaceByClipboardTag &&
(StringCchCompareXW(StrgGet(lpefr->chReplaceTemplate), L"^c")) == 0)
if (Settings.ReplaceByClipboardTag && (StringCchCompareXW(StrgGet(lpefr->chReplaceTemplate), L"^c")) == 0)
{
*iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET;
pszReplace = EditGetClipboardText(hwnd, true, NULL, NULL);
@ -6280,10 +6279,13 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
GetLngString(IDS_MUI_CLEAR_REPL_HISTORY, wchMenuBuf, COUNTOF(wchMenuBuf));
InsertMenu(hmenu, 4, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_CLEAR_REPL_HISTORY, wchMenuBuf);
InsertMenu(hmenu, 5, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
GetLngString(IDS_MUI_SEARCHCLIPIFEMPTY, wchMenuBuf, COUNTOF(wchMenuBuf));
InsertMenu(hmenu, 6, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_SEARCHCLIPIFEMPTY, wchMenuBuf);
GetLngString(IDS_MUI_REPLCLIPTAG, wchMenuBuf, COUNTOF(wchMenuBuf));
InsertMenu(hmenu, 6, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_REPLCLIPTAG, wchMenuBuf);
InsertMenu(hmenu, 7, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
InsertMenu(hmenu, 7, MF_BYPOSITION | MF_STRING | MF_ENABLED, IDS_MUI_REPLCLIPTAG, wchMenuBuf);
InsertMenu(hmenu, 8, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
CheckCmd(hmenu, IDS_MUI_SEARCHCLIPIFEMPTY, Settings.SearchByClipboardIfEmpty);
CheckCmd(hmenu, IDS_MUI_REPLCLIPTAG, Settings.ReplaceByClipboardTag);
@ -6923,10 +6925,14 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
SetDlgItemText(hwnd, IDC_REPLACETEXT, L"");
break;
case IDACC_SEARCHCLIPIFEMPTY:
Settings.SearchByClipboardIfEmpty = !Settings.SearchByClipboardIfEmpty;
CheckCmd(GetSystemMenu(hwnd, FALSE), IDS_MUI_SEARCHCLIPIFEMPTY, Settings.SearchByClipboardIfEmpty);
break;
case IDACC_REPLCLIPTAG:
Settings.ReplaceByClipboardTag = !Settings.ReplaceByClipboardTag;
HMENU hmenu = GetSystemMenu(hwnd, FALSE);
CheckCmd(hmenu, IDS_MUI_REPLCLIPTAG, Settings.ReplaceByClipboardTag);
CheckCmd(GetSystemMenu(hwnd, FALSE), IDS_MUI_REPLCLIPTAG, Settings.ReplaceByClipboardTag);
break;
case IDACC_FINDNEXT:
@ -6979,6 +6985,9 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd, UINT umsg, WPARAM wPar
} else if (wParam == IDS_MUI_CLEAR_REPL_HISTORY) {
PostWMCommand(hwnd, IDACC_CLEAR_REPL_HISTORY);
return TRUE;
} else if (wParam == IDS_MUI_SEARCHCLIPIFEMPTY) {
PostWMCommand(hwnd, IDACC_SEARCHCLIPIFEMPTY);
return TRUE;
} else if (wParam == IDS_MUI_REPLCLIPTAG) {
PostWMCommand(hwnd, IDACC_REPLCLIPTAG);
return TRUE;

View File

@ -669,6 +669,7 @@ typedef struct SETTINGS_T {
int FocusViewMarkerMode;
bool PreferredLocale4DateFmt;
int AutoSaveInterval;
bool SearchByClipboardIfEmpty;
bool ReplaceByClipboardTag;
AutoSaveBackupOptions AutoSaveOptions;

View File

@ -98,7 +98,8 @@
#define IDACC_PREVIEW 313
#define IDACC_CLEAR_FIND_HISTORY 314
#define IDACC_CLEAR_REPL_HISTORY 315
#define IDACC_REPLCLIPTAG 316
#define IDACC_SEARCHCLIPIFEMPTY 316
#define IDACC_REPLCLIPTAG 317
#define IDC_SETCURLEXERTV 402