Allow user to skip *.* when adding only excluding Filters for Find/Replace In Files

Close #8169, close #8255
This commit is contained in:
Scott Sumner 2020-05-11 13:23:30 -04:00 committed by Don HO
parent 920fc5c3d3
commit 9f29015a71
No known key found for this signature in database
GPG Key ID: 6C429F1D8D84F46E
3 changed files with 24 additions and 8 deletions

View File

@ -1023,6 +1023,20 @@ bool matchInList(const TCHAR *fileName, const std::vector<generic_string> & patt
return is_matched; return is_matched;
} }
bool allPatternsAreExclusion(const std::vector<generic_string> patterns)
{
bool oneInclusionPatternFound = false;
for (size_t i = 0, len = patterns.size(); i < len; ++i)
{
if (patterns[i][0] != '!')
{
oneInclusionPatternFound = true;
break;
}
}
return not oneInclusionPatternFound;
}
generic_string GetLastErrorAsString(DWORD errorCode) generic_string GetLastErrorAsString(DWORD errorCode)
{ {
generic_string errorMsg(_T("")); generic_string errorMsg(_T(""));

View File

@ -92,6 +92,7 @@ std::string getFileContent(const TCHAR *file2read);
generic_string relativeFilePathToFullFilePath(const TCHAR *relativeFilePath); generic_string relativeFilePathToFullFilePath(const TCHAR *relativeFilePath);
void writeFileContent(const TCHAR *file2write, const char *content2write); void writeFileContent(const TCHAR *file2write, const char *content2write);
bool matchInList(const TCHAR *fileName, const std::vector<generic_string> & patterns); bool matchInList(const TCHAR *fileName, const std::vector<generic_string> & patterns);
bool allPatternsAreExclusion(const std::vector<generic_string> patterns);
class WcharMbcsConvertor final class WcharMbcsConvertor final
{ {

View File

@ -1532,6 +1532,11 @@ bool Notepad_plus::replaceInFiles()
_findReplaceDlg.setFindInFilesDirFilter(NULL, TEXT("*.*")); _findReplaceDlg.setFindInFilesDirFilter(NULL, TEXT("*.*"));
_findReplaceDlg.getPatterns(patterns2Match); _findReplaceDlg.getPatterns(patterns2Match);
} }
else if (allPatternsAreExclusion(patterns2Match))
{
patterns2Match.insert(patterns2Match.begin(), TEXT("*.*"));
}
vector<generic_string> fileNames; vector<generic_string> fileNames;
getMatchedFileNames(dir2Search, patterns2Match, fileNames, isRecursive, isInHiddenDir); getMatchedFileNames(dir2Search, patterns2Match, fileNames, isRecursive, isInHiddenDir);
@ -1619,14 +1624,6 @@ bool Notepad_plus::findInFinderFiles(FindersInfo *findInFolderInfo)
_pEditView = &_invisibleEditView; _pEditView = &_invisibleEditView;
Document oldDoc = _invisibleEditView.execute(SCI_GETDOCPOINTER); Document oldDoc = _invisibleEditView.execute(SCI_GETDOCPOINTER);
vector<generic_string> patterns2Match;
_findReplaceDlg.getPatterns(patterns2Match);
if (patterns2Match.size() == 0)
{
_findReplaceDlg.setFindInFilesDirFilter(NULL, TEXT("*.*"));
_findReplaceDlg.getPatterns(patterns2Match);
}
vector<generic_string> fileNames = findInFolderInfo->_pSourceFinder->getResultFilePaths(); vector<generic_string> fileNames = findInFolderInfo->_pSourceFinder->getResultFilePaths();
findInFolderInfo->_pDestFinder->beginNewFilesSearch(); findInFolderInfo->_pDestFinder->beginNewFilesSearch();
@ -1711,6 +1708,10 @@ bool Notepad_plus::findInFiles()
_findReplaceDlg.setFindInFilesDirFilter(NULL, TEXT("*.*")); _findReplaceDlg.setFindInFilesDirFilter(NULL, TEXT("*.*"));
_findReplaceDlg.getPatterns(patterns2Match); _findReplaceDlg.getPatterns(patterns2Match);
} }
else if (allPatternsAreExclusion(patterns2Match))
{
patterns2Match.insert(patterns2Match.begin(), TEXT("*.*"));
}
vector<generic_string> fileNames; vector<generic_string> fileNames;
getMatchedFileNames(dir2Search, patterns2Match, fileNames, isRecursive, isInHiddenDir); getMatchedFileNames(dir2Search, patterns2Match, fileNames, isRecursive, isInHiddenDir);