diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index aad688e9d..bc680bee0 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1356,6 +1356,8 @@ void LoadSettings() Settings.EFR_Data.bNoFindWrap = IniSectionGetBool(IniSecSettings, L"NoFindWrap", Defaults.EFR_Data.bNoFindWrap); Defaults.EFR_Data.bTransformBS = false; Settings.EFR_Data.bTransformBS = IniSectionGetBool(IniSecSettings, L"FindTransformBS", Defaults.EFR_Data.bTransformBS); + Defaults.EFR_Data.bRegExprSearch = false; + Settings.EFR_Data.bRegExprSearch = IniSectionGetBool(IniSecSettings, L"RegExprSearch", Defaults.EFR_Data.bRegExprSearch); Defaults.EFR_Data.bWildcardSearch = false; Settings.EFR_Data.bWildcardSearch = IniSectionGetBool(IniSecSettings, L"WildcardSearch", Defaults.EFR_Data.bWildcardSearch); Defaults.EFR_Data.bOverlappingFind = false; @@ -1792,6 +1794,11 @@ static bool _SaveSettings(bool bForceSaveSettings) } else { IniSectionDelete(IniSecSettings, L"FindTransformBS", false); } + if (Settings.EFR_Data.bRegExprSearch != Defaults.EFR_Data.bRegExprSearch) { + IniSectionSetBool(IniSecSettings, L"RegExprSearch", Settings.EFR_Data.bRegExprSearch); + } else { + IniSectionDelete(IniSecSettings, L"RegExprSearch", false); + } if (Settings.EFR_Data.bWildcardSearch != Defaults.EFR_Data.bWildcardSearch) { IniSectionSetBool(IniSecSettings, L"WildcardSearch", Settings.EFR_Data.bWildcardSearch); } else { diff --git a/src/Edit.c b/src/Edit.c index ca7394044..02fc10872 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -49,7 +49,6 @@ #define LCMAP_TITLECASE 0x00000300 // Title Case Letters bit mask #endif -static EDITFINDREPLACE s_efrSave; static bool s_bSwitchedFindReplace = false; static int s_xFindReplaceDlgSave; @@ -2217,7 +2216,7 @@ static void _GetCurrentDateTimeString(LPWSTR pwchDateTimeStrg, size_t cchBufLen, GetTimeFormatEx(pLocaleName, (bShortFmt ? TIME_NOSECONDS : 0), &st, tfmt, wchTime, COUNTOF(wchTime)); StrDelChrW(wchTime, L"\x200E"); // clear off the Left-to-Right Mark (LRM) - StringCchPrintf(pwchDateTimeStrg, cchBufLen, L"%s\t%s", wchDate, wchTime); + StringCchPrintf(pwchDateTimeStrg, cchBufLen, L"%s %s", wchTime, wchDate); } } @@ -5241,14 +5240,16 @@ static void _SetSearchFlags(HWND hwnd, LPEDITFINDREPLACE lpefr) } } - bIsFlagSet = ((lpefr->fuFlags & SCFIND_REGEXP) != 0); + bIsFlagSet = lpefr->bRegExprSearch; if (IsButtonChecked(hwnd, IDC_FINDREGEXP)) { if (!bIsFlagSet) { + lpefr->bRegExprSearch = true; lpefr->fuFlags |= SCFIND_REGEXP; lpefr->bStateChanged = true; } } else { if (bIsFlagSet) { + lpefr->bRegExprSearch = false; lpefr->fuFlags &= ~SCFIND_REGEXP; lpefr->bStateChanged = true; } @@ -5269,15 +5270,23 @@ static void _SetSearchFlags(HWND hwnd, LPEDITFINDREPLACE lpefr) } } + // force consistency + if (lpefr->bRegExprSearch) { + CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED); + } bIsFlagSet = lpefr->bWildcardSearch; if (IsButtonChecked(hwnd, IDC_WILDCARDSEARCH)) { if (!bIsFlagSet) { lpefr->bWildcardSearch = true; + lpefr->fuFlags |= SCFIND_REGEXP; // Wildcard search based on RegExpr lpefr->bStateChanged = true; } } else { if (bIsFlagSet) { lpefr->bWildcardSearch = false; + if (!(lpefr->bRegExprSearch)) { + lpefr->fuFlags &= ~SCFIND_REGEXP; + } lpefr->bStateChanged = true; } } @@ -5371,7 +5380,7 @@ static void _SetSearchFlags(HWND hwnd, LPEDITFINDREPLACE lpefr) // Wildcard search uses the regexp engine to perform a simple search with * ? as wildcards // instead of more advanced and user-unfriendly regexp syntax // for speed, we only need POSIX syntax here -static void _EscapeWildcards(char* szFind2, size_t cch, LPCEDITFINDREPLACE lpefr) +static void _EscapeWildcards(char* szFind2, size_t cch, LPEDITFINDREPLACE lpefr) { char *const szWildcardEscaped = (char *)AllocMem((cch<<1) + 1, HEAP_ZERO_MEMORY); if (szWildcardEscaped) { @@ -5417,7 +5426,7 @@ static void _EscapeWildcards(char* szFind2, size_t cch, LPCEDITFINDREPLACE lpef // // _EditGetFindStrg() // -static size_t _EditGetFindStrg(HWND hwnd, LPCEDITFINDREPLACE lpefr, LPSTR szFind, size_t cchCnt) +static size_t _EditGetFindStrg(HWND hwnd, LPEDITFINDREPLACE lpefr, LPSTR szFind, size_t cchCnt) { if (!lpefr) { return 0; @@ -5521,7 +5530,7 @@ static DocPos _FindInTarget(LPCSTR szFind, DocPos length, int sFlags, // typedef enum { MATCH = 0, NO_MATCH = 1, INVALID = 2 } RegExResult_t; -static RegExResult_t _FindHasMatch(HWND hwnd, LPCEDITFINDREPLACE lpefr, DocPos iStartPos, bool bMarkAll, bool bFirstMatchOnly) +static RegExResult_t _FindHasMatch(HWND hwnd, LPEDITFINDREPLACE lpefr, DocPos iStartPos, bool bMarkAll, bool bFirstMatchOnly) { char szFind[FNDRPL_BUFFER] = { '\0' }; DocPos const slen = _EditGetFindStrg(hwnd, lpefr, szFind, COUNTOF(szFind)); @@ -5625,8 +5634,10 @@ extern int g_flagMatchText; static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { + static EDITFINDREPLACE s_efrSave = INIT_EFR_DATA; + static LPEDITFINDREPLACE s_pEfrDataDlg = NULL; + static WCHAR s_tchBuf[FNDRPL_BUFFER] = { L'\0' }; // tmp working buffer - static LPEDITFINDREPLACE sg_pefrData = NULL; static DocPos s_InitialSearchStart = 0; static DocPos s_InitialAnchorPos = 0; @@ -5646,7 +5657,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam // clear cmd line stuff g_flagMatchText = 0; - sg_pefrData = NULL; + s_pEfrDataDlg = NULL; // the global static Find/Replace data structure SetWindowLongPtr(hwnd, DWLP_USER, (LONG_PTR)lParam); @@ -5682,7 +5693,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam EditSetCaretToSelectionStart(); // avoid search text selection jumps to next match (before ResizeDlg_InitX()) - sg_pefrData = (LPEDITFINDREPLACE)GetWindowLongPtr(hwnd, DWLP_USER); + s_pEfrDataDlg = (LPEDITFINDREPLACE)GetWindowLongPtr(hwnd, DWLP_USER); Globals.iReplacedOccurrences = 0; Globals.FindReplaceMatchFoundState = FND_NOP; @@ -5710,13 +5721,13 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam COMBOBOXINFO cbInfoF = { sizeof(COMBOBOXINFO) }; GetComboBoxInfo(GetDlgItem(hwnd, IDC_FINDTEXT), &cbInfoF); if (cbInfoF.hwndItem) { - SetWindowSubclass(cbInfoF.hwndItem, EditBoxForPasteFixes, 0, (DWORD_PTR)sg_pefrData); + SetWindowSubclass(cbInfoF.hwndItem, EditBoxForPasteFixes, 0, (DWORD_PTR)s_pEfrDataDlg); SHAutoComplete(cbInfoF.hwndItem, SHACF_FILESYS_ONLY | SHACF_AUTOAPPEND_FORCE_OFF | SHACF_AUTOSUGGEST_FORCE_OFF); } if (!GetWindowTextLengthW(GetDlgItem(hwnd, IDC_FINDTEXT))) { - if (!StrIsEmptyA(sg_pefrData->szFind)) { - SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, sg_pefrData->szFind); + if (!StrIsEmptyA(s_pEfrDataDlg->szFind)) { + SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind); } } @@ -5731,55 +5742,53 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam SHAutoComplete(cbInfoR.hwndItem, SHACF_FILESYS_ONLY | SHACF_AUTOAPPEND_FORCE_OFF | SHACF_AUTOSUGGEST_FORCE_OFF); } - if (!StrIsEmptyA(sg_pefrData->szReplace)) { - SetDlgItemTextMB2W(hwnd, IDC_REPLACETEXT, sg_pefrData->szReplace); + if (!StrIsEmptyA(s_pEfrDataDlg->szReplace)) { + SetDlgItemTextMB2W(hwnd, IDC_REPLACETEXT, s_pEfrDataDlg->szReplace); } } - bool const bRegEx = (sg_pefrData->fuFlags & SCFIND_REGEXP) != 0; - bool const bDotMatchAll = (sg_pefrData->fuFlags & SCFIND_DOT_MATCH_ALL) != 0; + CheckDlgButton(hwnd, IDC_FINDREGEXP, SetBtn(s_pEfrDataDlg->bRegExprSearch)); - CheckDlgButton(hwnd, IDC_DOT_MATCH_ALL, SetBtn(bRegEx && bDotMatchAll)); - DialogEnableControl(hwnd, IDC_DOT_MATCH_ALL, bRegEx); + bool const bDotMatchAll = (s_pEfrDataDlg->fuFlags & SCFIND_DOT_MATCH_ALL) != 0; + CheckDlgButton(hwnd, IDC_DOT_MATCH_ALL, SetBtn(s_pEfrDataDlg->bRegExprSearch && bDotMatchAll)); + DialogEnableControl(hwnd, IDC_DOT_MATCH_ALL, s_pEfrDataDlg->bRegExprSearch); - if (bRegEx) { - sg_pefrData->bWildcardSearch = false; - CheckDlgButton(hwnd, IDC_FINDREGEXP, SetBtn(bRegEx)); - DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, false); + if (s_pEfrDataDlg->bRegExprSearch) { + s_pEfrDataDlg->bWildcardSearch = false; } - - if (sg_pefrData->bWildcardSearch) { + if (s_pEfrDataDlg->bWildcardSearch) { CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_CHECKED); CheckDlgButton(hwnd, IDC_FINDREGEXP, BST_UNCHECKED); - DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, false); } // transform BS handled by regex (wildcard search based on): - CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(sg_pefrData->bTransformBS || bRegEx || sg_pefrData->bWildcardSearch)); - CheckDlgButton(hwnd, IDC_FIND_OVERLAPPING, SetBtn(sg_pefrData->bOverlappingFind)); + CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(s_pEfrDataDlg->bTransformBS || s_pEfrDataDlg->bRegExprSearch || s_pEfrDataDlg->bWildcardSearch)); + DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, !(s_pEfrDataDlg->bRegExprSearch || s_pEfrDataDlg->bWildcardSearch)); - CheckDlgButton(hwnd, IDC_ALL_OCCURRENCES, SetBtn(sg_pefrData->bMarkOccurences)); - if (!sg_pefrData->bMarkOccurences) { - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + CheckDlgButton(hwnd, IDC_FIND_OVERLAPPING, SetBtn(s_pEfrDataDlg->bOverlappingFind)); + + CheckDlgButton(hwnd, IDC_ALL_OCCURRENCES, SetBtn(s_pEfrDataDlg->bMarkOccurences)); + if (!s_pEfrDataDlg->bMarkOccurences) { + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); Globals.iMarkOccurrencesCount = 0; } - CheckDlgButton(hwnd, IDC_FINDCASE, SetBtn(sg_pefrData->fuFlags & SCFIND_MATCHCASE)); - CheckDlgButton(hwnd, IDC_FINDWORD, SetBtn(sg_pefrData->fuFlags & SCFIND_WHOLEWORD)); - CheckDlgButton(hwnd, IDC_FINDSTART, SetBtn(sg_pefrData->fuFlags & SCFIND_WORDSTART)); - CheckDlgButton(hwnd, IDC_NOWRAP, SetBtn(sg_pefrData->bNoFindWrap)); + CheckDlgButton(hwnd, IDC_FINDCASE, SetBtn(s_pEfrDataDlg->fuFlags & SCFIND_MATCHCASE)); + CheckDlgButton(hwnd, IDC_FINDWORD, SetBtn(s_pEfrDataDlg->fuFlags & SCFIND_WHOLEWORD)); + CheckDlgButton(hwnd, IDC_FINDSTART, SetBtn(s_pEfrDataDlg->fuFlags & SCFIND_WORDSTART)); + CheckDlgButton(hwnd, IDC_NOWRAP, SetBtn(s_pEfrDataDlg->bNoFindWrap)); if (GetDlgItem(hwnd, IDC_REPLACE)) { if (s_bSwitchedFindReplace) { - CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(sg_pefrData->bFindClose)); + CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(s_pEfrDataDlg->bFindClose)); } else { - CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(sg_pefrData->bReplaceClose)); + CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(s_pEfrDataDlg->bReplaceClose)); } } else { if (s_bSwitchedFindReplace) { - CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(sg_pefrData->bReplaceClose)); + CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(s_pEfrDataDlg->bReplaceClose)); } else { - CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(sg_pefrData->bFindClose)); + CheckDlgButton(hwnd, IDC_FINDCLOSE, SetBtn(s_pEfrDataDlg->bFindClose)); } } @@ -5794,7 +5803,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam } else { SetDlgPos(hwnd, s_xFindReplaceDlgSave, s_yFindReplaceDlgSave); s_bSwitchedFindReplace = false; - CopyMemory(sg_pefrData, &s_efrSave, sizeof(EDITFINDREPLACE)); + CopyMemory(s_pEfrDataDlg, &s_efrSave, sizeof(EDITFINDREPLACE)); } WCHAR wchMenuBuf[80] = {L'\0'}; @@ -5818,10 +5827,10 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam s_fwrdMatch = s_anyMatch = NO_MATCH; - _SetSearchFlags(hwnd, sg_pefrData); // sync - sg_pefrData->bStateChanged = true; // force update + _SetSearchFlags(hwnd, s_pEfrDataDlg); // sync + s_pEfrDataDlg->bStateChanged = true; // force update - DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, sg_pefrData->bMarkOccurences); + DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, s_pEfrDataDlg->bMarkOccurences); PostMessage(hwnd, WM_THEMECHANGED, 0, 0); } @@ -5833,13 +5842,13 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam return TRUE; case WM_DESTROY: { - _SetSearchFlags(hwnd, sg_pefrData); // sync - Settings.EFR_Data = *sg_pefrData; // remember options + _SetSearchFlags(hwnd, s_pEfrDataDlg); // sync + CopyMemory(&(Settings.EFR_Data), s_pEfrDataDlg, sizeof(EDITFINDREPLACE)); // remember options if (!s_bSwitchedFindReplace) { if (s_anyMatch == MATCH) { // Save MRUs - if (!StrIsEmptyA(sg_pefrData->szFind)) { + if (!StrIsEmptyA(s_pEfrDataDlg->szFind)) { if (GetDlgItemText(hwnd, IDC_FINDTEXT, s_tchBuf, COUNTOF(s_tchBuf))) { MRU_Add(Globals.pMRUfind, s_tchBuf, 0, -1, -1, NULL); SetFindPattern(s_tchBuf); @@ -5855,13 +5864,13 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam EnableCmd(GetMenu(Globals.hwndMain), IDM_VIEW_MARKOCCUR_ONOFF, true); if (FocusedView.HideNonMatchedLines) { - EditToggleView(sg_pefrData->hwnd); + EditToggleView(s_pEfrDataDlg->hwnd); } if (IsMarkOccurrencesEnabled()) { MarkAllOccurrences(50, true); } else { - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); Globals.iMarkOccurrencesCount = 0; } @@ -5888,7 +5897,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam DeleteObject(hBrushRed); DeleteObject(hBrushGreen); DeleteObject(hBrushBlue); - sg_pefrData = NULL; + s_pEfrDataDlg = NULL; Globals.hwndDlgFindReplace = NULL; } return FALSE; @@ -5940,10 +5949,10 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case WM_CTLCOLOREDIT: case WM_CTLCOLORLISTBOX: { - if (!sg_pefrData) { + if (!s_pEfrDataDlg) { return false; } - if (sg_pefrData->bMarkOccurences) { + if (s_pEfrDataDlg->bMarkOccurences) { HWND hCheck = (HWND)lParam; HDC hDC = (HDC)wParam; @@ -5985,7 +5994,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case WM_ACTIVATE: { - if (!sg_pefrData) { + if (!s_pEfrDataDlg) { return false; } @@ -6027,7 +6036,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case WM_COMMAND: { - if (!sg_pefrData) { + if (!s_pEfrDataDlg) { return false; } @@ -6036,7 +6045,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case IDC_DOC_MODIFIED: s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialTopLine = -1; // reset - sg_pefrData->bStateChanged = true; + s_pEfrDataDlg->bStateChanged = true; break; case IDC_FINDTEXT: @@ -6055,7 +6064,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam // use most recent search pattern to find box lpszSelection = AllocMem(FNDRPL_BUFFER, HEAP_ZERO_MEMORY); if (lpszSelection) { - _EditGetFindStrg(Globals.hwndEdit, sg_pefrData, lpszSelection, SizeOfMem(lpszSelection)); + _EditGetFindStrg(Globals.hwndEdit, s_pEfrDataDlg, lpszSelection, SizeOfMem(lpszSelection)); } } @@ -6100,9 +6109,9 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam SendDlgItemMessage(hwnd, LOWORD(wParam), CB_SETEDITSEL, 0, MAKELPARAM(lSelEnd, lSelEnd)); } - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); - if (StrIsEmptyA(sg_pefrData->szFind)) { + if (StrIsEmptyA(s_pEfrDataDlg->szFind)) { SetFindPattern(L""); SciCall_SetSel(s_InitialSearchStart, s_InitialSearchStart); } @@ -6113,51 +6122,51 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam break; case IDT_TIMER_MAIN_MRKALL: { - if (sg_pefrData->bMarkOccurences) { + if (s_pEfrDataDlg->bMarkOccurences) { static char s_lastFind[FNDRPL_BUFFER] = { L'\0' }; - if (sg_pefrData->bStateChanged || (StringCchCompareXA(s_lastFind, sg_pefrData->szFind) != 0)) { + if (s_pEfrDataDlg->bStateChanged || (StringCchCompareXA(s_lastFind, s_pEfrDataDlg->szFind) != 0)) { _IGNORE_NOTIFY_CHANGE_; - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); - StringCchCopyA(s_lastFind, COUNTOF(s_lastFind), sg_pefrData->szFind); - RegExResult_t match = _FindHasMatch(sg_pefrData->hwnd, sg_pefrData, 0, (sg_pefrData->bMarkOccurences), false); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); + StringCchCopyA(s_lastFind, COUNTOF(s_lastFind), s_pEfrDataDlg->szFind); + RegExResult_t match = _FindHasMatch(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, 0, (s_pEfrDataDlg->bMarkOccurences), false); s_anyMatch = match; // we have to set Sci's regex instance to first find (have substitution in place) DocPos const iStartPos = (DocPos)lParam; if (!GetDlgItem(hwnd, IDC_REPLACE) || !Sci_IsSelectionMultiLine()) { - s_fwrdMatch = _FindHasMatch(sg_pefrData->hwnd, sg_pefrData, iStartPos, false, true); + s_fwrdMatch = _FindHasMatch(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, iStartPos, false, true); } else { s_fwrdMatch = match; } InvalidateRect(GetDlgItem(hwnd, IDC_FINDTEXT), NULL, TRUE); if (match != MATCH) { - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); if (s_InitialTopLine >= 0) { SciCall_SetFirstVisibleLine(s_InitialTopLine); } else { EditSetSelectionEx(s_InitialAnchorPos, s_InitialCaretPos, -1, -1); } if (FocusedView.HideNonMatchedLines) { - EditToggleView(sg_pefrData->hwnd); + EditToggleView(s_pEfrDataDlg->hwnd); } MarkAllOccurrences(4, true); } _OBSERVE_NOTIFY_CHANGE_; } - } else if (sg_pefrData->bStateChanged) { + } else if (s_pEfrDataDlg->bStateChanged) { if (FocusedView.HideNonMatchedLines) { SendWMCommand(hwnd, IDC_TOGGLE_VISIBILITY); } else { - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); } } - sg_pefrData->bStateChanged = false; + s_pEfrDataDlg->bStateChanged = false; } return false; case IDC_ALL_OCCURRENCES: { - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); if (IsButtonChecked(hwnd, IDC_ALL_OCCURRENCES)) { DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, true); @@ -6165,9 +6174,9 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam } else { // switched OFF DialogEnableControl(hwnd, IDC_TOGGLE_VISIBILITY, false); if (FocusedView.HideNonMatchedLines) { - EditToggleView(sg_pefrData->hwnd); + EditToggleView(s_pEfrDataDlg->hwnd); } - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); Globals.iMarkOccurrencesCount = 0; InvalidateRect(GetDlgItem(hwnd, IDC_FINDTEXT), NULL, TRUE); } @@ -6176,12 +6185,12 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case IDC_TOGGLE_VISIBILITY: - if (sg_pefrData) { - EditToggleView(sg_pefrData->hwnd); + if (s_pEfrDataDlg) { + EditToggleView(s_pEfrDataDlg->hwnd); if (!FocusedView.HideNonMatchedLines) { - sg_pefrData->bStateChanged = true; + s_pEfrDataDlg->bStateChanged = true; s_InitialTopLine = -1; // reset - EditClearAllOccurrenceMarkers(sg_pefrData->hwnd); + EditClearAllOccurrenceMarkers(s_pEfrDataDlg->hwnd); _DelayMarkAll(hwnd, 50, 0); } } @@ -6199,14 +6208,14 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam } else { // unchecked DialogEnableControl(hwnd, IDC_DOT_MATCH_ALL, false); DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, true); - CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(sg_pefrData->bTransformBS)); + CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(s_pEfrDataDlg->bTransformBS)); } - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; case IDC_DOT_MATCH_ALL: - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; @@ -6220,36 +6229,36 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, false); } else { // unchecked DialogEnableControl(hwnd, IDC_FINDTRANSFORMBS, true); - CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(sg_pefrData->bTransformBS)); + CheckDlgButton(hwnd, IDC_FINDTRANSFORMBS, SetBtn(s_pEfrDataDlg->bTransformBS)); } - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); } break; case IDC_FIND_OVERLAPPING: - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; case IDC_FINDTRANSFORMBS: { - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); } break; case IDC_FINDCASE: - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; case IDC_FINDWORD: - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; case IDC_FINDSTART: - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); break; @@ -6273,33 +6282,33 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam (!bIsFindDlg && LOWORD(wParam) == IDMSG_SWITCHTOFIND)) { GetDlgPos(hwnd, &s_xFindReplaceDlgSave, &s_yFindReplaceDlgSave); s_bSwitchedFindReplace = true; - CopyMemory(&s_efrSave, sg_pefrData, sizeof(EDITFINDREPLACE)); + CopyMemory(&s_efrSave, s_pEfrDataDlg, sizeof(EDITFINDREPLACE)); } if (!s_bSwitchedFindReplace && - !GetDlgItemTextW2MB(hwnd, IDC_FINDTEXT, sg_pefrData->szFind, COUNTOF(sg_pefrData->szFind))) { + !GetDlgItemTextW2MB(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind, COUNTOF(s_pEfrDataDlg->szFind))) { DialogEnableControl(hwnd, IDOK, false); DialogEnableControl(hwnd, IDC_FINDPREV, false); DialogEnableControl(hwnd, IDC_REPLACE, false); DialogEnableControl(hwnd, IDC_REPLACEALL, false); DialogEnableControl(hwnd, IDC_REPLACEINSEL, false); - if (!GetDlgItemTextW2MB(hwnd, IDC_REPLACETEXT, sg_pefrData->szReplace, COUNTOF(sg_pefrData->szReplace))) { + if (!GetDlgItemTextW2MB(hwnd, IDC_REPLACETEXT, s_pEfrDataDlg->szReplace, COUNTOF(s_pEfrDataDlg->szReplace))) { DialogEnableControl(hwnd, IDC_SWAPSTRG, false); } return true; } - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); if (!s_bSwitchedFindReplace) { // Save MRUs - if (!StrIsEmptyA(sg_pefrData->szFind)) { - MultiByteToWideChar(Encoding_SciCP, 0, sg_pefrData->szFind, -1, s_tchBuf, (int)COUNTOF(s_tchBuf)); + if (!StrIsEmptyA(s_pEfrDataDlg->szFind)) { + MultiByteToWideChar(Encoding_SciCP, 0, s_pEfrDataDlg->szFind, -1, s_tchBuf, (int)COUNTOF(s_tchBuf)); MRU_Add(Globals.pMRUfind, s_tchBuf, 0, -1, -1, NULL); SetFindPattern(s_tchBuf); } - if (!StrIsEmptyA(sg_pefrData->szReplace)) { - MultiByteToWideChar(Encoding_SciCP, 0, sg_pefrData->szReplace, -1, s_tchBuf, (int)COUNTOF(s_tchBuf)); + if (!StrIsEmptyA(s_pEfrDataDlg->szReplace)) { + MultiByteToWideChar(Encoding_SciCP, 0, s_pEfrDataDlg->szReplace, -1, s_tchBuf, (int)COUNTOF(s_tchBuf)); MRU_Add(Globals.pMRUreplace, s_tchBuf, 0, -1, -1, NULL); } } @@ -6317,8 +6326,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_ADDSTRING, 0, (LPARAM)s_tchBuf); } - SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, sg_pefrData->szFind); - SetDlgItemTextMB2W(hwnd, IDC_REPLACETEXT, sg_pefrData->szReplace); + SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind); + SetDlgItemTextMB2W(hwnd, IDC_REPLACETEXT, s_pEfrDataDlg->szReplace); if (!s_bSwitchedFindReplace) { SendMessage(hwnd, WM_NEXTDLGCTL, (WPARAM)(GetFocus()), 1); @@ -6330,7 +6339,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam if (!bIsFindDlg) { Globals.bReplaceInitialized = true; } - EditFindNext(sg_pefrData->hwnd, sg_pefrData, (LOWORD(wParam) == IDACC_SELTONEXT), IsKeyDown(VK_F3)); + EditFindNext(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, (LOWORD(wParam) == IDACC_SELTONEXT), IsKeyDown(VK_F3)); s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialAnchorPos = SciCall_GetAnchor(); s_InitialCaretPos = SciCall_GetCurrentPos(); @@ -6342,7 +6351,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam if (!bIsFindDlg) { Globals.bReplaceInitialized = true; } - EditFindPrev(sg_pefrData->hwnd, sg_pefrData, (LOWORD(wParam) == IDACC_SELTOPREV), IsKeyDown(VK_F3)); + EditFindPrev(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, (LOWORD(wParam) == IDACC_SELTOPREV), IsKeyDown(VK_F3)); s_InitialSearchStart = SciCall_GetSelectionStart(); s_InitialAnchorPos = SciCall_GetAnchor(); s_InitialCaretPos = SciCall_GetCurrentPos(); @@ -6351,27 +6360,27 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case IDC_REPLACE: { Globals.bReplaceInitialized = true; - EditReplace(sg_pefrData->hwnd, sg_pefrData); + EditReplace(s_pEfrDataDlg->hwnd, s_pEfrDataDlg); } break; case IDC_REPLACEALL: Globals.bReplaceInitialized = true; - EditReplaceAll(sg_pefrData->hwnd, sg_pefrData, true); + EditReplaceAll(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, true); break; case IDC_REPLACEINSEL: if (!SciCall_IsSelectionEmpty()) { Globals.bReplaceInitialized = true; - EditReplaceAllInSelection(sg_pefrData->hwnd, sg_pefrData, true); + EditReplaceAllInSelection(s_pEfrDataDlg->hwnd, s_pEfrDataDlg, true); } break; } - if (bIsFindDlg && (sg_pefrData->bFindClose)) { + if (bIsFindDlg && (s_pEfrDataDlg->bFindClose)) { //~EndDialog(hwnd, LOWORD(wParam)); ~ (!) not running on own message loop DestroyWindow(hwnd); - } else if ((LOWORD(wParam) != IDOK) && sg_pefrData->bReplaceClose) { + } else if ((LOWORD(wParam) != IDOK) && s_pEfrDataDlg->bReplaceClose) { //~EndDialog(hwnd, LOWORD(wParam)); ~ (!) not running on own message loop DestroyWindow(hwnd); } @@ -6405,7 +6414,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam SetDlgItemTextW(hwnd, IDC_FINDTEXT, wszRepl); SetDlgItemTextW(hwnd, IDC_REPLACETEXT, wszFind); Globals.FindReplaceMatchFoundState = FND_NOP; - _SetSearchFlags(hwnd, sg_pefrData); + _SetSearchFlags(hwnd, s_pEfrDataDlg); _DelayMarkAll(hwnd, 50, 0); } break; @@ -6432,8 +6441,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam if (Globals.bCanSaveIniFile) { MRU_Save(Globals.pMRUfind); } - if (sg_pefrData) { - sg_pefrData->szFind[0] = '\0'; + if (s_pEfrDataDlg) { + s_pEfrDataDlg->szFind[0] = '\0'; } SetFindPattern(NULL); while ((int)SendDlgItemMessage(hwnd, IDC_FINDTEXT, CB_DELETESTRING, 0, 0) > 0) {}; @@ -6445,8 +6454,8 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam if (Globals.bCanSaveIniFile) { MRU_Save(Globals.pMRUreplace); } - if (sg_pefrData) { - sg_pefrData->szReplace[0] = '\0'; + if (s_pEfrDataDlg) { + s_pEfrDataDlg->szReplace[0] = '\0'; } while ((int)SendDlgItemMessage(hwnd, IDC_REPLACETEXT, CB_DELETESTRING, 0, 0) > 0) {}; SetDlgItemText(hwnd, IDC_REPLACETEXT, L""); @@ -6471,7 +6480,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam case IDACC_SAVEFIND: Globals.FindReplaceMatchFoundState = FND_NOP; SendWMCommand(Globals.hwndMain, IDM_EDIT_SAVEFIND); - SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, sg_pefrData->szFind); + SetDlgItemTextMB2W(hwnd, IDC_FINDTEXT, s_pEfrDataDlg->szFind); CheckDlgButton(hwnd, IDC_FINDREGEXP, BST_UNCHECKED); CheckDlgButton(hwnd, IDC_DOT_MATCH_ALL, BST_UNCHECKED); CheckDlgButton(hwnd, IDC_WILDCARDSEARCH, BST_UNCHECKED); @@ -6561,7 +6570,7 @@ static INT_PTR CALLBACK EditFindReplaceDlgProc(HWND hwnd,UINT umsg,WPARAM wParam // // EditFindReplaceDlg() // -HWND EditFindReplaceDlg(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool bReplace) +HWND EditFindReplaceDlg(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bReplace) { (void)CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_SPEED_OVER_MEMORY); @@ -6584,7 +6593,7 @@ HWND EditFindReplaceDlg(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool bReplace) // // EditFindNext() // -bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd) +bool EditFindNext(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd) { bool bSuppressNotFound = false; bool bFoundWrapAround = false; @@ -6692,9 +6701,8 @@ bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo // // EditFindPrev() // -bool EditFindPrev(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd) +bool EditFindPrev(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd) { - bool bSuppressNotFound = false; bool bFoundWrapAround = false; @@ -6868,16 +6876,19 @@ void EditSelectionMultiSelectAll() // // EditSelectionMultiSelectAllEx() // -void EditSelectionMultiSelectAllEx(EDITFINDREPLACE edFndRpl) +void EditSelectionMultiSelectAllEx(CLPCEDITFINDREPLACE edFndRpl) { + EDITFINDREPLACE efr; + CopyMemory(&efr, edFndRpl, sizeof(EDITFINDREPLACE)); + if (IsWindow(Globals.hwndDlgFindReplace)) { - _SetSearchFlags(Globals.hwndDlgFindReplace, &edFndRpl); + _SetSearchFlags(Globals.hwndDlgFindReplace, &efr); } else { - edFndRpl.fuFlags = GetMarkAllOccSearchFlags(); + efr.fuFlags = GetMarkAllOccSearchFlags(); } _IGNORE_NOTIFY_CHANGE_; - EditMarkAll(edFndRpl.szFind, edFndRpl.fuFlags, 0, Sci_GetDocEndPosition(), true); + EditMarkAll(efr.szFind, efr.fuFlags, 0, Sci_GetDocEndPosition(), true); _OBSERVE_NOTIFY_CHANGE_; } @@ -6886,7 +6897,7 @@ void EditSelectionMultiSelectAllEx(EDITFINDREPLACE edFndRpl) // // _GetReplaceString() // -static char* _GetReplaceString(HWND hwnd, LPCEDITFINDREPLACE lpefr, int* iReplaceMsg) +static char* _GetReplaceString(HWND hwnd, CLPCEDITFINDREPLACE lpefr, int* iReplaceMsg) { char* pszReplace = NULL; // replace text of arbitrary size if (StringCchCompareNIA(lpefr->szReplace, COUNTOF(lpefr->szReplace), "^c", 2) == 0) { @@ -6911,7 +6922,7 @@ static char* _GetReplaceString(HWND hwnd, LPCEDITFINDREPLACE lpefr, int* iReplac // // EditReplace() // -bool EditReplace(HWND hwnd, LPCEDITFINDREPLACE lpefr) +bool EditReplace(HWND hwnd, LPEDITFINDREPLACE lpefr) { int iReplaceMsg = SCI_REPLACETARGET; char* pszReplace = _GetReplaceString(hwnd, lpefr, &iReplaceMsg); @@ -6978,7 +6989,7 @@ bool EditReplace(HWND hwnd, LPCEDITFINDREPLACE lpefr) // EditReplaceAllInRange() // // -int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, DocPos iStartPos, DocPos iEndPos, DocPos *enlargement) +int EditReplaceAllInRange(HWND hwnd, LPEDITFINDREPLACE lpefr, DocPos iStartPos, DocPos iEndPos, DocPos *enlargement) { if (iStartPos > iEndPos) { swapos(&iStartPos, &iEndPos); @@ -7041,7 +7052,7 @@ int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, DocPos iStartPos, // // EditReplaceAll() // -bool EditReplaceAll(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowInfo) +bool EditReplaceAll(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bShowInfo) { DocPos const start = 0; DocPos const end = Sci_GetDocEndPosition(); @@ -7067,7 +7078,7 @@ bool EditReplaceAll(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowInfo) // // EditReplaceAllInSelection() // -bool EditReplaceAllInSelection(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bShowInfo) +bool EditReplaceAllInSelection(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bShowInfo) { if (Sci_IsMultiOrRectangleSelection()) { InfoBoxLng(MB_ICONWARNING, NULL, IDS_MUI_SELRECTORMULTI); diff --git a/src/Edit.h b/src/Edit.h index a119322e6..5ca8ae8de 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -21,118 +21,118 @@ #include "SciCall.h" #include "TypeDefs.h" -void EditInitializeSciCtrl(HWND); -void EditReplaceSelection(const char* text, bool bForceSel); -void EditInitWordDelimiter(HWND hwnd); -void EditSetNewText(HWND hwnd,const char* lpstrText, DocPosU lenText,bool); -bool EditConvertText(HWND hwnd, cpi_enc_t encSource, cpi_enc_t encDest); -bool EditSetNewEncoding(HWND hwnd, cpi_enc_t iNewEncoding,bool bSupressWarning); -bool EditIsRecodingNeeded(WCHAR* pszText,int cchLen); +void EditInitializeSciCtrl(HWND); +void EditReplaceSelection(const char* text, bool bForceSel); +void EditInitWordDelimiter(HWND hwnd); +void EditSetNewText(HWND hwnd,const char* lpstrText, DocPosU lenText,bool); +bool EditConvertText(HWND hwnd, cpi_enc_t encSource, cpi_enc_t encDest); +bool EditSetNewEncoding(HWND hwnd, cpi_enc_t iNewEncoding,bool bSupressWarning); +bool EditIsRecodingNeeded(WCHAR* pszText,int cchLen); size_t EditGetSelectedText(LPWSTR pwchBuffer, size_t wchLength); char* EditGetClipboardText(HWND hwnd,bool,int* pLineCount,int* pLenLastLn); -void EditGetClipboardW(LPWSTR pwchBuffer, size_t wchLength); -bool EditSetClipboardText(HWND hwnd, const char* pszText, size_t cchText); -bool EditClearClipboard(HWND hwnd); -bool EditSwapClipboard(HWND hwnd,bool); -bool EditCopyRangeAppend(HWND hwnd, DocPos posBegin, DocPos posEnd, bool bAppend); -void EditDetectEOLMode(LPCSTR lpData, size_t cbData, EditFileIOStatus* const status); -void EditIndentationStatistic(HWND hwnd, EditFileIOStatus* const status); -bool EditLoadFile(HWND hwnd, LPWSTR pszFile, bool bSkipUTFDetection, bool bSkipANSICPDetection, - bool bForceEncDetection, bool bClearUndoHistory, EditFileIOStatus* const status); -bool EditSaveFile(HWND hwnd, LPCWSTR pszFile, EditFileIOStatus* status, bool bSaveCopy, bool bPreserveTimeStamp); +void EditGetClipboardW(LPWSTR pwchBuffer, size_t wchLength); +bool EditSetClipboardText(HWND hwnd, const char* pszText, size_t cchText); +bool EditClearClipboard(HWND hwnd); +bool EditSwapClipboard(HWND hwnd,bool); +bool EditCopyRangeAppend(HWND hwnd, DocPos posBegin, DocPos posEnd, bool bAppend); +void EditDetectEOLMode(LPCSTR lpData, size_t cbData, EditFileIOStatus* const status); +void EditIndentationStatistic(HWND hwnd, EditFileIOStatus* const status); +bool EditLoadFile(HWND hwnd, LPWSTR pszFile, bool bSkipUTFDetection, bool bSkipANSICPDetection, + bool bForceEncDetection, bool bClearUndoHistory, EditFileIOStatus* const status); +bool EditSaveFile(HWND hwnd, LPCWSTR pszFile, EditFileIOStatus* status, bool bSaveCopy, bool bPreserveTimeStamp); -void EditInvertCase(HWND hwnd); -void EditTitleCase(HWND hwnd); -void EditSentenceCase(HWND hwnd); +void EditInvertCase(HWND hwnd); +void EditTitleCase(HWND hwnd); +void EditSentenceCase(HWND hwnd); -void EditURLEncode(); -void EditURLDecode(); -void EditEscapeCChars(HWND hwnd); -void EditUnescapeCChars(HWND hwnd); -void EditChar2Hex(HWND hwnd); -void EditHex2Char(HWND hwnd); -void EditFindMatchingBrace(); -void EditSelectToMatchingBrace(); -void EditModifyNumber(HWND hwnd, bool bIncrease); -void EditInsertDateTimeStrg(bool bShortFmt, bool bTimestampFmt); -void EditUpdateTimestamps(); +void EditURLEncode(); +void EditURLDecode(); +void EditEscapeCChars(HWND hwnd); +void EditUnescapeCChars(HWND hwnd); +void EditChar2Hex(HWND hwnd); +void EditHex2Char(HWND hwnd); +void EditFindMatchingBrace(); +void EditSelectToMatchingBrace(); +void EditModifyNumber(HWND hwnd, bool bIncrease); +void EditInsertDateTimeStrg(bool bShortFmt, bool bTimestampFmt); +void EditUpdateTimestamps(); -void EditTabsToSpaces(int nTabWidth, bool bOnlyIndentingWS); -void EditSpacesToTabs(int nTabWidth, bool bOnlyIndentingWS); +void EditTabsToSpaces(int nTabWidth, bool bOnlyIndentingWS); +void EditSpacesToTabs(int nTabWidth, bool bOnlyIndentingWS); -void EditMoveUp(HWND hwnd); -void EditMoveDown(HWND hwnd); -bool EditSetCaretToSelectionStart(); -bool EditSetCaretToSelectionEnd(); -void EditModifyLines(LPCWSTR pwszPrefix,LPCWSTR pwszAppend); -void EditIndentBlock(HWND hwnd,int cmd, bool bFormatIndentation, bool bForceAll); -void EditAlignText(int nMode); -void EditEncloseSelection(LPCWSTR pwszOpen,LPCWSTR pwszClose); -void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart); -void EditPadWithSpaces(HWND hwnd, bool bSkipEmpty, bool bNoUndoGroup); -void EditStripFirstCharacter(HWND hwnd); -void EditStripLastCharacter(HWND hwnd, bool bIgnoreSelection, bool bTrailingBlanksOnly); -void EditCompressBlanks(); -void EditRemoveBlankLines(HWND hwnd, bool bMerge, bool bRemoveWhiteSpace); -void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines); -void EditFocusMarkedLinesCmd(HWND hwnd, bool bCopy, bool bDelete); -void EditWrapToColumn(DocPosU nColumn); +void EditMoveUp(HWND hwnd); +void EditMoveDown(HWND hwnd); +bool EditSetCaretToSelectionStart(); +bool EditSetCaretToSelectionEnd(); +void EditModifyLines(LPCWSTR pwszPrefix,LPCWSTR pwszAppend); +void EditIndentBlock(HWND hwnd,int cmd, bool bFormatIndentation, bool bForceAll); +void EditAlignText(int nMode); +void EditEncloseSelection(LPCWSTR pwszOpen,LPCWSTR pwszClose); +void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart); +void EditPadWithSpaces(HWND hwnd, bool bSkipEmpty, bool bNoUndoGroup); +void EditStripFirstCharacter(HWND hwnd); +void EditStripLastCharacter(HWND hwnd, bool bIgnoreSelection, bool bTrailingBlanksOnly); +void EditCompressBlanks(); +void EditRemoveBlankLines(HWND hwnd, bool bMerge, bool bRemoveWhiteSpace); +void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines); +void EditFocusMarkedLinesCmd(HWND hwnd, bool bCopy, bool bDelete); +void EditWrapToColumn(DocPosU nColumn); //void EditWrapToColumnForce(HWND hwnd, DocPosU nColumn); -void EditSplitLines(HWND hwnd); -void EditJoinLinesEx(bool,bool); -void EditSortLines(HWND hwnd,int iSortFlags); +void EditSplitLines(HWND hwnd); +void EditJoinLinesEx(bool,bool); +void EditSortLines(HWND hwnd,int iSortFlags); -void EditJumpTo(DocLn iNewLine, DocPos iNewCol); -void EditSetSelectionEx(DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcAnchor, DocPos vSpcCurrent); -void EditFixPositions(); -void EditEnsureSelectionVisible(); -void EditEnsureConsistentLineEndings(HWND hwnd); -void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt); +void EditJumpTo(DocLn iNewLine, DocPos iNewCol); +void EditSetSelectionEx(DocPos iAnchorPos, DocPos iCurrentPos, DocPos vSpcAnchor, DocPos vSpcCurrent); +void EditFixPositions(); +void EditEnsureSelectionVisible(); +void EditEnsureConsistentLineEndings(HWND hwnd); +void EditGetExcerpt(HWND hwnd,LPWSTR lpszExcerpt,DWORD cchExcerpt); -HWND EditFindReplaceDlg(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool); -bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd); -bool EditFindPrev(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd); -bool EditReplace(HWND hwnd,LPCEDITFINDREPLACE lpefr); -int EditReplaceAllInRange(HWND hwnd,LPCEDITFINDREPLACE lpefr,DocPos iStartPos,DocPos iEndPos,DocPos* enlargement); -bool EditReplaceAll(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool); -bool EditReplaceAllInSelection(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool); -bool EditLinenumDlg(HWND hwnd); -bool EditModifyLinesDlg(HWND hwnd,LPWSTR pwsz1,LPWSTR pwsz2); -bool EditEncloseSelectionDlg(HWND hwnd,LPWSTR pwszOpen,LPWSTR pwszClose); -bool EditInsertTagDlg(HWND hwnd,LPWSTR pwszOpen,LPWSTR pwszClose,UINT* pRepeat); -bool EditSortDlg(HWND hwnd,int* piSortFlags); -bool EditAlignDlg(HWND hwnd,int* piAlignMode); -bool EditPrint(HWND,LPCWSTR,LPCWSTR); -void EditPrintSetup(HWND hwnd); -void EditPrintInit(); -bool EditSetDocumentBuffer(const char* lpstrText, DocPosU lenText); -void EditMatchBrace(HWND hwnd); -void EditClearAllOccurrenceMarkers(HWND hwnd); -void EditClearAllBookMarks(HWND hwnd); -void EditToggleView(HWND hwnd); -void EditSelectWordAtPos(const DocPos iPos, const bool bForceWord); -int EditAddSearchFlags(int flags, bool bRegEx, bool bWordStart, bool bMatchCase, bool bMatchWords, bool bDotMatchAll); -void EditMarkAll(char* pszFind, int sFlags, DocPos rangeStart, DocPos rangeEnd, bool bMultiSel); -void EditDoVisibleStyling(); -void EditDoStyling(DocPos iStartPos, DocPos iEndPos); -void EditUpdateVisibleIndicators(); -void EditUpdateIndicators(DocPos startPos, DocPos endPos, bool bClearOnly); -void EditSetAccelWordNav(HWND hwnd,bool); -bool EditAutoCompleteWord(HWND hwnd, bool autoInsert); -bool EditCheckNewLineInACFillUps(); -void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition); -void EditGetBookmarkList(HWND hwnd,LPWSTR pszBookMarks,int cchLength); -void EditSetBookmarkList(HWND hwnd,LPCWSTR pszBookMarks); -void EditBookmarkNext(HWND hwnd, const DocLn iLine); -void EditBookmarkPrevious(HWND hwnd, const DocLn iLine); -void EditBookmarkToggle(HWND hwnd, const DocLn ln, const int modifiers); -void EditMarkAllOccurrences(HWND hwnd, bool bForceClear); -void EditFoldMarkedLineRange(HWND hwnd, bool bHideLines); -void EditBookMarkLineRange(HWND hwnd); -void EditDeleteMarkerInSelection(); -void EditSelectionMultiSelectAll(); -void EditSelectionMultiSelectAllEx(EDITFINDREPLACE edFndRpl); +HWND EditFindReplaceDlg(HWND hwnd, LPEDITFINDREPLACE lpefr, bool); +bool EditFindNext(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd); +bool EditFindPrev(HWND hwnd, LPEDITFINDREPLACE lpefr, bool bExtendSelection, bool bFocusWnd); +bool EditReplace(HWND hwnd, LPEDITFINDREPLACE lpefr); +int EditReplaceAllInRange(HWND hwnd, LPEDITFINDREPLACE lpefr, DocPos iStartPos, DocPos iEndPos, DocPos *enlargement); +bool EditReplaceAll(HWND hwnd, LPEDITFINDREPLACE lpefr, bool); +bool EditReplaceAllInSelection(HWND hwnd, LPEDITFINDREPLACE lpefr, bool); +bool EditLinenumDlg(HWND hwnd); +bool EditModifyLinesDlg(HWND hwnd,LPWSTR pwsz1,LPWSTR pwsz2); +bool EditEncloseSelectionDlg(HWND hwnd,LPWSTR pwszOpen,LPWSTR pwszClose); +bool EditInsertTagDlg(HWND hwnd,LPWSTR pwszOpen,LPWSTR pwszClose,UINT* pRepeat); +bool EditSortDlg(HWND hwnd,int* piSortFlags); +bool EditAlignDlg(HWND hwnd,int* piAlignMode); +bool EditPrint(HWND,LPCWSTR,LPCWSTR); +void EditPrintSetup(HWND hwnd); +void EditPrintInit(); +bool EditSetDocumentBuffer(const char* lpstrText, DocPosU lenText); +void EditMatchBrace(HWND hwnd); +void EditClearAllOccurrenceMarkers(HWND hwnd); +void EditClearAllBookMarks(HWND hwnd); +void EditToggleView(HWND hwnd); +void EditSelectWordAtPos(const DocPos iPos, const bool bForceWord); +int EditAddSearchFlags(int flags, bool bRegEx, bool bWordStart, bool bMatchCase, bool bMatchWords, bool bDotMatchAll); +void EditMarkAll(char* pszFind, int sFlags, DocPos rangeStart, DocPos rangeEnd, bool bMultiSel); +void EditDoVisibleStyling(); +void EditDoStyling(DocPos iStartPos, DocPos iEndPos); +void EditUpdateVisibleIndicators(); +void EditUpdateIndicators(DocPos startPos, DocPos endPos, bool bClearOnly); +void EditSetAccelWordNav(HWND hwnd,bool); +bool EditAutoCompleteWord(HWND hwnd, bool autoInsert); +bool EditCheckNewLineInACFillUps(); +void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition); +void EditGetBookmarkList(HWND hwnd,LPWSTR pszBookMarks,int cchLength); +void EditSetBookmarkList(HWND hwnd,LPCWSTR pszBookMarks); +void EditBookmarkNext(HWND hwnd, const DocLn iLine); +void EditBookmarkPrevious(HWND hwnd, const DocLn iLine); +void EditBookmarkToggle(HWND hwnd, const DocLn ln, const int modifiers); +void EditMarkAllOccurrences(HWND hwnd, bool bForceClear); +void EditFoldMarkedLineRange(HWND hwnd, bool bHideLines); +void EditBookMarkLineRange(HWND hwnd); +void EditDeleteMarkerInSelection(); +void EditSelectionMultiSelectAll(); +void EditSelectionMultiSelectAllEx(CLPCEDITFINDREPLACE edFndRpl); // // Folding Functions diff --git a/src/Notepad3.c b/src/Notepad3.c index 6c260c36b..db9c55b95 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -699,6 +699,7 @@ static bool _InsertLanguageMenu(HMENU hMenuBar) { // check, if we need a language switching menu if (Globals.iAvailLngCount < 2) { + Settings.PreferredLocale4DateFmt = false; return false; } @@ -727,11 +728,7 @@ static bool _InsertLanguageMenu(HMENU hMenuBar) InsertMenu(hMenuBar, IDM_VIEW_TABSASSPACES, MF_BYCOMMAND | MF_STRING, (UINT_PTR)IDS_USE_LOCALE_DATEFMT, wchMenuItemStrg); InsertMenu(hMenuBar, IDM_VIEW_TABSASSPACES, MF_BYCOMMAND | MF_SEPARATOR, (UINT_PTR)NULL, NULL); return res; - } else { - Settings.PreferredLocale4DateFmt = false; } - - return false; } @@ -1228,7 +1225,6 @@ void CopyFindPatternMB(LPSTR chFindPattern, size_t bufferCount) WideCharToMultiByte(Encoding_SciCP, 0, sCurrentFindPattern, -1, chFindPattern, (int)bufferCount, NULL, NULL); } - static EDITFINDREPLACE s_FindReplaceData = INIT_EFR_DATA; //============================================================================= @@ -1258,6 +1254,7 @@ static void SetFindReplaceData() s_FindReplaceData.bTransformBS = true; } s_FindReplaceData.bOverlappingFind = false; + s_FindReplaceData.bRegExprSearch = (s_FindReplaceData.fuFlags & SCFIND_REGEXP); s_FindReplaceData.bWildcardSearch = false; s_FindReplaceData.bReplaceClose = false; } @@ -4535,7 +4532,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) EditSelectionMultiSelectAll(); } else { SetFindReplaceData(); // s_FindReplaceData - EditSelectionMultiSelectAllEx(s_FindReplaceData); + EditSelectionMultiSelectAllEx(&s_FindReplaceData); } } } diff --git a/src/TypeDefs.h b/src/TypeDefs.h index dfe9d59d6..3b93bfbd0 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -192,6 +192,7 @@ typedef struct _editfindreplace bool bReplaceClose; bool bOverlappingFind; bool bNoFindWrap; + bool bRegExprSearch; bool bWildcardSearch; bool bMarkOccurences; bool bHideNonMatchedLines; @@ -200,9 +201,12 @@ typedef struct _editfindreplace char szFind[FNDRPL_BUFFER]; char szReplace[FNDRPL_BUFFER]; -} EDITFINDREPLACE, *LPEDITFINDREPLACE, *LPCEDITFINDREPLACE; +} EDITFINDREPLACE, *LPEDITFINDREPLACE; -#define INIT_EFR_DATA { 0, false, false, false, false, false, false, false, false, true, NULL, "", "" } +//typedef const EDITFINDREPLACE* CLPEDITFINDREPLACE; +typedef const EDITFINDREPLACE* const CLPCEDITFINDREPLACE; + +#define INIT_EFR_DATA { 0, false, false, false, false, false, false, false, false, false, true, NULL, "", "" } #define IDMSG_SWITCHTOFIND 300 #define IDMSG_SWITCHTOREPLACE 301