ui: show annotation in code snippets for TokenLocations that wrap around the snippet
bug id = #12
This commit is contained in:
@@ -36,7 +36,7 @@ const std::string& QtCodeFile::getFileName() const
|
||||
}
|
||||
|
||||
void QtCodeFile::addCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
const std::string& getFileName() const;
|
||||
|
||||
void addCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds
|
||||
|
||||
@@ -29,7 +29,7 @@ QtCodeFileList::~QtCodeFileList()
|
||||
}
|
||||
|
||||
void QtCodeFileList::addCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
virtual ~QtCodeFileList();
|
||||
|
||||
void addCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds
|
||||
|
||||
@@ -35,7 +35,7 @@ void QtCodeSnippet::LineNumberArea::paintEvent(QPaintEvent *event)
|
||||
|
||||
|
||||
QtCodeSnippet::QtCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds,
|
||||
@@ -133,7 +133,7 @@ void QtCodeSnippet::lineNumberAreaPaintEvent(QPaintEvent *event)
|
||||
int QtCodeSnippet::lineNumberDigits() const
|
||||
{
|
||||
int digits = 1;
|
||||
int max = qMax(1, m_startLineNumber + blockCount());
|
||||
int max = qMax(1, int(m_startLineNumber) + blockCount());
|
||||
|
||||
while (max >= 10)
|
||||
{
|
||||
@@ -272,7 +272,7 @@ void QtCodeSnippet::createAnnotations(const TokenLocationFile& locationFile)
|
||||
}
|
||||
|
||||
Annotation annotation;
|
||||
if (location->isStartTokenLocation())
|
||||
if (location->isStartTokenLocation() && location->getLineNumber() >= m_startLineNumber)
|
||||
{
|
||||
annotation.start = toTextEditPosition(location->getLineNumber(), location->getColumnNumber() - 1);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
};
|
||||
|
||||
QtCodeSnippet(
|
||||
int startLineNumber,
|
||||
uint startLineNumber,
|
||||
const std::string& code,
|
||||
const TokenLocationFile& locationFile,
|
||||
const std::vector<Id>& activeTokenIds,
|
||||
@@ -90,7 +90,7 @@ private:
|
||||
QPushButton* m_maximizeButton;
|
||||
bool m_showMaximizeButton;
|
||||
|
||||
const int m_startLineNumber;
|
||||
const uint m_startLineNumber;
|
||||
const std::string m_filePath;
|
||||
std::vector<Id> m_activeTokenIds;
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ public:
|
||||
{
|
||||
CodeSnippetParams();
|
||||
|
||||
int startLineNumber;
|
||||
int endLineNumber;
|
||||
uint startLineNumber;
|
||||
uint endLineNumber;
|
||||
uint lineCount;
|
||||
|
||||
std::string code;
|
||||
|
||||
@@ -501,7 +501,9 @@ TokenLocationFile Storage::getTokenLocationsForLinesInFile(
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (uint i = firstLineNumber; i <= lastLineNumber; i++)
|
||||
uint endLineNumber = locationFile->getTokenLocationLines().rbegin()->first;
|
||||
|
||||
for (uint i = firstLineNumber; i <= endLineNumber; i++)
|
||||
{
|
||||
TokenLocationLine* locationLine = locationFile->findTokenLocationLineByNumber(i);
|
||||
if (!locationLine)
|
||||
@@ -509,12 +511,29 @@ TokenLocationFile Storage::getTokenLocationsForLinesInFile(
|
||||
continue;
|
||||
}
|
||||
|
||||
locationLine->forEachTokenLocation(
|
||||
[&](TokenLocation* tokenLocation) -> void
|
||||
{
|
||||
ret.addTokenLocationAsPlainCopy(tokenLocation);
|
||||
}
|
||||
);
|
||||
if (locationLine->getLineNumber() <= lastLineNumber)
|
||||
{
|
||||
locationLine->forEachTokenLocation(
|
||||
[&](TokenLocation* tokenLocation) -> void
|
||||
{
|
||||
ret.addTokenLocationAsPlainCopy(tokenLocation);
|
||||
}
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Save start locations of TokenLocations that span accross the line range.
|
||||
locationLine->forEachTokenLocation(
|
||||
[&](TokenLocation* tokenLocation) -> void
|
||||
{
|
||||
if (tokenLocation->isEndTokenLocation() &&
|
||||
tokenLocation->getStartTokenLocation()->getLineNumber() < firstLineNumber)
|
||||
{
|
||||
ret.addTokenLocationAsPlainCopy(tokenLocation->getStartTokenLocation());
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user