示例#1
0
文件: search.cpp 项目: UIKit0/qgrep
static void printHighlightMatch(std::string& result, Regex* re, HighlightBuffer& hlbuf, const char* line, size_t lineLength, const char* preparedRange, size_t matchOffset, size_t matchLength)
{
	hlbuf.ranges.clear();
	hlbuf.ranges.push_back(HighlightRange(matchOffset, matchLength));
	highlightRegex(hlbuf.ranges, re, line, lineLength, preparedRange, matchOffset + matchLength);

	highlight(result, line, lineLength, hlbuf.ranges.empty() ? nullptr : &hlbuf.ranges[0], hlbuf.ranges.size(), kHighlightMatch);
}
示例#2
0
文件: filter.cpp 项目: Freaky/qgrep
static void processMatchHighlightRegex(Regex* re, FilterHighlightBuffer& hlbuf, const FilterEntry& entry, size_t offset, const char* buffer, FilterOutput* output)
{
    const char* data = entry.offset + buffer;

	hlbuf.ranges.clear();
	highlightRegex(hlbuf.ranges, re, data, entry.length, nullptr, offset);

	hlbuf.result.clear();
	highlight(hlbuf.result, data, entry.length, hlbuf.ranges.empty() ? nullptr : &hlbuf.ranges[0], hlbuf.ranges.size(), kHighlightMatch);

	processMatch(hlbuf.result.c_str(), hlbuf.result.size(), output);
}
示例#3
0
文件: filter.cpp 项目: Freaky/qgrep
static void processMatchHighlightVisualAssist(const std::vector<VisualAssistFragment>& fragments,
	FilterHighlightBuffer& hlbuf, const FilterEntry& entry, const char* entryBuffer, const FilterEntry& nameEntry, const char* nameBuffer, FilterOutput* output)
{
	const char* data = entryBuffer + entry.offset;

	hlbuf.ranges.clear();

	for (auto& f: fragments)
		highlightRegex(hlbuf.ranges, f.re.get(), data, entry.length, nullptr, f.ispath ? 0 : entry.length - nameEntry.length);

	hlbuf.result.clear();
	highlight(hlbuf.result, data, entry.length, hlbuf.ranges.empty() ? nullptr : &hlbuf.ranges[0], hlbuf.ranges.size(), kHighlightMatch);

	processMatch(hlbuf.result.c_str(), hlbuf.result.size(), output);
}