@markup-carve/carve-lsp 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +55 -0
  2. package/dist/analyze.d.ts +17 -1
  3. package/dist/analyze.js +57 -1
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/analyze.test.js +95 -0
  6. package/dist/analyze.test.js.map +1 -1
  7. package/dist/definition.js +26 -2
  8. package/dist/definition.js.map +1 -1
  9. package/dist/definition.test.js +8 -0
  10. package/dist/definition.test.js.map +1 -1
  11. package/dist/folding.js +4 -4
  12. package/dist/folding.js.map +1 -1
  13. package/dist/hover.js +33 -16
  14. package/dist/hover.js.map +1 -1
  15. package/dist/include-directive.d.ts +61 -0
  16. package/dist/include-directive.js +158 -0
  17. package/dist/include-directive.js.map +1 -0
  18. package/dist/include-directive.test.d.ts +1 -0
  19. package/dist/include-directive.test.js +83 -0
  20. package/dist/include-directive.test.js.map +1 -0
  21. package/dist/include-path.d.ts +63 -0
  22. package/dist/include-path.js +135 -0
  23. package/dist/include-path.js.map +1 -0
  24. package/dist/include-path.test.d.ts +1 -0
  25. package/dist/include-path.test.js +189 -0
  26. package/dist/include-path.test.js.map +1 -0
  27. package/dist/include-security-conformance.test.d.ts +1 -0
  28. package/dist/include-security-conformance.test.js +100 -0
  29. package/dist/include-security-conformance.test.js.map +1 -0
  30. package/dist/include-settings.d.ts +50 -0
  31. package/dist/include-settings.js +135 -0
  32. package/dist/include-settings.js.map +1 -0
  33. package/dist/include-settings.test.d.ts +1 -0
  34. package/dist/include-settings.test.js +191 -0
  35. package/dist/include-settings.test.js.map +1 -0
  36. package/dist/includes.d.ts +78 -0
  37. package/dist/includes.js +158 -0
  38. package/dist/includes.js.map +1 -0
  39. package/dist/includes.test.d.ts +1 -0
  40. package/dist/includes.test.js +202 -0
  41. package/dist/includes.test.js.map +1 -0
  42. package/dist/inline-text.d.ts +24 -0
  43. package/dist/inline-text.js +34 -0
  44. package/dist/inline-text.js.map +1 -0
  45. package/dist/inline-text.test.d.ts +1 -0
  46. package/dist/inline-text.test.js +32 -0
  47. package/dist/inline-text.test.js.map +1 -0
  48. package/dist/position-encoding.test.d.ts +1 -0
  49. package/dist/position-encoding.test.js +143 -0
  50. package/dist/position-encoding.test.js.map +1 -0
  51. package/dist/position.d.ts +82 -0
  52. package/dist/position.js +137 -0
  53. package/dist/position.js.map +1 -0
  54. package/dist/position.test.d.ts +1 -0
  55. package/dist/position.test.js +61 -0
  56. package/dist/position.test.js.map +1 -0
  57. package/dist/references.js +7 -0
  58. package/dist/references.js.map +1 -1
  59. package/dist/semantic.d.ts +14 -0
  60. package/dist/semantic.js +113 -27
  61. package/dist/semantic.js.map +1 -1
  62. package/dist/semantic.test.d.ts +1 -0
  63. package/dist/semantic.test.js +93 -0
  64. package/dist/semantic.test.js.map +1 -0
  65. package/dist/server.js +50 -23
  66. package/dist/server.js.map +1 -1
  67. package/package.json +2 -2
@@ -0,0 +1,137 @@
1
+ import { parse } from '@markup-carve/carve';
2
+ /**
3
+ * Converts between the units Carve positions and LSP positions count.
4
+ *
5
+ * A Carve AST position counts UNICODE CODEPOINTS (spec PART 12 §4, chosen so
6
+ * an index always lands on a character boundary). An LSP position counts
7
+ * UTF-16 code units unless the client and server negotiate `positionEncoding`,
8
+ * which this server does not do, so UTF-16 is what every client here expects.
9
+ *
10
+ * The two units agree on the entire BMP and diverge on every astral character:
11
+ * one emoji earlier in the line shifts every LSP column after it by one. So a
12
+ * position read off the AST cannot be handed to a client, nor a position from
13
+ * a client compared against the AST, without passing through here.
14
+ */
15
+ /**
16
+ * A 1-based codepoint column, as an AST position reports it, to the 0-based
17
+ * UTF-16 character an LSP range carries.
18
+ */
19
+ export function codepointColumnToUtf16(lineText, column) {
20
+ if (column <= 1)
21
+ return 0;
22
+ let codepointColumn = 1;
23
+ let index = 0;
24
+ while (index < lineText.length && codepointColumn < column) {
25
+ index += (lineText.codePointAt(index) ?? 0) > 0xffff ? 2 : 1;
26
+ codepointColumn++;
27
+ }
28
+ // A column past the line's last character is normal: end columns are
29
+ // exclusive, so a construct ending the line reports length + 1. Anything
30
+ // further past the end keeps its distance rather than collapsing onto it,
31
+ // so a range can never come back inverted.
32
+ return index + Math.max(0, column - codepointColumn);
33
+ }
34
+ /**
35
+ * The 0-based UTF-16 character an LSP request carries, to the 1-based codepoint
36
+ * column an AST position can be compared against.
37
+ *
38
+ * A character index pointing into the middle of a surrogate pair resolves to
39
+ * the column after that pair. There is no column for half a character, and a
40
+ * client only produces one by placing a cursor inside one.
41
+ */
42
+ export function utf16CharToCodepointColumn(lineText, character) {
43
+ let codepointColumn = 1;
44
+ let index = 0;
45
+ while (index < lineText.length && index < character) {
46
+ index += (lineText.codePointAt(index) ?? 0) > 0xffff ? 2 : 1;
47
+ codepointColumn++;
48
+ }
49
+ return codepointColumn + Math.max(0, character - index);
50
+ }
51
+ /**
52
+ * The document's lines, line endings normalized, indexed 0-based - the form
53
+ * both conversions above need to see a line's characters.
54
+ */
55
+ export function sourceLines(source) {
56
+ return source.replace(/\r\n?/g, '\n').split('\n');
57
+ }
58
+ /**
59
+ * Which unit the installed parser's columns are in.
60
+ *
61
+ * This is not a constant, because the dependency range spans both answers.
62
+ * Positions arrived in @markup-carve/carve counting UTF-16 code units, which
63
+ * is what a JavaScript string is indexed by; carve-js#447 then made them count
64
+ * codepoints, to conform to the spec. Both satisfy `^0.1.2`, so a build of this
65
+ * server installed today and the same build installed after that release are
66
+ * handed different numbers for the same document, and nothing in the package
67
+ * metadata distinguishes them.
68
+ *
69
+ * Rather than guess, ask: one astral character is two UTF-16 code units and one
70
+ * codepoint, so a two-character probe reports a different end column under each
71
+ * unit. The answer is cached - it cannot change within a process.
72
+ */
73
+ // Exported so the guard test drives THE PROBE rather than a copy of it. A test
74
+ // that retypes the probe string agrees with this function for every value the
75
+ // engine can return, including `undefined`, and goes on agreeing after the
76
+ // probe here is changed to something that cannot tell the two units apart -
77
+ // which is the whole failure it is supposed to report.
78
+ export const COLUMN_PROBE = '\u{1F600}x';
79
+ export const CODEPOINT_PROBE_END_COLUMN = 3;
80
+ let cachedUnit;
81
+ /**
82
+ * The raw reading the classification is made from: the probe's end column as
83
+ * the installed parser reports it, or `undefined` when the parser cannot answer
84
+ * at all.
85
+ *
86
+ * Split out and exported so the guard test can consume THE READING the
87
+ * classifier uses, instead of computing its own copy of it. A test that reparses
88
+ * the probe itself agrees with `engineColumnUnit` for every value including
89
+ * `undefined`, so it cannot see the difference between a measurement and the
90
+ * fallback below - which is the only thing worth checking here.
91
+ */
92
+ export function probeEndColumn() {
93
+ try {
94
+ return parse(COLUMN_PROBE).children[0]?.pos?.endColumn;
95
+ }
96
+ catch {
97
+ return undefined;
98
+ }
99
+ }
100
+ export function engineColumnUnit() {
101
+ if (cachedUnit)
102
+ return cachedUnit;
103
+ // A parser that cannot answer gets the reading that needs no conversion,
104
+ // which is what every released version has done so far. That default is right
105
+ // for a server that must not crash on an unexpected engine, and wrong to
106
+ // accept silently in CI, so a test asserts the probe was actually answered.
107
+ const endColumn = probeEndColumn();
108
+ cachedUnit = endColumn === CODEPOINT_PROBE_END_COLUMN ? 'codepoint' : 'utf16';
109
+ return cachedUnit;
110
+ }
111
+ /**
112
+ * Test seam: pin the unit, or pass `undefined` to probe again.
113
+ *
114
+ * The installed parser can only demonstrate one of the two readings, and it is
115
+ * the one whose conversion is the identity - so without this the codepoint
116
+ * branch would ship untested and unrun until a dependency bump made it live.
117
+ */
118
+ export function setEngineColumnUnit(unit) {
119
+ cachedUnit = unit;
120
+ }
121
+ /**
122
+ * A 1-based column as the installed parser reports it, to the 0-based UTF-16
123
+ * character an LSP range carries. Use this rather than the raw conversion:
124
+ * under a UTF-16 parser the columns already are LSP characters, and converting
125
+ * them would introduce the very shift it is meant to remove.
126
+ */
127
+ export function astColumnToCharacter(lineText, column) {
128
+ return engineColumnUnit() === 'codepoint' ? codepointColumnToUtf16(lineText, column) : column - 1;
129
+ }
130
+ /**
131
+ * The 0-based UTF-16 character an LSP request carries, to the 1-based column
132
+ * the installed parser's positions can be compared against.
133
+ */
134
+ export function characterToAstColumn(lineText, character) {
135
+ return engineColumnUnit() === 'codepoint' ? utf16CharToCodepointColumn(lineText, character) : character + 1;
136
+ }
137
+ //# sourceMappingURL=position.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../src/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB,EAAE,MAAc;IACrE,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IAEzB,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,eAAe,GAAG,MAAM,EAAE,CAAC;QAC3D,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,eAAe,EAAE,CAAA;IACnB,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,0EAA0E;IAC1E,2CAA2C;IAC3C,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAA;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB,EAAE,SAAiB;IAC5E,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACpD,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,eAAe,EAAE,CAAA;IACnB,CAAC;IAED,OAAO,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,4EAA4E;AAC5E,uDAAuD;AACvD,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAA;AACxC,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAC3C,IAAI,UAA6C,CAAA;AAEjD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAA;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,yEAAyE;IACzE,8EAA8E;IAC9E,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;IAClC,UAAU,GAAG,SAAS,KAAK,0BAA0B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;IAE7E,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAuC;IACzE,UAAU,GAAG,IAAI,CAAA;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IACnE,OAAO,gBAAgB,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;AACnG,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,SAAiB;IACtE,OAAO,gBAAgB,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,0BAA0B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAA;AAC7G,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,61 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { codepointColumnToUtf16, sourceLines, utf16CharToCodepointColumn } from './position.js';
4
+ // An emoji is two UTF-16 code units and one codepoint, so every column after it
5
+ // differs between the two units. Everything below that line is BMP-only, where
6
+ // the two agree and the conversion has to stay the identity.
7
+ test('a BMP-only line converts as the identity', () => {
8
+ const line = 'a *b* c';
9
+ for (let column = 1; column <= line.length + 1; column++) {
10
+ assert.equal(codepointColumnToUtf16(line, column), column - 1);
11
+ }
12
+ for (let character = 0; character <= line.length; character++) {
13
+ assert.equal(utf16CharToCodepointColumn(line, character), character + 1);
14
+ }
15
+ });
16
+ test('an astral character shifts every column after it', () => {
17
+ // The `*` sits at codepoint column 3 and UTF-16 character 3, because the
18
+ // emoji occupies one codepoint and two code units.
19
+ const line = '\u{1F600} *b*';
20
+ assert.equal(line.indexOf('*'), 3);
21
+ assert.equal(codepointColumnToUtf16(line, 1), 0);
22
+ assert.equal(codepointColumnToUtf16(line, 2), 2);
23
+ assert.equal(codepointColumnToUtf16(line, 3), 3);
24
+ assert.equal(codepointColumnToUtf16(line, 6), 6);
25
+ assert.equal(utf16CharToCodepointColumn(line, 0), 1);
26
+ assert.equal(utf16CharToCodepointColumn(line, 2), 2);
27
+ assert.equal(utf16CharToCodepointColumn(line, 3), 3);
28
+ assert.equal(utf16CharToCodepointColumn(line, 6), 6);
29
+ });
30
+ test('the two conversions round-trip through each other', () => {
31
+ const line = 'x\u{1F600}y\u{1F1E9}\u{1F1EA}z';
32
+ for (let column = 1; column <= 7; column++) {
33
+ assert.equal(utf16CharToCodepointColumn(line, codepointColumnToUtf16(line, column)), column);
34
+ }
35
+ });
36
+ test('an exclusive end column lands on the end of the line', () => {
37
+ const line = '\u{1F600}ab';
38
+ // Three codepoints, so the exclusive end column is 4 and the UTF-16 end is
39
+ // the string's length.
40
+ assert.equal(codepointColumnToUtf16(line, 4), line.length);
41
+ assert.equal(codepointColumnToUtf16(line, 4), 4);
42
+ });
43
+ test('a column past the end keeps its distance rather than collapsing', () => {
44
+ // Ranges are built from two converted columns; clamping both to the end
45
+ // would silently produce an empty range where the parser reported a span.
46
+ const line = 'ab';
47
+ assert.equal(codepointColumnToUtf16(line, 5), 4);
48
+ assert.equal(utf16CharToCodepointColumn(line, 5), 6);
49
+ });
50
+ test('a character inside a surrogate pair resolves past it', () => {
51
+ const line = '\u{1F600}a';
52
+ assert.equal(utf16CharToCodepointColumn(line, 1), 2);
53
+ });
54
+ test('an empty line converts without moving', () => {
55
+ assert.equal(codepointColumnToUtf16('', 1), 0);
56
+ assert.equal(utf16CharToCodepointColumn('', 0), 1);
57
+ });
58
+ test('lines are split on every line ending form', () => {
59
+ assert.deepEqual(sourceLines('a\r\nb\rc\nd'), ['a', 'b', 'c', 'd']);
60
+ });
61
+ //# sourceMappingURL=position.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position.test.js","sourceRoot":"","sources":["../src/position.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { parse, resolve } from '@markup-carve/carve';
2
+ import { smartPunctuationText } from './inline-text.js';
2
3
  /**
3
4
  * Find-references for Carve constructs (same-document scope).
4
5
  *
@@ -396,6 +397,12 @@ function headingPlainText(nodes) {
396
397
  }
397
398
  else if (node.type === 'code')
398
399
  out += node.value;
400
+ // An inline literal (§27) renders as visible prose, so it must contribute
401
+ // to the heading text used for cross-reference and rename matching.
402
+ else if (node.type === 'literal_inline')
403
+ out += node.content;
404
+ else
405
+ out += smartPunctuationText(node);
399
406
  }
400
407
  return out.trim();
401
408
  }
@@ -1 +1 @@
1
- {"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../src/references.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,18 @@ interface Token {
12
12
  }
13
13
  export declare function buildSemanticTokens(source: string): SemanticTokens;
14
14
  export declare function semanticTokens(source: string): Token[];
15
+ /**
16
+ * Scan a single line for constructs the AST path misses:
17
+ * - Reference definitions [label]: url (resolved away, never appear in children)
18
+ * - Footnote definitions [^label]: ... (same)
19
+ * - {= ... =} critic annotation (parsed as plain text by the AST)
20
+ * - $...$ and $$...$$ math (parsed as plain text by the AST)
21
+ *
22
+ * Called from astSemanticTokens after AST tokens are already collected;
23
+ * withoutOverlaps will drop any that land on already-covered spans.
24
+ */
25
+ export declare const DEF_SEPARATOR: string;
26
+ export declare const QUOTE_PREFIX: RegExp;
27
+ export declare const LIST_MARKER_ONLY: RegExp;
28
+ export declare const LIST_PREFIX: RegExp;
15
29
  export {};
package/dist/semantic.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { SemanticTokensBuilder } from 'vscode-languageserver/node.js';
2
2
  import { parse, resolve, } from '@markup-carve/carve';
3
+ import { astColumnToCharacter } from './position.js';
3
4
  export const semanticTokenTypes = [
4
5
  'keyword',
5
6
  'string',
@@ -65,20 +66,20 @@ function collectBlock(tokens, lines, node) {
65
66
  case 'paragraph':
66
67
  collectInline(tokens, lines, node.children);
67
68
  break;
68
- case 'code-block':
69
- case 'raw-block':
69
+ case 'code_block':
70
+ case 'raw_block':
70
71
  pushPosition(tokens, lines, node.pos, 'string');
71
72
  break;
72
73
  case 'comment':
73
74
  pushPosition(tokens, lines, node.pos, 'comment');
74
75
  break;
75
- case 'blockquote':
76
+ case 'block_quote':
76
77
  pushLinePrefix(tokens, lines, node.pos, /^\s*>+/, 'operator');
77
78
  for (const child of node.children)
78
79
  collectBlock(tokens, lines, child);
79
80
  break;
80
81
  case 'list':
81
- pushLinePrefix(tokens, lines, node.pos, /^\s*(?:[-+*]|\(?[0-9A-Za-z]+[.)])/, 'operator');
82
+ pushLinePrefix(tokens, lines, node.pos, LIST_MARKER_ONLY, 'operator');
82
83
  for (const item of node.items) {
83
84
  for (const child of item.children)
84
85
  collectBlock(tokens, lines, child);
@@ -96,7 +97,7 @@ function collectBlock(tokens, lines, node) {
96
97
  for (const child of node.children)
97
98
  collectBlock(tokens, lines, child);
98
99
  break;
99
- case 'definition-list':
100
+ case 'definition_list':
100
101
  for (const item of node.items) {
101
102
  for (const term of item.terms)
102
103
  collectInline(tokens, lines, term);
@@ -122,10 +123,10 @@ function collectBlock(tokens, lines, node) {
122
123
  case 'image':
123
124
  pushPosition(tokens, lines, node.pos, 'string');
124
125
  break;
125
- case 'thematic-break':
126
+ case 'thematic_break':
126
127
  pushPosition(tokens, lines, node.pos, 'operator');
127
128
  break;
128
- case 'abbreviation-def':
129
+ case 'abbreviation_def':
129
130
  pushPosition(tokens, lines, node.pos, 'property');
130
131
  break;
131
132
  }
@@ -138,39 +139,73 @@ function collectFigureTarget(tokens, lines, node) {
138
139
  }
139
140
  function collectInline(tokens, lines, nodes) {
140
141
  for (const node of nodes) {
142
+ // carve-js renamed this AST type from `critic-comment` to `critic_comment`,
143
+ // completing the kebab-to-snake vocabulary convergence (carve#401). The
144
+ // rename is not published yet and this package pins `^0.1.2`, whose types
145
+ // only know the hyphenated name - so the new spelling cannot be a `case`
146
+ // arm without a compile error, and the old one cannot simply be replaced
147
+ // without breaking against the version actually installed.
148
+ //
149
+ // Handling it here accepts both, so neither publish order produces a silent
150
+ // break - and the break really would be silent: without this the node falls
151
+ // through to the generic brace handling and comes out as a `keyword` token,
152
+ // a mis-colored comment rather than a crash.
153
+ //
154
+ // Drop this once the pin is raised past the release carrying the rename.
155
+ // That cleanup is self-enforcing: at that point the hyphenated `case` arm
156
+ // below stops compiling, because the type union no longer contains it.
157
+ // carve-js split `footnote` into `footnote_ref` (`[^a]`) and
158
+ // `inline_footnote` (`^[…]`), because one identifier named both of those
159
+ // AND the block definition type (carve#405). Same situation as the
160
+ // `critic_comment` rename below: the pinned `^0.1.2` still emits the old
161
+ // name, and the new ones cannot be `case` arms until the pin moves, so all
162
+ // three are accepted and either release order is safe.
163
+ //
164
+ // Without this the split node falls through to the default and loses its
165
+ // token entirely - a footnote marker stops being highlighted, silently.
166
+ if (node.type === 'footnote_ref' || node.type === 'inline_footnote') {
167
+ pushPosition(tokens, lines, node.pos, 'variable', ['readonly']);
168
+ continue;
169
+ }
170
+ if (node.type === 'critic_comment') {
171
+ pushPosition(tokens, lines, node.pos, 'comment');
172
+ continue;
173
+ }
141
174
  switch (node.type) {
142
175
  case 'text':
143
- case 'soft-break':
144
- case 'hard-break':
176
+ case 'soft_break':
177
+ case 'hard_break':
145
178
  break;
146
179
  case 'code':
147
180
  case 'math':
148
- case 'raw-inline':
181
+ case 'literal_inline':
182
+ case 'raw_inline':
149
183
  case 'link':
150
184
  case 'image':
151
185
  case 'autolink':
152
- case 'crossref':
186
+ case 'heading_ref':
153
187
  pushPosition(tokens, lines, node.pos, 'string');
154
188
  break;
155
189
  case 'mention':
156
190
  case 'tag':
157
191
  case 'symbol':
158
- case 'footnote':
192
+ case 'footnote_ref':
193
+ case 'inline_footnote':
159
194
  case 'abbreviation':
160
195
  pushPosition(tokens, lines, node.pos, 'variable', ['readonly']);
161
196
  break;
162
197
  case 'span':
163
- case 'extension':
198
+ case 'inline_extension':
164
199
  pushPosition(tokens, lines, node.pos, 'property');
165
200
  break;
166
- case 'critic-insert':
201
+ case 'insert':
167
202
  pushPosition(tokens, lines, node.pos, 'type');
168
203
  break;
169
- case 'critic-delete':
170
- case 'critic-comment':
204
+ case 'delete':
205
+ case 'critic_comment':
171
206
  pushPosition(tokens, lines, node.pos, 'comment');
172
207
  break;
173
- case 'critic-substitute':
208
+ case 'substitution':
174
209
  pushPosition(tokens, lines, node.pos, 'keyword');
175
210
  break;
176
211
  case 'comment':
@@ -200,9 +235,13 @@ function pushPosition(tokens, lines, pos, type, modifiers = []) {
200
235
  }
201
236
  for (let line = pos.startLine; line <= pos.endLine; line++) {
202
237
  const text = lines[line - 1] ?? '';
203
- const startColumn = line === pos.startLine ? pos.startColumn : 1;
204
- const endColumn = line === pos.endLine ? pos.endColumn : text.length + 1;
205
- push(tokens, line - 1, startColumn - 1, Math.max(0, endColumn - startColumn), type, modifiers);
238
+ // The node's columns count codepoints; a token's character and length count
239
+ // UTF-16 code units, so both ends convert against the line they sit on. A
240
+ // line the node merely passes through is covered from its start to its end,
241
+ // which is already a UTF-16 length.
242
+ const start = line === pos.startLine ? astColumnToCharacter(text, pos.startColumn) : 0;
243
+ const end = line === pos.endLine ? astColumnToCharacter(text, pos.endColumn) : text.length;
244
+ push(tokens, line - 1, start, Math.max(0, end - start), type, modifiers);
206
245
  }
207
246
  }
208
247
  function pushLinePrefix(tokens, lines, pos, pattern, type) {
@@ -235,9 +274,56 @@ function pushHeadingTitle(tokens, lines, pos) {
235
274
  * Called from astSemanticTokens after AST tokens are already collected;
236
275
  * withoutOverlaps will drop any that land on already-covered spans.
237
276
  */
277
+ /*
278
+ * MARKER SEPARATORS ARE A LITERAL SPACE.
279
+ *
280
+ * Exported so the rule can be asserted directly. Most of it is NOT observable
281
+ * through `semanticTokens`: that prefers the AST path, so what a marker line
282
+ * becomes is decided by the pinned engine rather than by these patterns, and
283
+ * the pinned engine is old enough to still make `><TAB>q` a blockquote
284
+ * (carve-lsp#37). Testing through it would measure the dependency.
285
+ *
286
+ * `resources/grammar.ebnf` keeps two terminals apart on purpose - `whitespace`
287
+ * is `' ' | '\t'`, `space` is `' '` - and every marker below takes `space`.
288
+ * Separators are literal; indentation is columns, and a separator is not
289
+ * indentation (carve#692, carve#698).
290
+ *
291
+ * These were spelled `\s` in five places across two functions, so the editor
292
+ * colored a checkbox, a quote marker and a reference label on lines every
293
+ * engine renders as ordinary paragraph text (carve-lsp#38). Named once here
294
+ * because the same rule living in five regexes is why the earlier pass over
295
+ * these patterns fixed only the ones a report happened to name.
296
+ *
297
+ * How much whitespace each admits AFTER the required space is measured against
298
+ * the engine, not assumed - they differ:
299
+ *
300
+ * `[a]: <TAB>/u` defines -> further whitespace is content's problem
301
+ * `- [ ] <TAB>a` NOT a task -> the run is spaces, and content follows
302
+ * `> q` and `> <TAB>q` -> both quote
303
+ */
304
+ // `reference_definition = '[', reference_label, ']', ':', space, ...` and the
305
+ // footnote form. The space is REQUIRED - the old `\s*` also matched none, so
306
+ // `[a]:/u` was colored as a definition too.
307
+ export const DEF_SEPARATOR = String.raw `\]: [ \t]*`;
308
+ // `blockquote_line = '>', (newline | (space, inline_content, newline))`. A bare
309
+ // `>` is a blockquote line, which is why the space is optional only at
310
+ // end-of-line.
311
+ export const QUOTE_PREFIX = /^([ \t]*>+)(?: |$)/;
312
+ // `unordered_item = bullet_marker, [item_attributes], space, [task_marker], ...`
313
+ // with `bullet_marker = '-' | '*'` - `+` is the list CONTINUATION marker, not a
314
+ // bullet, so a `+ ` line is paragraph text.
315
+ //
316
+ // `task_marker = '[', task_state, ']', space`, and `task_state` is any of
317
+ // ` x X - _ > ?`; the old class admitted only ` xX`, so four of the seven
318
+ // states were not colored at all. The lookahead is the measured behavior: the
319
+ // separator run is spaces, and what follows has to be content.
320
+ // The marker alone, for the AST path, which already knows the line opens a
321
+ // list and only needs the marker's width. Same bullet class: `+` is not one.
322
+ export const LIST_MARKER_ONLY = /^[ \t]*(?:[-*]|\(?[0-9A-Za-z]+[.)])/;
323
+ export const LIST_PREFIX = /^([ \t]*)([-*]|\(?[0-9]+[.)]|\(?[A-Za-z][.)]) +(\[[ xX\-_>?]\] +(?=\S))?/;
238
324
  function scanAstGaps(tokens, line, text) {
239
325
  // footnote definition: [^label]: content — must be checked before reference def
240
- const fnDef = /^(\[\^)([^\]\n]+)(\]:\s*)(.*)/.exec(text);
326
+ const fnDef = new RegExp(String.raw `^(\[\^)([^\]\n]+)(` + DEF_SEPARATOR + String.raw `)(.*)`).exec(text);
241
327
  if (fnDef) {
242
328
  push(tokens, line, fnDef.index, 2, 'operator');
243
329
  push(tokens, line, fnDef.index + 2, fnDef[2].length, 'type');
@@ -245,7 +331,7 @@ function scanAstGaps(tokens, line, text) {
245
331
  return;
246
332
  }
247
333
  // reference definition: [label]: url
248
- const refDef = /^(\[)([^\]\n]+)(\]:\s*)(\S+)/.exec(text);
334
+ const refDef = new RegExp(String.raw `^(\[)([^\]\n]+)(` + DEF_SEPARATOR + String.raw `)(\S+)`).exec(text);
249
335
  if (refDef) {
250
336
  push(tokens, line, refDef.index, 1, 'operator');
251
337
  push(tokens, line, refDef.index + 1, refDef[2].length, 'type');
@@ -325,17 +411,17 @@ function lexicalSemanticTokens(source) {
325
411
  if (div[3])
326
412
  push(tokens, line, div[0].lastIndexOf(div[3]), div[3].length, 'type');
327
413
  }
328
- const list = /^(\s*)([-+*]|\(?[0-9]+[.)]|\(?[A-Za-z][.)])\s+(\[[ xX]\]\s+)?/.exec(scanText);
414
+ const list = LIST_PREFIX.exec(scanText);
329
415
  if (list) {
330
416
  push(tokens, line, list[1].length, list[2].length, 'operator');
331
417
  if (list[3])
332
418
  push(tokens, line, list[1].length + list[2].length + 1, list[3].trimEnd().length, 'keyword');
333
419
  }
334
- const quote = /^(\s*>+)\s?/.exec(scanText);
420
+ const quote = QUOTE_PREFIX.exec(scanText);
335
421
  if (quote)
336
422
  push(tokens, line, quote[1].search(/>/), quote[1].trimStart().length, 'operator');
337
423
  // footnote definition: [^label]: content — must be checked before reference def
338
- const fnDef = /^(\[\^)([^\]\n]+)(\]:\s*)(.*)/.exec(scanText);
424
+ const fnDef = new RegExp(String.raw `^(\[\^)([^\]\n]+)(` + DEF_SEPARATOR + String.raw `)(.*)`).exec(scanText);
339
425
  if (fnDef) {
340
426
  push(tokens, line, fnDef.index, 2, 'operator');
341
427
  push(tokens, line, fnDef.index + 2, fnDef[2].length, 'type');
@@ -343,7 +429,7 @@ function lexicalSemanticTokens(source) {
343
429
  continue;
344
430
  }
345
431
  // reference definition: [label]: url
346
- const refDef = /^(\[)([^\]\n]+)(\]:\s*)(\S+)/.exec(scanText);
432
+ const refDef = new RegExp(String.raw `^(\[)([^\]\n]+)(` + DEF_SEPARATOR + String.raw `)(\S+)`).exec(scanText);
347
433
  if (refDef) {
348
434
  push(tokens, line, refDef.index, 1, 'operator');
349
435
  push(tokens, line, refDef.index + 1, refDef[2].length, 'type');
@@ -352,7 +438,7 @@ function lexicalSemanticTokens(source) {
352
438
  continue;
353
439
  }
354
440
  // abbreviation definition: *[ABBR]: expansion
355
- const abbrDef = /^(\*\[)([^\]\n]+)(\]:\s*)(.*)/.exec(scanText);
441
+ const abbrDef = new RegExp(String.raw `^(\*\[)([^\]\n]+)(` + DEF_SEPARATOR + String.raw `)(.*)`).exec(scanText);
356
442
  if (abbrDef) {
357
443
  push(tokens, line, abbrDef.index, 2, 'operator');
358
444
  push(tokens, line, abbrDef.index + 2, abbrDef[2].length, 'property');