Files
whetstone_DSL/editor/src/SyntaxHighlighterOrg.h
2026-02-09 21:09:24 -07:00

25 lines
1.1 KiB
C++

#pragma once
// SyntaxHighlighterOrg.h helpers for SyntaxHighlighter.
static void walkOrgSimple(const std::string& source,
std::vector<HighlightSpan>& spans) {
size_t start = 0;
while (start < source.size()) {
size_t end = source.find('\n', start);
if (end == std::string::npos) end = source.size();
std::string line = source.substr(start, end - start);
std::string trimmed = line;
while (!trimmed.empty() && (trimmed.back() == '\r' || trimmed.back() == '\n')) {
trimmed.pop_back();
}
if (!trimmed.empty() && trimmed[0] == '*') {
spans.push_back({(uint32_t)start, (uint32_t)end, TokenCategory::Keyword});
} else if (trimmed.rfind("#+begin_src", 0) == 0 ||
trimmed.rfind("#+end_src", 0) == 0 ||
trimmed.rfind("#+", 0) == 0) {
spans.push_back({(uint32_t)start, (uint32_t)end, TokenCategory::Comment});
}
start = end + 1;
}
}