Add an non-UI option to allow regEx backward search
Set "regexBackward4PowerUser" to "yes" in config.xml to eanable this option.
This commit is contained in:
parent
766a380325
commit
5e262c8122
|
@ -1025,7 +1025,8 @@ void Notepad_plus::command(int id)
|
||||||
if (_findReplaceDlg.isCreated())
|
if (_findReplaceDlg.isCreated())
|
||||||
{
|
{
|
||||||
FindOption op = _findReplaceDlg.getCurrentOptions();
|
FindOption op = _findReplaceDlg.getCurrentOptions();
|
||||||
if ((id == IDM_SEARCH_FINDPREV) && (op._searchType == FindRegex))
|
NppParameters& nppParams = NppParameters::getInstance();
|
||||||
|
if ((id == IDM_SEARCH_FINDPREV) && (op._searchType == FindRegex) && !nppParams.regexBackward4PowerUser())
|
||||||
{
|
{
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
// make this a no-action command
|
// make this a no-action command
|
||||||
|
|
|
@ -2374,6 +2374,10 @@ void NppParameters::feedFindHistoryParameters(TiXmlNode *node)
|
||||||
boolStr = (findHistoryRoot->ToElement())->Attribute(TEXT("isSearch2ButtonsMode"));
|
boolStr = (findHistoryRoot->ToElement())->Attribute(TEXT("isSearch2ButtonsMode"));
|
||||||
if (boolStr)
|
if (boolStr)
|
||||||
_findHistory._isSearch2ButtonsMode = (lstrcmp(TEXT("yes"), boolStr) == 0);
|
_findHistory._isSearch2ButtonsMode = (lstrcmp(TEXT("yes"), boolStr) == 0);
|
||||||
|
|
||||||
|
boolStr = (findHistoryRoot->ToElement())->Attribute(TEXT("regexBackward4PowerUser"));
|
||||||
|
if (boolStr)
|
||||||
|
_findHistory._regexBackward4PowerUser = (lstrcmp(TEXT("yes"), boolStr) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NppParameters::feedShortcut(TiXmlNode *node)
|
void NppParameters::feedShortcut(TiXmlNode *node)
|
||||||
|
@ -5994,6 +5998,7 @@ bool NppParameters::writeFindHistory()
|
||||||
(findHistoryRoot->ToElement())->SetAttribute(TEXT("transparency"), _findHistory._transparency);
|
(findHistoryRoot->ToElement())->SetAttribute(TEXT("transparency"), _findHistory._transparency);
|
||||||
(findHistoryRoot->ToElement())->SetAttribute(TEXT("dotMatchesNewline"), _findHistory._dotMatchesNewline?TEXT("yes"):TEXT("no"));
|
(findHistoryRoot->ToElement())->SetAttribute(TEXT("dotMatchesNewline"), _findHistory._dotMatchesNewline?TEXT("yes"):TEXT("no"));
|
||||||
(findHistoryRoot->ToElement())->SetAttribute(TEXT("isSearch2ButtonsMode"), _findHistory._isSearch2ButtonsMode?TEXT("yes"):TEXT("no"));
|
(findHistoryRoot->ToElement())->SetAttribute(TEXT("isSearch2ButtonsMode"), _findHistory._isSearch2ButtonsMode?TEXT("yes"):TEXT("no"));
|
||||||
|
(findHistoryRoot->ToElement())->SetAttribute(TEXT("regexBackward4PowerUser"), _findHistory._regexBackward4PowerUser ? TEXT("yes") : TEXT("no"));
|
||||||
|
|
||||||
TiXmlElement hist_element{TEXT("")};
|
TiXmlElement hist_element{TEXT("")};
|
||||||
|
|
||||||
|
|
|
@ -1171,6 +1171,9 @@ struct FindHistory final
|
||||||
bool _isDlgAlwaysVisible = false;
|
bool _isDlgAlwaysVisible = false;
|
||||||
bool _isFilterFollowDoc = false;
|
bool _isFilterFollowDoc = false;
|
||||||
bool _isFolderFollowDoc = false;
|
bool _isFolderFollowDoc = false;
|
||||||
|
|
||||||
|
// Allow regExpr backward search: this option is not present in UI, only to modify in config.xml
|
||||||
|
bool _regexBackward4PowerUser = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1747,6 +1750,7 @@ public:
|
||||||
void setShortcutDirty() { _isAnyShortcutModified = true; };
|
void setShortcutDirty() { _isAnyShortcutModified = true; };
|
||||||
void setAdminMode(bool isAdmin) { _isAdminMode = isAdmin; }
|
void setAdminMode(bool isAdmin) { _isAdminMode = isAdmin; }
|
||||||
bool isAdmin() const { return _isAdminMode; }
|
bool isAdmin() const { return _isAdminMode; }
|
||||||
|
bool regexBackward4PowerUser() const { return _findHistory._regexBackward4PowerUser; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool _isAnyShortcutModified = false;
|
bool _isAnyShortcutModified = false;
|
||||||
|
|
|
@ -344,8 +344,8 @@ void FindReplaceDlg::fillFindHistory()
|
||||||
|
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
::SendDlgItemMessage(_hSelf, IDC_BACKWARDDIRECTION, BM_SETCHECK, BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_BACKWARDDIRECTION, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_BACKWARDDIRECTION), (BOOL)false);
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_BACKWARDDIRECTION), nppParams.regexBackward4PowerUser() ? TRUE : FALSE);
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_FINDPREV), (BOOL)false);
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_FINDPREV), nppParams.regexBackward4PowerUser() ? TRUE : FALSE);
|
||||||
|
|
||||||
// If the search mode from history is regExp then enable the checkbox (. matches newline)
|
// If the search mode from history is regExp then enable the checkbox (. matches newline)
|
||||||
::EnableWindow(GetDlgItem(_hSelf, IDREDOTMATCHNL), true);
|
::EnableWindow(GetDlgItem(_hSelf, IDREDOTMATCHNL), true);
|
||||||
|
@ -1063,7 +1063,7 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((_options._whichDirection == DIR_UP) && (_options._searchType == FindRegex))
|
if ((_options._whichDirection == DIR_UP) && (_options._searchType == FindRegex) && !nppParamInst.regexBackward4PowerUser())
|
||||||
{
|
{
|
||||||
// this can only happen when shift-key was pressed
|
// this can only happen when shift-key was pressed
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
|
@ -1421,15 +1421,23 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||||
::SendDlgItemMessage(_hSelf, IDWHOLEWORD, BM_SETCHECK, _options._isWholeWord?BST_CHECKED:BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDWHOLEWORD, BM_SETCHECK, _options._isWholeWord?BST_CHECKED:BST_UNCHECKED, 0);
|
||||||
|
|
||||||
//regex upward search is disabled
|
//regex upward search is disabled
|
||||||
|
if (!nppParamInst.regexBackward4PowerUser())
|
||||||
|
{
|
||||||
::SendDlgItemMessage(_hSelf, IDC_BACKWARDDIRECTION, BM_SETCHECK, BST_UNCHECKED, 0);
|
::SendDlgItemMessage(_hSelf, IDC_BACKWARDDIRECTION, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
_options._whichDirection = DIR_DOWN;
|
_options._whichDirection = DIR_DOWN;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDWHOLEWORD), (BOOL)!isRegex);
|
::EnableWindow(::GetDlgItem(_hSelf, IDWHOLEWORD), (BOOL)!isRegex);
|
||||||
|
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_BACKWARDDIRECTION), (BOOL)!isRegex);
|
BOOL doEnable = TRUE;
|
||||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_FINDPREV), (BOOL)!isRegex);
|
if (isRegex && !nppParamInst.regexBackward4PowerUser())
|
||||||
|
{
|
||||||
|
doEnable = FALSE;
|
||||||
|
}
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_BACKWARDDIRECTION), doEnable);
|
||||||
|
::EnableWindow(::GetDlgItem(_hSelf, IDC_FINDPREV), doEnable);
|
||||||
|
|
||||||
return TRUE; }
|
return TRUE; }
|
||||||
|
|
||||||
|
@ -2687,7 +2695,7 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, const generic_st
|
||||||
switch (intValue)
|
switch (intValue)
|
||||||
{
|
{
|
||||||
case IDOK:
|
case IDOK:
|
||||||
if ((_env->_whichDirection == DIR_UP) && (_env->_searchType == FindRegex))
|
if ((_env->_whichDirection == DIR_UP) && (_env->_searchType == FindRegex) && !nppParamInst.regexBackward4PowerUser())
|
||||||
{
|
{
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
// this macro step could have been recorded in an earlier version before it was not allowed, or hand-edited
|
// this macro step could have been recorded in an earlier version before it was not allowed, or hand-edited
|
||||||
|
@ -2713,7 +2721,7 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, const generic_st
|
||||||
case IDC_FINDPREV:
|
case IDC_FINDPREV:
|
||||||
// IDC_FINDPREV will not be recorded into new macros recorded with 7.8.5 and later
|
// IDC_FINDPREV will not be recorded into new macros recorded with 7.8.5 and later
|
||||||
// stay playback compatible with 7.5.5 - 7.8.4 where IDC_FINDPREV was allowed but unneeded/undocumented
|
// stay playback compatible with 7.5.5 - 7.8.4 where IDC_FINDPREV was allowed but unneeded/undocumented
|
||||||
if (_env->_searchType == FindRegex)
|
if (_env->_searchType == FindRegex && !nppParamInst.regexBackward4PowerUser())
|
||||||
{
|
{
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
// this macro step could have been recorded in an earlier version before it was not allowed, or hand-edited
|
// this macro step could have been recorded in an earlier version before it was not allowed, or hand-edited
|
||||||
|
@ -2729,7 +2737,7 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, const generic_st
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IDREPLACE:
|
case IDREPLACE:
|
||||||
if ((_env->_whichDirection == DIR_UP) && (_env->_searchType == FindRegex))
|
if ((_env->_whichDirection == DIR_UP) && (_env->_searchType == FindRegex && !nppParamInst.regexBackward4PowerUser()))
|
||||||
{
|
{
|
||||||
// regex upward search is disabled
|
// regex upward search is disabled
|
||||||
// this macro step could have been recorded in an earlier version before it was disabled, or hand-edited
|
// this macro step could have been recorded in an earlier version before it was disabled, or hand-edited
|
||||||
|
|
Loading…
Reference in New Issue