+ enh: CallTip in case of possible "Zero-Length Match" on regular expression search

This commit is contained in:
Rainer Kottenhoff 2018-09-03 15:13:59 +02:00
parent 8fa1d8a955
commit 842a889ab3
17 changed files with 55 additions and 19 deletions

View File

@ -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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -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;
}
//=============================================================================
//

View File

@ -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 "()[]{}"

View File

@ -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()

View File

@ -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);

View File

@ -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;
}

View File

@ -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;
// --------------------------------------------------------------------------