From 842a889ab3e7cd35e5a61684df4471fa3b81f821 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Mon, 3 Sep 2018 15:13:59 +0200 Subject: [PATCH] + enh: CallTip in case of possible "Zero-Length Match" on regular expression search --- language/common_res.h | 1 + language/np3_af_za/strings_af_za.rc | Bin 34296 -> 34402 bytes language/np3_de_de/strings_de_de.rc | Bin 38038 -> 38142 bytes language/np3_en_gb/strings_en_gb.rc | Bin 34380 -> 34486 bytes language/np3_en_us/strings_en_us.rc | Bin 35002 -> 35100 bytes language/np3_es_es/strings_es_es.rc | Bin 35008 -> 35114 bytes language/np3_fr_fr/strings_fr_fr.rc | Bin 37684 -> 37814 bytes language/np3_ja_jp/strings_ja_jp.rc | Bin 28710 -> 28808 bytes language/np3_nl_nl/strings_nl_nl.rc | Bin 36770 -> 36868 bytes language/np3_zh_cn/strings_zh_cn.rc | Bin 28002 -> 28100 bytes np3portableapp/build_np3portableapp.cmd | 21 ++++++++------------- src/Edit.c | 23 +++++++++++++++++++++++ src/Edit.h | 1 + src/Helpers.c | 14 +++++++++++++- src/Helpers.h | 8 ++++++-- src/Notepad3.c | 4 ++-- src/TypeDefs.h | 2 +- 17 files changed, 55 insertions(+), 19 deletions(-) diff --git a/language/common_res.h b/language/common_res.h index 7628fa0f4..50628793b 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -125,6 +125,7 @@ #define IDS_MUI_TRANSL_AUTHOR 15031 #define IDS_MUI_ASSOCIATED_EXT 15032 #define IDS_MUI_EXAMPLE_TEXT 15033 +#define IDS_MUI_ZERO_LEN_MATCH 15034 #define IDR_MAINWND 16000 #define IDR_MAINWND48 16001 diff --git a/language/np3_af_za/strings_af_za.rc b/language/np3_af_za/strings_af_za.rc index f79524f897675edfe5487d4c158a2079f58fec77..a02ab17e76d9d1c1788e8748ca92cb17f34a7862 100644 GIT binary patch delta 98 zcmey-&Ge{;X@f)jP8$GGQ3x*p diff --git a/language/np3_es_es/strings_es_es.rc b/language/np3_es_es/strings_es_es.rc index 13ab6ad6b4845abfb76d2e75b5addc77ea5d131e..5c27686d53f680d76d6aa3d42a7081708a64d300 100644 GIT binary patch delta 102 zcmX>wk!jT=rVR=Slf5)0yrURg8G;!68R8jyfGj^C?aScE5W?Wh;K87P1eF+~7*ZLE r81fl(fhtoO@)*(?N*FSLDts9dfvjYPjL8StMJF#1(%2l9kfi|tMMM>A delta 22 ecmZ2AiRr*ZrVR=SlTWboOh%2b9thIED!h76zzUxq{= RE14ljxq?0BG4wH~ID6`6H>?k9`53&FN diff --git a/language/np3_ja_jp/strings_ja_jp.rc b/language/np3_ja_jp/strings_ja_jp.rc index 6b58d3d9f082745901ca91a7616ce7b5d87b0209..2c338112c7d69ebab66e86ec8f530db7e53cf44d 100644 GIT binary patch delta 87 zcmZ4XfU)BtR4w3_%S34Dk#;K$ahn_GNHn2w`w$@L*5?LM4VMhE#?k ihI|HHpo&z6Jce|J5{3+*j4wkXkd+K%Z!YlMrUn3dWfI%~ delta 18 acmeBp$hhnQ9#tl=PCx7FUaE@YdWe8&MXNYI;0kZsnv@e4rLkNR2g9n2G5GpZ5F{CmS nG2}Do0#&3kt#tl=PH-B?JrwIT(HwVZ7 diff --git a/np3portableapp/build_np3portableapp.cmd b/np3portableapp/build_np3portableapp.cmd index 1c9a06991..321b7e9fe 100644 --- a/np3portableapp/build_np3portableapp.cmd +++ b/np3portableapp/build_np3portableapp.cmd @@ -66,6 +66,7 @@ set FILEVER= call :GETFILEVER "%NP3_WIN32_DIR%\Notepad3.exe" if defined FILEVER set VERSION=%FILEVER% + ::echo.VERSION=%VERSION% ::pause ::goto :END @@ -110,16 +111,11 @@ copy /B "%NP3_X64_DIR%\ced.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\" /Y /V call :REPLACE "xxxVERSIONxxx" "%NP3_PORTAPP_INFO%_template.ini" "%VERSION%" "%NP3_PORTAPP_INFO%_tmp.ini" -:: DEVNAME need some mor PortableApps preparation, so set empty for now -set DEVNAME= - -if defined DEVNAME ( - call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INFO%_tmp.ini" "_%DEVNAME%" "%NP3_PORTAPP_INFO%.ini" - call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INSTALL%_template.ini" "_%DEVNAME%" "%NP3_PORTAPP_INSTALL%.ini" -) else ( - call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INFO%_tmp.ini" "" "%NP3_PORTAPP_INFO%.ini" - call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INSTALL%_template.ini" "" "%NP3_PORTAPP_INSTALL%.ini" -) +:: DEVNAME need some more PortableApps preparation +::~ call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INFO%_tmp.ini" "_%DEVNAME%" "%NP3_PORTAPP_INFO%.ini" +::~ call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INSTALL%_template.ini" "_%DEVNAME%" "%NP3_PORTAPP_INSTALL%.ini" +call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INFO%_tmp.ini" "" "%NP3_PORTAPP_INFO%.ini" +call :REPLACE "xxxDEVNAMExxx" "%NP3_PORTAPP_INSTALL%_template.ini" "" "%NP3_PORTAPP_INSTALL%.ini" del /F "%NP3_PORTAPP_INFO%_tmp.ini" @@ -136,8 +132,8 @@ del /F "%NP3_PORTAPP_INFO%_tmp.ini" :: - build Installer - "%PORTAPP_INSTALLER_CREATOR%" "%NP3_PORTAPP_DIR%" - - +:: rename +rename "%SCRIPT_DIR%Notepad3Portable_%VERSION%_English.paf.exe" "Notepad3Portable_%DEVNAME%_%VERSION%_English.paf.exe" :: ==================================================================================================================== goto :END @@ -181,7 +177,6 @@ for /F "tokens=2 delims==" %%a in (' goto:EOF :: -------------------------------------------------------------------------------------------------------------------- - :GETBUILD set /p nxbuild=<%NP3_BUILD_VER% set /a BUILD = %nxbuild% - 1 diff --git a/src/Edit.c b/src/Edit.c index a7378bbeb..40ae94b4d 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -5936,6 +5936,8 @@ bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo bSuppressNotFound = true; } + SciCall_CallTipCancel(); + DocPos iPos = _FindInTarget(hwnd, szFind, slen, (int)(lpefr->fuFlags), &start, &end, true, FRMOD_NORM); if ((iPos < -1) && (lpefr->fuFlags & SCFIND_REGEXP)) { @@ -5975,6 +5977,10 @@ bool EditFindNext(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo else { EditSelectEx(hwnd, start, end, -1, -1); } + + if (start == end) { + EditShowZeroLengthCallTip(hwnd, start); + } return true; } @@ -8320,6 +8326,23 @@ void EditShowZoomCallTip(HWND hwnd) } +//============================================================================= +// +// EditShowZoomCallTip() +// +static char s_chZeroLenCT[80] = { '\0' }; + +void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition) +{ + UNUSED(hwnd); + if (s_chZeroLenCT[0] == '\0') { + GetLngStringW2MB(IDS_MUI_ZERO_LEN_MATCH, s_chZeroLenCT, COUNTOF(s_chZeroLenCT)); + } + SciCall_CallTipShow(iPosition, s_chZeroLenCT); + g_CallTipType = CT_ZEROLEN_MATCH; +} + + //============================================================================= // diff --git a/src/Edit.h b/src/Edit.h index dcf65d3e6..8a43ec58d 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -170,6 +170,7 @@ void EditFoldClick(DocLn, int); void EditFoldAltArrow(FOLD_MOVE, FOLD_ACTION); void EditShowZoomCallTip(HWND hwnd); +void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition); #define NP3_BRACES_TO_MATCH "()[]{}" diff --git a/src/Helpers.c b/src/Helpers.c index 72e28dcb5..5798ca313 100644 --- a/src/Helpers.c +++ b/src/Helpers.c @@ -716,7 +716,6 @@ bool IsCmdEnabled(HWND hwnd,UINT uId) } - //============================================================================= // // LoadLngStringW() @@ -727,6 +726,19 @@ int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax) return (nLen != 0) ? nLen : LoadStringW(g_hInstance, uID, lpBuffer, nBufferMax); } +//============================================================================= +// +// LoadLngStringW2MB() +// +static WCHAR s_tmpStringBuffer[512]; + +int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax) +{ + const int nLen = LoadStringW(g_hLngResContainer, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer)); + if (nLen == 0) { LoadStringW(g_hInstance, uID, s_tmpStringBuffer, COUNTOF(s_tmpStringBuffer)); } + return WideCharToMultiByte(CP_UTF8, 0, s_tmpStringBuffer, -1, lpBuffer, nBufferMax, NULL, NULL); +} + //============================================================================= // // LoadLngStringA() diff --git a/src/Helpers.h b/src/Helpers.h index c394b2660..5d5e3461a 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -220,12 +220,16 @@ bool IsCmdEnabled(HWND, UINT); if (GetFocus() == hctrl) { SendMessage((hdlg), WM_NEXTDLGCTL, 0, false); } }; EnableWindow(hctrl, (b)); } -#define GetLngString(id,pb,cb) LoadLngStringW((id),(pb),(cb)) -#define GetLngStringA(id,pb,cb) LoadLngStringA((id),(pb),(cb)) int LoadLngStringW(UINT uID, LPWSTR lpBuffer, int nBufferMax); int LoadLngStringA(UINT uID, LPSTR lpBuffer, int nBufferMax); int FormatLngStringW(LPWSTR, int, UINT, ...); int FormatLngStringA(LPSTR, int, UINT, ...); +int LoadLngStringW2MB(UINT uID, LPSTR lpBuffer, int nBufferMax); + +#define GetLngString(id,pb,cb) LoadLngStringW((id),(pb),(cb)) +#define GetLngStringA(id,pb,cb) LoadLngStringA((id),(pb),(cb)) +#define GetLngStringW2MB(id,pb,cb) LoadLngStringW2MB((id),(pb),(cb)) + bool GetKnownFolderPath(REFKNOWNFOLDERID, LPWSTR, size_t); diff --git a/src/Notepad3.c b/src/Notepad3.c index f19332780..5d907856e 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -6304,8 +6304,8 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) case SCN_CHARADDED: { - if (g_CallTipType == CT_ZOOM) { - SciCall_CallTipCancel(); + if (g_CallTipType != CT_NONE) { + SciCall_CallTipCancel(); g_CallTipType = CT_NONE; } diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 7b2346402..de6893cac 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -120,7 +120,7 @@ typedef enum { // -------------------------------------------------------------------------- -typedef enum { CT_NONE = 0, CT_ZOOM } CALLTIPTYPE; +typedef enum { CT_NONE = 0, CT_ZOOM, CT_ZEROLEN_MATCH } CALLTIPTYPE; // --------------------------------------------------------------------------