@markup-carve/carve-lsp 0.1.2 → 0.1.4

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 (176) hide show
  1. package/README.md +61 -14
  2. package/dist/analyze.d.ts +15 -1
  3. package/dist/analyze.js +214 -16
  4. package/dist/analyze.js.map +1 -1
  5. package/dist/analyze.test.js +29 -1
  6. package/dist/analyze.test.js.map +1 -1
  7. package/dist/captions.d.ts +49 -0
  8. package/dist/captions.js +124 -0
  9. package/dist/captions.js.map +1 -0
  10. package/dist/codelens.js +12 -0
  11. package/dist/codelens.js.map +1 -1
  12. package/dist/codelens.test.js +5 -0
  13. package/dist/codelens.test.js.map +1 -1
  14. package/dist/colon-fence-kinds.test.d.ts +1 -0
  15. package/dist/colon-fence-kinds.test.js +128 -0
  16. package/dist/colon-fence-kinds.test.js.map +1 -0
  17. package/dist/colon-fences.d.ts +24 -0
  18. package/dist/colon-fences.js +174 -0
  19. package/dist/colon-fences.js.map +1 -0
  20. package/dist/colon-fences.test.d.ts +1 -0
  21. package/dist/colon-fences.test.js +23 -0
  22. package/dist/colon-fences.test.js.map +1 -0
  23. package/dist/completion.d.ts +6 -2
  24. package/dist/completion.js +84 -8
  25. package/dist/completion.js.map +1 -1
  26. package/dist/completion.test.js +7 -0
  27. package/dist/completion.test.js.map +1 -1
  28. package/dist/composite-figure-crossref.test.d.ts +1 -0
  29. package/dist/composite-figure-crossref.test.js +265 -0
  30. package/dist/composite-figure-crossref.test.js.map +1 -0
  31. package/dist/composite-figure.test.d.ts +1 -0
  32. package/dist/composite-figure.test.js +76 -0
  33. package/dist/composite-figure.test.js.map +1 -0
  34. package/dist/definition.d.ts +4 -2
  35. package/dist/definition.js +28 -5
  36. package/dist/definition.js.map +1 -1
  37. package/dist/dependencies.d.ts +15 -0
  38. package/dist/dependencies.js +59 -0
  39. package/dist/dependencies.js.map +1 -0
  40. package/dist/diagnostic-scheduler.d.ts +58 -0
  41. package/dist/diagnostic-scheduler.js +70 -0
  42. package/dist/diagnostic-scheduler.js.map +1 -0
  43. package/dist/diagnostic-scheduler.test.d.ts +1 -0
  44. package/dist/diagnostic-scheduler.test.js +75 -0
  45. package/dist/diagnostic-scheduler.test.js.map +1 -0
  46. package/dist/document-highlights.d.ts +2 -0
  47. package/dist/document-highlights.js +21 -0
  48. package/dist/document-highlights.js.map +1 -0
  49. package/dist/document-highlights.test.d.ts +1 -0
  50. package/dist/document-highlights.test.js +13 -0
  51. package/dist/document-highlights.test.js.map +1 -0
  52. package/dist/document-links.d.ts +3 -0
  53. package/dist/document-links.js +36 -0
  54. package/dist/document-links.js.map +1 -0
  55. package/dist/document-links.test.d.ts +1 -0
  56. package/dist/document-links.test.js +12 -0
  57. package/dist/document-links.test.js.map +1 -0
  58. package/dist/folding.d.ts +1 -0
  59. package/dist/folding.js +36 -1
  60. package/dist/folding.js.map +1 -1
  61. package/dist/folding.test.js +6 -1
  62. package/dist/folding.test.js.map +1 -1
  63. package/dist/format-corpus.test.d.ts +1 -0
  64. package/dist/format-corpus.test.js +16 -0
  65. package/dist/format-corpus.test.js.map +1 -0
  66. package/dist/format.d.ts +3 -0
  67. package/dist/format.js +38 -74
  68. package/dist/format.js.map +1 -1
  69. package/dist/format.test.js +27 -32
  70. package/dist/format.test.js.map +1 -1
  71. package/dist/hover.js +78 -19
  72. package/dist/hover.js.map +1 -1
  73. package/dist/include-cache.d.ts +26 -0
  74. package/dist/include-cache.js +74 -0
  75. package/dist/include-cache.js.map +1 -0
  76. package/dist/include-completion.d.ts +3 -0
  77. package/dist/include-completion.js +68 -0
  78. package/dist/include-completion.js.map +1 -0
  79. package/dist/include-completion.test.d.ts +1 -0
  80. package/dist/include-completion.test.js +15 -0
  81. package/dist/include-completion.test.js.map +1 -0
  82. package/dist/include-definition-denial.test.d.ts +1 -0
  83. package/dist/include-definition-denial.test.js +86 -0
  84. package/dist/include-definition-denial.test.js.map +1 -0
  85. package/dist/include-definition.d.ts +3 -0
  86. package/dist/include-definition.js +37 -0
  87. package/dist/include-definition.js.map +1 -0
  88. package/dist/include-features.test.d.ts +1 -0
  89. package/dist/include-features.test.js +133 -0
  90. package/dist/include-features.test.js.map +1 -0
  91. package/dist/include-path.d.ts +6 -0
  92. package/dist/include-path.js +31 -2
  93. package/dist/include-path.js.map +1 -1
  94. package/dist/include-settings.d.ts +2 -0
  95. package/dist/include-settings.js +1 -0
  96. package/dist/include-settings.js.map +1 -1
  97. package/dist/includes.d.ts +8 -0
  98. package/dist/includes.js +28 -7
  99. package/dist/includes.js.map +1 -1
  100. package/dist/inlay-hints.d.ts +3 -0
  101. package/dist/inlay-hints.js +43 -0
  102. package/dist/inlay-hints.js.map +1 -0
  103. package/dist/inlay-hints.test.d.ts +1 -0
  104. package/dist/inlay-hints.test.js +10 -0
  105. package/dist/inlay-hints.test.js.map +1 -0
  106. package/dist/lint-actions.d.ts +3 -0
  107. package/dist/lint-actions.js +90 -0
  108. package/dist/lint-actions.js.map +1 -0
  109. package/dist/lint-actions.test.d.ts +1 -0
  110. package/dist/lint-actions.test.js +31 -0
  111. package/dist/lint-actions.test.js.map +1 -0
  112. package/dist/no-git-dependencies.test.d.ts +1 -0
  113. package/dist/no-git-dependencies.test.js +243 -0
  114. package/dist/no-git-dependencies.test.js.map +1 -0
  115. package/dist/packaging.test.d.ts +1 -0
  116. package/dist/packaging.test.js +69 -0
  117. package/dist/packaging.test.js.map +1 -0
  118. package/dist/references.d.ts +2 -0
  119. package/dist/references.js +113 -21
  120. package/dist/references.js.map +1 -1
  121. package/dist/selection.d.ts +2 -0
  122. package/dist/selection.js +36 -0
  123. package/dist/selection.js.map +1 -0
  124. package/dist/selection.test.d.ts +1 -0
  125. package/dist/selection.test.js +10 -0
  126. package/dist/selection.test.js.map +1 -0
  127. package/dist/semantic.d.ts +5 -3
  128. package/dist/semantic.js +45 -4
  129. package/dist/semantic.js.map +1 -1
  130. package/dist/semantic.test.js +11 -0
  131. package/dist/semantic.test.js.map +1 -1
  132. package/dist/server-capabilities.test.d.ts +1 -0
  133. package/dist/server-capabilities.test.js +84 -0
  134. package/dist/server-capabilities.test.js.map +1 -0
  135. package/dist/server.js +353 -24
  136. package/dist/server.js.map +1 -1
  137. package/dist/settings.d.ts +11 -0
  138. package/dist/settings.js +50 -0
  139. package/dist/settings.js.map +1 -0
  140. package/dist/settings.test.d.ts +1 -0
  141. package/dist/settings.test.js +22 -0
  142. package/dist/settings.test.js.map +1 -0
  143. package/dist/spec-0-1-4-constructs.test.d.ts +1 -0
  144. package/dist/spec-0-1-4-constructs.test.js +101 -0
  145. package/dist/spec-0-1-4-constructs.test.js.map +1 -0
  146. package/dist/table-diagnostics.d.ts +3 -0
  147. package/dist/table-diagnostics.js +60 -0
  148. package/dist/table-diagnostics.js.map +1 -0
  149. package/dist/table-diagnostics.test.d.ts +1 -0
  150. package/dist/table-diagnostics.test.js +12 -0
  151. package/dist/table-diagnostics.test.js.map +1 -0
  152. package/dist/versioned-cache.d.ts +8 -0
  153. package/dist/versioned-cache.js +17 -0
  154. package/dist/versioned-cache.js.map +1 -0
  155. package/dist/versioned-cache.test.d.ts +1 -0
  156. package/dist/versioned-cache.test.js +13 -0
  157. package/dist/versioned-cache.test.js.map +1 -0
  158. package/dist/workspace-graph.d.ts +25 -0
  159. package/dist/workspace-graph.js +94 -0
  160. package/dist/workspace-graph.js.map +1 -0
  161. package/dist/workspace-graph.test.d.ts +1 -0
  162. package/dist/workspace-graph.test.js +31 -0
  163. package/dist/workspace-graph.test.js.map +1 -0
  164. package/dist/workspace-index.d.ts +40 -0
  165. package/dist/workspace-index.js +254 -0
  166. package/dist/workspace-index.js.map +1 -0
  167. package/dist/workspace-index.test.d.ts +1 -0
  168. package/dist/workspace-index.test.js +65 -0
  169. package/dist/workspace-index.test.js.map +1 -0
  170. package/dist/workspace-loader.d.ts +11 -0
  171. package/dist/workspace-loader.js +50 -0
  172. package/dist/workspace-loader.js.map +1 -0
  173. package/dist/workspace-loader.test.d.ts +1 -0
  174. package/dist/workspace-loader.test.js +19 -0
  175. package/dist/workspace-loader.test.js.map +1 -0
  176. package/package.json +4 -3
@@ -0,0 +1,69 @@
1
+ import assert from 'node:assert/strict';
2
+ import { execFileSync } from 'node:child_process';
3
+ import { mkdirSync, mkdtempSync, readFileSync, rmSync, symlinkSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import test, { after } from 'node:test';
7
+ import { fileURLToPath } from 'node:url';
8
+ /**
9
+ * What an `exports` map does is decided by Node's resolver, against an
10
+ * INSTALLED package. Reading this repository's own manifest with `readFileSync`
11
+ * and asserting a key is present answers a different question - "what does the
12
+ * file say" - and such an assertion passes just as happily with the entry
13
+ * deleted. carve-js had exactly that test and it did (carve-js#1260).
14
+ *
15
+ * So this file asks the resolver instead. A scratch directory gets the
16
+ * `node_modules` layout an install produces, this package is linked into it,
17
+ * and a real `node` reads the specifier back from that directory the way a
18
+ * consumer's CI step would.
19
+ *
20
+ * The link points at the repository root, so `tsconfig.json` and `src/` are
21
+ * present on disk under the installed name. That is what makes the
22
+ * encapsulation assertion below mean something: those paths are reachable and
23
+ * still have to be refused.
24
+ */
25
+ const root = fileURLToPath(new URL('..', import.meta.url));
26
+ const manifest = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
27
+ const consumer = mkdtempSync(join(tmpdir(), 'carve-lsp-consumer-'));
28
+ mkdirSync(join(consumer, 'node_modules', '@markup-carve'), { recursive: true });
29
+ symlinkSync(root, join(consumer, 'node_modules', '@markup-carve', 'carve-lsp'), 'dir');
30
+ after(() => rmSync(consumer, { recursive: true, force: true }));
31
+ const run = (script) => execFileSync(process.execPath, ['-e', script], {
32
+ cwd: consumer,
33
+ encoding: 'utf8',
34
+ stdio: ['ignore', 'pipe', 'pipe'],
35
+ }).trim();
36
+ // Probed with `import`, not `require`: `.` names an `import` condition and no
37
+ // `require` one, so a require probe would answer ERR_PACKAGE_PATH_NOT_EXPORTED
38
+ // for a subpath that is wide open, and the two failures would be
39
+ // indistinguishable.
40
+ const codeOf = (specifier) => run(`import(${JSON.stringify(specifier)}).then(() => console.log('RESOLVED'),` +
41
+ ` (e) => console.log(e.code ?? String(e)))`);
42
+ test('reads the installed version back through the package specifier', () => {
43
+ // The question a version-pinning CI step asks. Closed, it throws
44
+ // ERR_PACKAGE_PATH_NOT_EXPORTED, which reads as "this package is not
45
+ // installed" rather than "this subpath is closed" - so whoever hits it goes
46
+ // and audits their install before they suspect a manifest. That failure
47
+ // mode, not the missing capability, is the cost.
48
+ const version = run(`console.log(require(${JSON.stringify(`${manifest.name}/package.json`)}).version)`);
49
+ assert.equal(version, manifest.version);
50
+ });
51
+ test('reads it back under import as well as require', () => {
52
+ // Both resolvers consult the same map, but only one of them is what a given
53
+ // shell one-liner in CI happens to use.
54
+ const version = run(`import(${JSON.stringify(`${manifest.name}/package.json`)}, { with: { type: 'json' } })` +
55
+ `.then((m) => console.log(m.default.version))`);
56
+ assert.equal(version, manifest.version);
57
+ });
58
+ test('opens that one file and not the directory holding it', () => {
59
+ // The failure this guards: widening the map with a `./*` wildcard to fix the
60
+ // two above. That publishes the whole checkout as importable API - `src/`
61
+ // included - and nothing else here would notice.
62
+ assert.equal(codeOf(`${manifest.name}/tsconfig.json`), 'ERR_PACKAGE_PATH_NOT_EXPORTED');
63
+ assert.equal(codeOf(`${manifest.name}/src/analyze.ts`), 'ERR_PACKAGE_PATH_NOT_EXPORTED');
64
+ assert.equal(codeOf(`${manifest.name}/dist/analyze.js`), 'ERR_PACKAGE_PATH_NOT_EXPORTED');
65
+ });
66
+ test('still resolves the entry point the map already named', () => {
67
+ assert.equal(codeOf(manifest.name), 'RESOLVED');
68
+ });
69
+ //# sourceMappingURL=packaging.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packaging.test.js","sourceRoot":"","sources":["../src/packaging.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAG3E,CAAA;AAED,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAA;AACnE,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC/E,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,CAAA;AACtF,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAE/D,MAAM,GAAG,GAAG,CAAC,MAAc,EAAU,EAAE,CACrC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;IAC7C,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,MAAM;IAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;CAClC,CAAC,CAAC,IAAI,EAAE,CAAA;AAEX,8EAA8E;AAC9E,+EAA+E;AAC/E,iEAAiE;AACjE,qBAAqB;AACrB,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAU,EAAE,CAC3C,GAAG,CACD,UAAU,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,uCAAuC;IACxE,2CAA2C,CAC9C,CAAA;AAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC1E,iEAAiE;IACjE,qEAAqE;IACrE,4EAA4E;IAC5E,wEAAwE;IACxE,iDAAiD;IACjD,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,eAAe,CAAC,YAAY,CAAC,CAAA;IAEvG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;IACzD,4EAA4E;IAC5E,wCAAwC;IACxC,MAAM,OAAO,GAAG,GAAG,CACjB,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,IAAI,eAAe,CAAC,+BAA+B;QACtF,8CAA8C,CACjD,CAAA;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,6EAA6E;IAC7E,0EAA0E;IAC1E,iDAAiD;IACjD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,gBAAgB,CAAC,EAAE,+BAA+B,CAAC,CAAA;IACvF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,iBAAiB,CAAC,EAAE,+BAA+B,CAAC,CAAA;IACxF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,kBAAkB,CAAC,EAAE,+BAA+B,CAAC,CAAA;AAC3F,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;AACjD,CAAC,CAAC,CAAA"}
@@ -7,6 +7,8 @@ import { type Location, type Position, type ReferenceContext } from 'vscode-lang
7
7
  *
8
8
  * Supported families, mirroring definition.ts:
9
9
  * - Heading id (on `#` heading line or on a `</#id>` / `[text](#id)` usage)
10
+ * - Caption id (on a `</#id>` usage, or on a captioned host's own declaration
11
+ * line - matched LAST, so a construct on that line still wins)
10
12
  * - Footnote `[^name]` references and `[^name]:` definition
11
13
  * - Link-ref `[text][ref]` / `[ref][]` usages and `[ref]:` definition
12
14
  * - Citation `[@key]` usages and `[@key]:` definition
@@ -1,5 +1,6 @@
1
1
  import { parse, resolve } from '@markup-carve/carve';
2
2
  import { smartPunctuationText } from './inline-text.js';
3
+ import { captionTargetById, captionTargets } from './captions.js';
3
4
  /**
4
5
  * Find-references for Carve constructs (same-document scope).
5
6
  *
@@ -8,6 +9,8 @@ import { smartPunctuationText } from './inline-text.js';
8
9
  *
9
10
  * Supported families, mirroring definition.ts:
10
11
  * - Heading id (on `#` heading line or on a `</#id>` / `[text](#id)` usage)
12
+ * - Caption id (on a `</#id>` usage, or on a captioned host's own declaration
13
+ * line - matched LAST, so a construct on that line still wins)
11
14
  * - Footnote `[^name]` references and `[^name]:` definition
12
15
  * - Link-ref `[text][ref]` / `[ref][]` usages and `[ref]:` definition
13
16
  * - Citation `[@key]` usages and `[@key]:` definition
@@ -37,6 +40,12 @@ export function referencesAt(uri, source, position, context) {
37
40
  const wikilinkResult = resolveWikilinkGroup(uri, source, lines, line, position, context);
38
41
  if (wikilinkResult)
39
42
  return wikilinkResult;
43
+ // 6. A captioned host's own declaration line. LAST, because it is the only
44
+ // family matched by line rather than by a construct under the cursor - see
45
+ // resolveCaptionDeclarationGroup.
46
+ const captionResult = resolveCaptionDeclarationGroup(uri, source, lines, position, context);
47
+ if (captionResult)
48
+ return captionResult;
40
49
  return null;
41
50
  }
42
51
  // ---------------------------------------------------------------------------
@@ -47,8 +56,9 @@ function resolveHeadingGroup(uri, source, lines, line, position, context) {
47
56
  const headingMatch = /^(#{1,6})\s+/.exec(line);
48
57
  if (headingMatch) {
49
58
  const id = getHeadingId(source, position.line);
50
- if (id)
51
- return collectHeadingRefs(uri, source, lines, id, position.line, context);
59
+ if (id) {
60
+ return collectRefs(uri, source, lines, id, { line: position.line, kind: 'heading' }, context);
61
+ }
52
62
  }
53
63
  // Cursor on </#id>
54
64
  const crossrefRe = /<\/#([A-Za-z0-9_.:-]+)>/g;
@@ -58,10 +68,10 @@ function resolveHeadingGroup(uri, source, lines, line, position, context) {
58
68
  if (position.character < start || position.character >= end)
59
69
  continue;
60
70
  const id = m[1];
61
- const defLine = findHeadingLineById(source, id);
62
- if (defLine === null)
71
+ const declaration = findDeclarationById(source, id);
72
+ if (declaration === null)
63
73
  return [];
64
- return collectHeadingRefs(uri, source, lines, id, defLine, context);
74
+ return collectRefs(uri, source, lines, id, declaration, context);
65
75
  }
66
76
  // Cursor on [text](#id)
67
77
  const fragLinkRe = /\[[^\]]*\]\(#([A-Za-z0-9_.:-]+)[^)]*\)/g;
@@ -71,10 +81,64 @@ function resolveHeadingGroup(uri, source, lines, line, position, context) {
71
81
  if (position.character < start || position.character >= end)
72
82
  continue;
73
83
  const id = m[1];
74
- const defLine = findHeadingLineById(source, id);
75
- if (defLine === null)
84
+ const declaration = findDeclarationById(source, id);
85
+ if (declaration === null)
76
86
  return [];
77
- return collectHeadingRefs(uri, source, lines, id, defLine, context);
87
+ return collectRefs(uri, source, lines, id, declaration, context);
88
+ }
89
+ return null;
90
+ }
91
+ /**
92
+ * Cursor on the DECLARATION of a captioned host. A heading declares its id on
93
+ * its own line, and asking there works; a captioned host declares it on the
94
+ * block-attribute line ABOVE itself, and asking there answered nothing - so the
95
+ * feature was reachable from a usage only, which is half of what this module
96
+ * documents.
97
+ *
98
+ * IT RUNS LAST, and that ordering is the rule rather than an accident. This is
99
+ * the only family matched by LINE rather than by a construct under the cursor,
100
+ * so it answers for every column on that line - including a column holding
101
+ * something else. A host line can carry a reference image (`![alt][img]`), and
102
+ * running this before the link-reference family answered the FIGURE's
103
+ * references for a cursor sitting on `img`.
104
+ */
105
+ function resolveCaptionDeclarationGroup(uri, source, lines, position, context) {
106
+ const declared = captionIdDeclaredAt(source, position.line);
107
+ if (declared === null)
108
+ return null;
109
+ const declaration = findDeclarationById(source, declared);
110
+ if (declaration === null)
111
+ return [];
112
+ return collectRefs(uri, source, lines, declared, declaration, context);
113
+ }
114
+ /**
115
+ * The caption id a source line DECLARES: the host's own first line, or the line
116
+ * immediately above it, which is where the id is written. The attribute line
117
+ * sits OUTSIDE the host's span, so it is matched by adjacency rather than by
118
+ * containment.
119
+ *
120
+ * NO SHAPE TEST ON THE LINE ABOVE, deliberately. A `/^\s*\{.*\}\s*$/` guard
121
+ * reads like a safety check and is not one: a host only HAS an id because a
122
+ * block-attribute line gave it one, so the line above a host in this list is
123
+ * that line by construction, and the guard can only ever reject a spelling of
124
+ * it - `> {#fig}` inside a block quote, which the anchored brace does not
125
+ * match. A check that cannot reject a wrong answer and can reject a right one
126
+ * is worse than no check.
127
+ */
128
+ function captionIdDeclaredAt(source, lineIndex) {
129
+ let doc;
130
+ try {
131
+ doc = resolve(parse(source, { positions: true }));
132
+ }
133
+ catch {
134
+ return null;
135
+ }
136
+ for (const target of captionTargets(doc)) {
137
+ if (!target.pos)
138
+ continue;
139
+ const hostLine = target.pos.startLine - 1;
140
+ if (lineIndex === hostLine || lineIndex === hostLine - 1)
141
+ return target.id;
78
142
  }
79
143
  return null;
80
144
  }
@@ -101,18 +165,32 @@ function findHeadingAtLine(nodes, line) {
101
165
  }
102
166
  return null;
103
167
  }
104
- function findHeadingLineById(source, targetId) {
168
+ /**
169
+ * Where a crossref id is declared, and WHAT declares it: a heading's own line,
170
+ * or a captioned host's first line. Headings alone were searched here, so
171
+ * asking for the usages of a figure id found the group and then returned
172
+ * nothing.
173
+ *
174
+ * The kind is not decoration. A COLLAPSED reference `[text][]` falls back to
175
+ * the implicit HEADING target (PART 9R R1) and to nothing else - `[foo][]`
176
+ * beside a figure `{#foo}` renders as literal text - so the usage scan that
177
+ * looks for it must run for one kind and not the other.
178
+ */
179
+ function findDeclarationById(source, targetId) {
105
180
  let doc;
106
181
  try {
107
- doc = resolve(parse(source));
182
+ doc = resolve(parse(source, { positions: true }));
108
183
  }
109
184
  catch {
110
185
  return null;
111
186
  }
112
187
  const heading = findHeadingWithId(doc.children, targetId.toLowerCase());
113
- if (!heading || !heading.pos)
114
- return null;
115
- return heading.pos.startLine - 1;
188
+ if (heading?.pos)
189
+ return { line: heading.pos.startLine - 1, kind: 'heading' };
190
+ const caption = captionTargetById(doc, targetId);
191
+ if (caption?.pos)
192
+ return { line: caption.pos.startLine - 1, kind: 'caption' };
193
+ return null;
116
194
  }
117
195
  function findHeadingWithId(nodes, targetId) {
118
196
  for (const node of nodes) {
@@ -129,9 +207,20 @@ function findHeadingWithId(nodes, targetId) {
129
207
  }
130
208
  return null;
131
209
  }
132
- function collectHeadingRefs(uri, source, lines, id, defLine, context) {
210
+ /**
211
+ * Every usage of an id, for a declaration that may be a heading or a captioned
212
+ * host.
213
+ *
214
+ * The families differ in exactly one usage form. A COLLAPSED reference
215
+ * `[text][]` falls back to the implicit HEADING target (PART 9R R1) and to
216
+ * nothing else, so `[foo][]` beside a figure `{#foo}` renders as literal text
217
+ * rather than reaching the figure. Reporting it as a usage of the figure would
218
+ * be a reference the author cannot follow and did not write.
219
+ */
220
+ function collectRefs(uri, source, lines, id, declaration, context) {
133
221
  const locs = [];
134
- // Optionally include the definition (the heading line itself)
222
+ const defLine = declaration.line;
223
+ // Optionally include the definition (the declaring line itself)
135
224
  if (context.includeDeclaration) {
136
225
  locs.push(lineLocation(uri, defLine, 0, lines[defLine]?.length ?? 0));
137
226
  }
@@ -158,12 +247,15 @@ function collectHeadingRefs(uri, source, lines, id, defLine, context) {
158
247
  // These are resolved to `href` in the AST, so we check the link pool from
159
248
  // semantic analysis. For simplicity we scan for [text][] where text lowercased
160
249
  // matches the heading id (djot implicit ref: whitespace-collapsed, lowercase).
161
- const implicitRefRe = /\[([^\]\n]+)\]\[\]/g;
162
- for (let i = 0; i < lines.length; i++) {
163
- for (const m of lines[i].matchAll(implicitRefRe)) {
164
- const slug = m[1].trim().toLowerCase().replace(/\s+/g, '-');
165
- if (slug === idLower) {
166
- locs.push(lineLocation(uri, i, m.index, m.index + m[0].length));
250
+ // HEADINGS ONLY - see the note on this function.
251
+ if (declaration.kind === 'heading') {
252
+ const implicitRefRe = /\[([^\]\n]+)\]\[\]/g;
253
+ for (let i = 0; i < lines.length; i++) {
254
+ for (const m of lines[i].matchAll(implicitRefRe)) {
255
+ const slug = m[1].trim().toLowerCase().replace(/\s+/g, '-');
256
+ if (slug === idLower) {
257
+ locs.push(lineLocation(uri, i, m.index, m.index + m[0].length));
258
+ }
167
259
  }
168
260
  }
169
261
  }
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ import { type Position, type SelectionRange } from 'vscode-languageserver/node.js';
2
+ export declare function selectionRanges(uri: string, source: string, positions: Position[]): SelectionRange[];
@@ -0,0 +1,36 @@
1
+ import { scanDocument } from './workspace-index.js';
2
+ export function selectionRanges(uri, source, positions) {
3
+ const lines = source.replace(/\r\n?/g, '\n').split('\n');
4
+ const tokens = scanDocument(uri, source);
5
+ return positions.map((position) => {
6
+ const lineText = lines[position.line] ?? '';
7
+ const lineRange = {
8
+ start: { line: position.line, character: 0 },
9
+ end: { line: position.line, character: lineText.length },
10
+ };
11
+ const documentRange = {
12
+ start: { line: 0, character: 0 },
13
+ end: { line: Math.max(0, lines.length - 1), character: lines.at(-1)?.length ?? 0 },
14
+ };
15
+ const parent = { range: lineRange, parent: { range: documentRange } };
16
+ const token = tokens.find((candidate) => contains(candidate.range, position));
17
+ if (token)
18
+ return { range: token.range, parent };
19
+ const word = wordRange(lineText, position);
20
+ return word ? { range: word, parent } : parent;
21
+ });
22
+ }
23
+ function contains(range, position) {
24
+ return position.line === range.start.line && position.character >= range.start.character && position.character <= range.end.character;
25
+ }
26
+ function wordRange(line, position) {
27
+ for (const match of line.matchAll(/[\p{L}\p{N}_-]+/gu)) {
28
+ const start = match.index;
29
+ const end = start + match[0].length;
30
+ if (position.character >= start && position.character <= end) {
31
+ return { start: { line: position.line, character: start }, end: { line: position.line, character: end } };
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,MAAc,EAAE,SAAqB;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACxC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,SAAS,GAAU;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;YAC5C,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE;SACzD,CAAA;QACD,MAAM,aAAa,GAAU;YAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;YAChC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE;SACnF,CAAA;QACD,MAAM,MAAM,GAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,CAAA;QACrF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;QAC7E,IAAI,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAA;QAChD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAY,EAAE,QAAkB;IAChD,OAAO,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAA;AACvI,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAkB;IACjD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAM,CAAA;QAC1B,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACnC,IAAI,QAAQ,CAAC,SAAS,IAAI,KAAK,IAAI,QAAQ,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;YAC7D,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAA;QAC3G,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { selectionRanges } from './selection.js';
4
+ test('expands identifier to line to document', () => {
5
+ const selected = selectionRanges('file:///a.crv', 'See [^note].\n\nTail.\n', [{ line: 0, character: 7 }])[0];
6
+ assert.equal(selected.range.start.character, 6);
7
+ assert.equal(selected.parent?.range.end.character, 12);
8
+ assert.equal(selected.parent?.parent?.range.end.line, 3);
9
+ });
10
+ //# sourceMappingURL=selection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.test.js","sourceRoot":"","sources":["../src/selection.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAEhD,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,EAAE,yBAAyB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;IAC7G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAC,CAAA"}
@@ -1,16 +1,18 @@
1
- import { type SemanticTokens } from 'vscode-languageserver/node.js';
1
+ import { SemanticTokensBuilder, type SemanticTokens } from 'vscode-languageserver/node.js';
2
2
  export declare const semanticTokenTypes: readonly ["keyword", "string", "comment", "property", "variable", "number", "operator", "type"];
3
3
  export declare const semanticTokenModifiers: readonly ["declaration", "definition", "readonly"];
4
4
  type TokenType = (typeof semanticTokenTypes)[number];
5
5
  type TokenModifier = (typeof semanticTokenModifiers)[number];
6
- interface Token {
6
+ export interface Token {
7
7
  line: number;
8
8
  character: number;
9
9
  length: number;
10
10
  type: TokenType;
11
11
  modifiers?: TokenModifier[];
12
12
  }
13
- export declare function buildSemanticTokens(source: string): SemanticTokens;
13
+ export declare function buildSemanticTokens(source: string, builder?: SemanticTokensBuilder): SemanticTokens;
14
+ export declare function buildSemanticTokensRange(source: string, startLine: number, endLine: number): SemanticTokens;
15
+ export declare function updateSemanticTokens(source: string, builder: SemanticTokensBuilder, previousResultId: string): SemanticTokens | import("vscode-languageserver-types").SemanticTokensDelta;
14
16
  export declare function semanticTokens(source: string): Token[];
15
17
  /**
16
18
  * Scan a single line for constructs the AST path misses:
package/dist/semantic.js CHANGED
@@ -14,12 +14,24 @@ export const semanticTokenTypes = [
14
14
  export const semanticTokenModifiers = ['declaration', 'definition', 'readonly'];
15
15
  const tokenTypeIndex = new Map(semanticTokenTypes.map((type, index) => [type, index]));
16
16
  const tokenModifierIndex = new Map(semanticTokenModifiers.map((modifier, index) => [modifier, index]));
17
- export function buildSemanticTokens(source) {
17
+ export function buildSemanticTokens(source, builder = new SemanticTokensBuilder()) {
18
+ fillBuilder(builder, semanticTokens(source));
19
+ return builder.build();
20
+ }
21
+ export function buildSemanticTokensRange(source, startLine, endLine) {
18
22
  const builder = new SemanticTokensBuilder();
19
- for (const token of semanticTokens(source)) {
23
+ fillBuilder(builder, semanticTokens(source).filter((token) => token.line >= startLine && token.line <= endLine));
24
+ return builder.build();
25
+ }
26
+ export function updateSemanticTokens(source, builder, previousResultId) {
27
+ builder.previousResult(previousResultId);
28
+ fillBuilder(builder, semanticTokens(source));
29
+ return builder.buildEdits();
30
+ }
31
+ function fillBuilder(builder, tokens) {
32
+ for (const token of tokens) {
20
33
  builder.push(token.line, token.character, token.length, tokenTypeIndex.get(token.type) ?? 0, modifierMask(token.modifiers ?? []));
21
34
  }
22
- return builder.build();
23
35
  }
24
36
  export function semanticTokens(source) {
25
37
  try {
@@ -111,8 +123,26 @@ function collectBlock(tokens, lines, node) {
111
123
  collectFigureTarget(tokens, lines, node.target);
112
124
  collectInline(tokens, lines, node.caption);
113
125
  break;
126
+ // A composite figure (PART 9 §4c): one figure of ordered panels, opened by a
127
+ // BARE `::: figure` fence. Its opener carries the reserved kind word, so the
128
+ // prefix is scoped `type` exactly as an admonition's is - the two are the
129
+ // same shape on the line and a client colouring one should colour the other.
130
+ // The caption is the group's, and it sits AFTER the closing fence rather than
131
+ // inside the container, which is why it is collected here beside the children
132
+ // and not from any one of them.
133
+ case 'figure_group':
134
+ pushLinePrefix(tokens, lines, node.pos, /^\s*:{3,}\s*figure/, 'type');
135
+ for (const child of node.children)
136
+ collectBlock(tokens, lines, child);
137
+ if (node.caption)
138
+ collectInline(tokens, lines, node.caption);
139
+ break;
114
140
  case 'table':
115
- pushPosition(tokens, lines, node.pos, 'string');
141
+ if (node.pos) {
142
+ for (let line = node.pos.startLine - 1; line < node.pos.endLine; line += 1) {
143
+ scanTableLine(tokens, line, lines[line] ?? '');
144
+ }
145
+ }
116
146
  if (node.caption)
117
147
  collectInline(tokens, lines, node.caption);
118
148
  for (const row of node.rows) {
@@ -131,6 +161,17 @@ function collectBlock(tokens, lines, node) {
131
161
  break;
132
162
  }
133
163
  }
164
+ function scanTableLine(tokens, line, text) {
165
+ for (const pipe of text.matchAll(/\|/g))
166
+ push(tokens, line, pipe.index, 1, 'operator');
167
+ for (const marker of text.matchAll(/\|=?\s*([<>~^v]{1,2})(?=\{| )/g)) {
168
+ const run = marker[1];
169
+ push(tokens, line, marker.index + marker[0].indexOf(run), run.length, 'keyword');
170
+ }
171
+ for (const attr of text.matchAll(/\b(aligns|valigns|widths|footer-rows|header-rows|header-cols)=/g)) {
172
+ push(tokens, line, attr.index, attr[1].length, 'property');
173
+ }
174
+ }
134
175
  function collectFigureTarget(tokens, lines, node) {
135
176
  if (node.type === 'image')
136
177
  pushPosition(tokens, lines, node.pos, 'string');