aboutsummaryrefslogtreecommitdiff
path: root/plugin/src/lexical.js
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-21 10:31:09 +0000
committer_ov4 <ov4@ov4.org>2026-10-21 10:31:09 +0000
commitaf6bb061ff447f860c514b60202c3192ceec952b (patch)
tree09cf21eb75b8d7f6b1771c38765341836a2b890c /plugin/src/lexical.js
parent9939ebe7f0ec25b042c9d83ed651cde0e2ea3a30 (diff)
fix(plugin): recognize literal escapes and C string suffixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'plugin/src/lexical.js')
-rw-r--r--plugin/src/lexical.js11
1 files changed, 5 insertions, 6 deletions
diff --git a/plugin/src/lexical.js b/plugin/src/lexical.js
index ff01166..fff8091 100644
--- a/plugin/src/lexical.js
+++ b/plugin/src/lexical.js
@@ -1,7 +1,7 @@
'use strict';
// Preserve UTF-16 offsets and newlines, masking CIE quotes and // comments.
-// Unlike C++, CIE has no escapes or multiline literals.
+// Backslash escapes protect the next character; literals end at each newline.
function codeOnly(text) {
let quote = null;
let comment = false;
@@ -15,12 +15,11 @@ function codeOnly(text) {
} else if (comment) {
result.push(' ');
} else if (quote) {
- if (char === quote) quote = null;
result.push(' ');
- } else if (text.slice(i, i + 3) === "'''") {
- // The compiler accepts a quote character as a three-quote CHAR literal.
- result.push(' ', ' ', ' ');
- i += 2;
+ if (char === '\\' && i + 1 < text.length && !/[\r\n]/.test(text[i + 1])) {
+ result.push(' ');
+ i++;
+ } else if (char === quote) quote = null;
} else if (char === '"' || char === "'") {
quote = char;
result.push(' ');