mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-22 13:24:42 +02:00
[BUG_FIXED] Fix the class border determination problem (while open/close symbols are in the comment zone) in function list feature.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@1153 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
80a672009e
commit
6e45308b79
@ -433,7 +433,7 @@ bool FunctionParsersManager::parse(std::vector<foundInfo> & foundInfos, const As
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t FunctionZoneParser::getBodyClosePos(size_t begin, const TCHAR *bodyOpenSymbol, const TCHAR *bodyCloseSymbol, ScintillaEditView **ppEditView)
|
size_t FunctionZoneParser::getBodyClosePos(size_t begin, const TCHAR *bodyOpenSymbol, const TCHAR *bodyCloseSymbol, const std::vector< std::pair<int, int> > & commentZones, ScintillaEditView **ppEditView)
|
||||||
{
|
{
|
||||||
size_t cntOpen = 1;
|
size_t cntOpen = 1;
|
||||||
|
|
||||||
@ -461,6 +461,9 @@ size_t FunctionZoneParser::getBodyClosePos(size_t begin, const TCHAR *bodyOpenSy
|
|||||||
{
|
{
|
||||||
targetEnd = int((*ppEditView)->execute(SCI_GETTARGETEND));
|
targetEnd = int((*ppEditView)->execute(SCI_GETTARGETEND));
|
||||||
|
|
||||||
|
// Treat it only if it's NOT in the comment zone
|
||||||
|
if (!isInZones(targetStart, commentZones))
|
||||||
|
{
|
||||||
// Now we determinate the symbol (open or close)
|
// Now we determinate the symbol (open or close)
|
||||||
int tmpStart = (*ppEditView)->searchInTarget(bodyOpenSymbol, lstrlen(bodyOpenSymbol), targetStart, targetEnd);
|
int tmpStart = (*ppEditView)->searchInTarget(bodyOpenSymbol, lstrlen(bodyOpenSymbol), targetStart, targetEnd);
|
||||||
if (tmpStart != -1 && tmpStart != -2) // open symbol found
|
if (tmpStart != -1 && tmpStart != -2) // open symbol found
|
||||||
@ -472,6 +475,7 @@ size_t FunctionZoneParser::getBodyClosePos(size_t begin, const TCHAR *bodyOpenSy
|
|||||||
--cntOpen;
|
--cntOpen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else // nothing found
|
else // nothing found
|
||||||
{
|
{
|
||||||
cntOpen = 0; // get me out of here
|
cntOpen = 0; // get me out of here
|
||||||
@ -508,7 +512,7 @@ void FunctionZoneParser::classParse(vector<foundInfo> & foundInfos, vector< pair
|
|||||||
|
|
||||||
if (_openSymbole != TEXT("") && _closeSymbole != TEXT(""))
|
if (_openSymbole != TEXT("") && _closeSymbole != TEXT(""))
|
||||||
{
|
{
|
||||||
targetEnd = getBodyClosePos(targetEnd, _openSymbole.c_str(), _closeSymbole.c_str(), ppEditView);
|
targetEnd = getBodyClosePos(targetEnd, _openSymbole.c_str(), _closeSymbole.c_str(), commentZones, ppEditView);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (targetEnd > int(end)) //we found a result but outside our range, therefore do not process it
|
if (targetEnd > int(end)) //we found a result but outside our range, therefore do not process it
|
||||||
|
@ -79,7 +79,7 @@ private:
|
|||||||
generic_string _closeSymbole;
|
generic_string _closeSymbole;
|
||||||
generic_string _functionExpr;
|
generic_string _functionExpr;
|
||||||
|
|
||||||
size_t getBodyClosePos(size_t begin, const TCHAR *bodyOpenSymbol, const TCHAR *bodyCloseSymbol, ScintillaEditView **ppEditView);
|
size_t getBodyClosePos(size_t begin, const TCHAR *bodyOpenSymbol, const TCHAR *bodyCloseSymbol, const std::vector< std::pair<int, int> > & commentZones, ScintillaEditView **ppEditView);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user