@markup-carve/carve-lsp 0.1.2 → 0.1.3
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.
- package/README.md +11 -3
- package/dist/analyze.d.ts +9 -1
- package/dist/analyze.js +175 -14
- package/dist/analyze.js.map +1 -1
- package/dist/analyze.test.js +22 -1
- package/dist/analyze.test.js.map +1 -1
- package/dist/captions.d.ts +49 -0
- package/dist/captions.js +124 -0
- package/dist/captions.js.map +1 -0
- package/dist/completion.d.ts +1 -1
- package/dist/completion.js +49 -3
- package/dist/completion.js.map +1 -1
- package/dist/composite-figure-crossref.test.d.ts +1 -0
- package/dist/composite-figure-crossref.test.js +265 -0
- package/dist/composite-figure-crossref.test.js.map +1 -0
- package/dist/composite-figure.test.d.ts +1 -0
- package/dist/composite-figure.test.js +76 -0
- package/dist/composite-figure.test.js.map +1 -0
- package/dist/definition.d.ts +4 -2
- package/dist/definition.js +28 -5
- package/dist/definition.js.map +1 -1
- package/dist/dependencies.d.ts +15 -0
- package/dist/dependencies.js +59 -0
- package/dist/dependencies.js.map +1 -0
- package/dist/diagnostic-scheduler.d.ts +58 -0
- package/dist/diagnostic-scheduler.js +70 -0
- package/dist/diagnostic-scheduler.js.map +1 -0
- package/dist/diagnostic-scheduler.test.d.ts +1 -0
- package/dist/diagnostic-scheduler.test.js +75 -0
- package/dist/diagnostic-scheduler.test.js.map +1 -0
- package/dist/folding.d.ts +1 -0
- package/dist/folding.js +36 -1
- package/dist/folding.js.map +1 -1
- package/dist/folding.test.js +6 -1
- package/dist/folding.test.js.map +1 -1
- package/dist/hover.js +58 -19
- package/dist/hover.js.map +1 -1
- package/dist/include-cache.d.ts +26 -0
- package/dist/include-cache.js +74 -0
- package/dist/include-cache.js.map +1 -0
- package/dist/include-definition-denial.test.d.ts +1 -0
- package/dist/include-definition-denial.test.js +86 -0
- package/dist/include-definition-denial.test.js.map +1 -0
- package/dist/include-definition.d.ts +3 -0
- package/dist/include-definition.js +37 -0
- package/dist/include-definition.js.map +1 -0
- package/dist/include-features.test.d.ts +1 -0
- package/dist/include-features.test.js +133 -0
- package/dist/include-features.test.js.map +1 -0
- package/dist/include-path.d.ts +6 -0
- package/dist/include-path.js +31 -2
- package/dist/include-path.js.map +1 -1
- package/dist/include-settings.d.ts +2 -0
- package/dist/include-settings.js +1 -0
- package/dist/include-settings.js.map +1 -1
- package/dist/includes.d.ts +8 -0
- package/dist/includes.js +28 -7
- package/dist/includes.js.map +1 -1
- package/dist/references.d.ts +2 -0
- package/dist/references.js +113 -21
- package/dist/references.js.map +1 -1
- package/dist/semantic.js +14 -0
- package/dist/semantic.js.map +1 -1
- package/dist/semantic.test.js +6 -0
- package/dist/semantic.test.js.map +1 -1
- package/dist/server.js +128 -15
- package/dist/server.js.map +1 -1
- package/dist/versioned-cache.d.ts +8 -0
- package/dist/versioned-cache.js +17 -0
- package/dist/versioned-cache.js.map +1 -0
- package/dist/versioned-cache.test.d.ts +1 -0
- package/dist/versioned-cache.test.js +13 -0
- package/dist/versioned-cache.test.js.map +1 -0
- package/package.json +2 -2
package/dist/definition.d.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { type Location, type Position } from 'vscode-languageserver/node.js';
|
|
2
|
+
import type { IncludeOptions } from './includes.js';
|
|
2
3
|
/**
|
|
3
4
|
* Go-to-definition for Carve constructs:
|
|
4
5
|
*
|
|
5
|
-
* - Cross-reference `</#id>` -> the heading whose generated id is `id
|
|
6
|
+
* - Cross-reference `</#id>` -> the heading whose generated id is `id`,
|
|
7
|
+
* or the captioned host carrying it
|
|
6
8
|
* - Fragment link `[text](#id)` -> same (href starts with `#`)
|
|
7
9
|
* - Footnote ref `[^name]` -> the `[^name]:` definition line
|
|
8
10
|
* - Link reference `[text][ref]` -> the `[ref]:` definition line
|
|
9
11
|
* - Citation `[@key]` -> the `[@key]:` definition line
|
|
10
12
|
* - Wikilink `[[Page]]` -> heading whose text matches Page (best-effort)
|
|
11
13
|
*/
|
|
12
|
-
export declare function definitionAt(uri: string, source: string, position: Position): Location | null;
|
|
14
|
+
export declare function definitionAt(uri: string, source: string, position: Position, includes?: IncludeOptions): Location | null;
|
package/dist/definition.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import { parse, resolve } from '@markup-carve/carve';
|
|
2
2
|
import { astColumnToCharacter, sourceLines } from './position.js';
|
|
3
3
|
import { smartPunctuationText } from './inline-text.js';
|
|
4
|
+
import { captionTargetById } from './captions.js';
|
|
5
|
+
import { includeDefinitionAt } from './include-definition.js';
|
|
4
6
|
/**
|
|
5
7
|
* Go-to-definition for Carve constructs:
|
|
6
8
|
*
|
|
7
|
-
* - Cross-reference `</#id>` -> the heading whose generated id is `id
|
|
9
|
+
* - Cross-reference `</#id>` -> the heading whose generated id is `id`,
|
|
10
|
+
* or the captioned host carrying it
|
|
8
11
|
* - Fragment link `[text](#id)` -> same (href starts with `#`)
|
|
9
12
|
* - Footnote ref `[^name]` -> the `[^name]:` definition line
|
|
10
13
|
* - Link reference `[text][ref]` -> the `[ref]:` definition line
|
|
11
14
|
* - Citation `[@key]` -> the `[@key]:` definition line
|
|
12
15
|
* - Wikilink `[[Page]]` -> heading whose text matches Page (best-effort)
|
|
13
16
|
*/
|
|
14
|
-
export function definitionAt(uri, source, position) {
|
|
17
|
+
export function definitionAt(uri, source, position, includes) {
|
|
18
|
+
const included = includeDefinitionAt(source, position, includes);
|
|
19
|
+
if (included)
|
|
20
|
+
return included;
|
|
15
21
|
const lines = source.replace(/\r\n?/g, '\n').split('\n');
|
|
16
22
|
const line = lines[position.line] ?? '';
|
|
17
23
|
// 1. Citation [@key] - check before link-ref so `[@foo]` doesn't match as link-ref
|
|
@@ -100,14 +106,19 @@ function resolveCrossrefAt(uri, source, line, position) {
|
|
|
100
106
|
function findHeadingById(uri, source, targetId) {
|
|
101
107
|
let doc;
|
|
102
108
|
try {
|
|
103
|
-
doc = resolve(parse(source));
|
|
109
|
+
doc = resolve(parse(source, { positions: true }));
|
|
104
110
|
}
|
|
105
111
|
catch {
|
|
106
112
|
return null;
|
|
107
113
|
}
|
|
108
114
|
const heading = findHeadingWithId(doc.children, targetId.toLowerCase());
|
|
109
|
-
if (!heading || !heading.pos)
|
|
110
|
-
|
|
115
|
+
if (!heading || !heading.pos) {
|
|
116
|
+
// A crossref reaches a CAPTIONED HOST as well - a figure, a table, a
|
|
117
|
+
// composite figure or one of its panels (PART 9R R4). Only headings were
|
|
118
|
+
// searched here, so `</#fig>` jumped nowhere on a construct that predates
|
|
119
|
+
// composite figures entirely.
|
|
120
|
+
return findCaptionById(uri, doc, targetId);
|
|
121
|
+
}
|
|
111
122
|
const line = heading.pos.startLine - 1;
|
|
112
123
|
return {
|
|
113
124
|
uri,
|
|
@@ -125,6 +136,18 @@ function findHeadingById(uri, source, targetId) {
|
|
|
125
136
|
},
|
|
126
137
|
};
|
|
127
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* The host's own first line. A captioned host has no single "definition line"
|
|
141
|
+
* the way a heading does - its id sits on a block-attribute line above it, its
|
|
142
|
+
* caption below it - so the jump lands on the host itself, which is the line an
|
|
143
|
+
* author is looking for.
|
|
144
|
+
*/
|
|
145
|
+
function findCaptionById(uri, doc, targetId) {
|
|
146
|
+
const target = captionTargetById(doc, targetId);
|
|
147
|
+
if (!target?.pos)
|
|
148
|
+
return null;
|
|
149
|
+
return locationAtLine(uri, target.pos.startLine - 1);
|
|
150
|
+
}
|
|
128
151
|
function findHeadingWithId(nodes, targetId) {
|
|
129
152
|
for (const node of nodes) {
|
|
130
153
|
if (node.type === 'heading') {
|
package/dist/definition.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definition.js","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Bidirectional index from open documents to include paths they depend on. */
|
|
2
|
+
export declare class DependencyIndex {
|
|
3
|
+
#private;
|
|
4
|
+
update(documentUri: string, paths: Iterable<string>): boolean;
|
|
5
|
+
remove(documentUri: string): boolean;
|
|
6
|
+
documentsFor(target: string): string[];
|
|
7
|
+
watchedPaths(): string[];
|
|
8
|
+
}
|
|
9
|
+
/** Build a watcher rooted at the nearest existing ancestor, including missing trees. */
|
|
10
|
+
export declare function watcherFor(target: string): {
|
|
11
|
+
globPattern: {
|
|
12
|
+
baseUri: string;
|
|
13
|
+
pattern: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Bidirectional index from open documents to include paths they depend on. */
|
|
2
|
+
export class DependencyIndex {
|
|
3
|
+
#byDocument = new Map();
|
|
4
|
+
#byPath = new Map();
|
|
5
|
+
update(documentUri, paths) {
|
|
6
|
+
const next = new Set(paths);
|
|
7
|
+
const previous = this.#byDocument.get(documentUri) ?? new Set();
|
|
8
|
+
if (same(previous, next))
|
|
9
|
+
return false;
|
|
10
|
+
for (const target of previous) {
|
|
11
|
+
const documents = this.#byPath.get(target);
|
|
12
|
+
documents?.delete(documentUri);
|
|
13
|
+
if (documents?.size === 0)
|
|
14
|
+
this.#byPath.delete(target);
|
|
15
|
+
}
|
|
16
|
+
if (next.size === 0)
|
|
17
|
+
this.#byDocument.delete(documentUri);
|
|
18
|
+
else
|
|
19
|
+
this.#byDocument.set(documentUri, next);
|
|
20
|
+
for (const target of next) {
|
|
21
|
+
const documents = this.#byPath.get(target) ?? new Set();
|
|
22
|
+
documents.add(documentUri);
|
|
23
|
+
this.#byPath.set(target, documents);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
remove(documentUri) {
|
|
28
|
+
return this.update(documentUri, []);
|
|
29
|
+
}
|
|
30
|
+
documentsFor(target) {
|
|
31
|
+
return [...(this.#byPath.get(target) ?? [])];
|
|
32
|
+
}
|
|
33
|
+
watchedPaths() {
|
|
34
|
+
return [...this.#byPath.keys()].sort();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Build a watcher rooted at the nearest existing ancestor, including missing trees. */
|
|
38
|
+
export function watcherFor(target) {
|
|
39
|
+
let base = path.dirname(target);
|
|
40
|
+
while (!existsSync(base) && base !== path.dirname(base))
|
|
41
|
+
base = path.dirname(base);
|
|
42
|
+
const pattern = path.relative(base, target).split(path.sep).map(escapeGlob).join('/');
|
|
43
|
+
return {
|
|
44
|
+
globPattern: {
|
|
45
|
+
baseUri: pathToFileURL(base).toString(),
|
|
46
|
+
pattern,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
function escapeGlob(name) {
|
|
51
|
+
return name.replace(/([*?{}\[\]])/g, '[$1]');
|
|
52
|
+
}
|
|
53
|
+
function same(left, right) {
|
|
54
|
+
return left.size === right.size && [...left].every((value) => right.has(value));
|
|
55
|
+
}
|
|
56
|
+
import { existsSync } from 'node:fs';
|
|
57
|
+
import path from 'node:path';
|
|
58
|
+
import { pathToFileURL } from 'node:url';
|
|
59
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../src/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coalesce per-document analysis so a burst of keystrokes produces one run.
|
|
3
|
+
*
|
|
4
|
+
* The server advertises incremental text sync, but analysis is whole-document:
|
|
5
|
+
* every change re-parses, re-resolves, and runs the migration and lint passes.
|
|
6
|
+
* On a book-sized file that crosses interactive latency on its own, and running
|
|
7
|
+
* it once per keystroke multiplies the cost by the typing rate
|
|
8
|
+
* (markup-carve/carve-lsp#68).
|
|
9
|
+
*
|
|
10
|
+
* Scheduling is separated from the server wiring so it can be tested without a
|
|
11
|
+
* connection. The server supplies `run`; this decides WHEN.
|
|
12
|
+
*
|
|
13
|
+
* Two guarantees the caller depends on:
|
|
14
|
+
*
|
|
15
|
+
* - one run per coalesced burst per URI, never one per edit;
|
|
16
|
+
* - a run always carries the NEWEST version seen for that URI, so diagnostics
|
|
17
|
+
* computed for a superseded version are never published. A queued run is
|
|
18
|
+
* replaced rather than queued behind, which is what makes that true.
|
|
19
|
+
*/
|
|
20
|
+
export interface DiagnosticSchedulerOptions {
|
|
21
|
+
/**
|
|
22
|
+
* How long to wait for the burst to end. Around 100-150 ms keeps diagnostics
|
|
23
|
+
* feeling immediate while absorbing normal typing; it is a constructor
|
|
24
|
+
* argument rather than a constant so a host can tune it.
|
|
25
|
+
*/
|
|
26
|
+
delayMs?: number;
|
|
27
|
+
/** Analyze `uri`, which is at `version`. */
|
|
28
|
+
run: (uri: string, version: number) => void;
|
|
29
|
+
}
|
|
30
|
+
/** The default burst window, in milliseconds. */
|
|
31
|
+
export declare const DEFAULT_DIAGNOSTIC_DELAY_MS = 120;
|
|
32
|
+
export declare class DiagnosticScheduler {
|
|
33
|
+
private readonly timers;
|
|
34
|
+
private readonly versions;
|
|
35
|
+
private readonly delayMs;
|
|
36
|
+
private readonly run;
|
|
37
|
+
constructor(options: DiagnosticSchedulerOptions);
|
|
38
|
+
/**
|
|
39
|
+
* Queue analysis for `uri` at `version`, superseding any queued run for it.
|
|
40
|
+
*
|
|
41
|
+
* Superseding rather than queueing is the whole point: a run already waiting
|
|
42
|
+
* would otherwise publish diagnostics for text the author has since changed.
|
|
43
|
+
*/
|
|
44
|
+
schedule(uri: string, version: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* Analyze `uri` now, dropping any queued run for it.
|
|
47
|
+
*
|
|
48
|
+
* For open and save, where waiting out a burst that is not happening only
|
|
49
|
+
* adds latency.
|
|
50
|
+
*/
|
|
51
|
+
flush(uri: string, version: number): void;
|
|
52
|
+
/** Forget `uri` entirely: no queued run of it will fire. */
|
|
53
|
+
cancel(uri: string): void;
|
|
54
|
+
/** Drop every queued run. */
|
|
55
|
+
dispose(): void;
|
|
56
|
+
/** Is a run queued for `uri`? Test and diagnostic aid. */
|
|
57
|
+
pending(uri: string): boolean;
|
|
58
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** The default burst window, in milliseconds. */
|
|
2
|
+
export const DEFAULT_DIAGNOSTIC_DELAY_MS = 120;
|
|
3
|
+
export class DiagnosticScheduler {
|
|
4
|
+
timers = new Map();
|
|
5
|
+
versions = new Map();
|
|
6
|
+
delayMs;
|
|
7
|
+
run;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.delayMs = options.delayMs ?? DEFAULT_DIAGNOSTIC_DELAY_MS;
|
|
10
|
+
this.run = options.run;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Queue analysis for `uri` at `version`, superseding any queued run for it.
|
|
14
|
+
*
|
|
15
|
+
* Superseding rather than queueing is the whole point: a run already waiting
|
|
16
|
+
* would otherwise publish diagnostics for text the author has since changed.
|
|
17
|
+
*/
|
|
18
|
+
schedule(uri, version) {
|
|
19
|
+
this.versions.set(uri, version);
|
|
20
|
+
const queued = this.timers.get(uri);
|
|
21
|
+
if (queued !== undefined)
|
|
22
|
+
clearTimeout(queued);
|
|
23
|
+
const timer = setTimeout(() => {
|
|
24
|
+
this.timers.delete(uri);
|
|
25
|
+
const latest = this.versions.get(uri);
|
|
26
|
+
// `cancel` removes the version, so a document closed while its run was
|
|
27
|
+
// waiting produces no diagnostics for a document that is gone.
|
|
28
|
+
if (latest === undefined)
|
|
29
|
+
return;
|
|
30
|
+
this.run(uri, latest);
|
|
31
|
+
}, this.delayMs);
|
|
32
|
+
this.timers.set(uri, timer);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Analyze `uri` now, dropping any queued run for it.
|
|
36
|
+
*
|
|
37
|
+
* For open and save, where waiting out a burst that is not happening only
|
|
38
|
+
* adds latency.
|
|
39
|
+
*/
|
|
40
|
+
flush(uri, version) {
|
|
41
|
+
const queued = this.timers.get(uri);
|
|
42
|
+
if (queued !== undefined) {
|
|
43
|
+
clearTimeout(queued);
|
|
44
|
+
this.timers.delete(uri);
|
|
45
|
+
}
|
|
46
|
+
this.versions.set(uri, version);
|
|
47
|
+
this.run(uri, version);
|
|
48
|
+
}
|
|
49
|
+
/** Forget `uri` entirely: no queued run of it will fire. */
|
|
50
|
+
cancel(uri) {
|
|
51
|
+
const queued = this.timers.get(uri);
|
|
52
|
+
if (queued !== undefined) {
|
|
53
|
+
clearTimeout(queued);
|
|
54
|
+
this.timers.delete(uri);
|
|
55
|
+
}
|
|
56
|
+
this.versions.delete(uri);
|
|
57
|
+
}
|
|
58
|
+
/** Drop every queued run. */
|
|
59
|
+
dispose() {
|
|
60
|
+
for (const timer of this.timers.values())
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
this.timers.clear();
|
|
63
|
+
this.versions.clear();
|
|
64
|
+
}
|
|
65
|
+
/** Is a run queued for `uri`? Test and diagnostic aid. */
|
|
66
|
+
pending(uri) {
|
|
67
|
+
return this.timers.has(uri);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=diagnostic-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-scheduler.js","sourceRoot":"","sources":["../src/diagnostic-scheduler.ts"],"names":[],"mappings":"AA8BA,iDAAiD;AACjD,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAA;AAE9C,MAAM,OAAO,mBAAmB;IACb,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAA;IACzD,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IACpC,OAAO,CAAQ;IACf,GAAG,CAAwC;IAE5D,YAAY,OAAmC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,2BAA2B,CAAA;QAC7D,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IACxB,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW,EAAE,OAAe;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAA;QAE9C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACrC,uEAAuE;YACvE,+DAA+D;YAC/D,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAM;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACvB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEhB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAW,EAAE,OAAe;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,MAAM,CAAC,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,4DAA4D;IAC5D,MAAM,CAAC,GAAW;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,MAAM,CAAC,CAAA;YACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,6BAA6B;IAC7B,OAAO;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,0DAA0D;IAC1D,OAAO,CAAC,GAAW;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { DiagnosticScheduler, DEFAULT_DIAGNOSTIC_DELAY_MS } from './diagnostic-scheduler.js';
|
|
4
|
+
test('runs once for a burst of edits, not once per edit', (t) => {
|
|
5
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
6
|
+
const runs = [];
|
|
7
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (u, v) => runs.push([u, v]) });
|
|
8
|
+
for (let version = 1; version <= 10; version++)
|
|
9
|
+
scheduler.schedule('file:///a', version);
|
|
10
|
+
assert.deepEqual(runs, []);
|
|
11
|
+
t.mock.timers.tick(100);
|
|
12
|
+
assert.deepEqual(runs, [['file:///a', 10]]);
|
|
13
|
+
});
|
|
14
|
+
// The reason a queued run is REPLACED rather than left to fire: it would
|
|
15
|
+
// otherwise publish diagnostics computed for text the author has changed.
|
|
16
|
+
test('carries the newest version, never a superseded one', (t) => {
|
|
17
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
18
|
+
const runs = [];
|
|
19
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (_u, v) => runs.push(v) });
|
|
20
|
+
scheduler.schedule('file:///a', 1);
|
|
21
|
+
t.mock.timers.tick(90);
|
|
22
|
+
scheduler.schedule('file:///a', 2);
|
|
23
|
+
t.mock.timers.tick(90);
|
|
24
|
+
scheduler.schedule('file:///a', 3);
|
|
25
|
+
t.mock.timers.tick(100);
|
|
26
|
+
assert.deepEqual(runs, [3]);
|
|
27
|
+
});
|
|
28
|
+
test('keeps documents independent', (t) => {
|
|
29
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
30
|
+
const runs = [];
|
|
31
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (u) => runs.push(u) });
|
|
32
|
+
scheduler.schedule('file:///a', 1);
|
|
33
|
+
scheduler.schedule('file:///b', 7);
|
|
34
|
+
t.mock.timers.tick(100);
|
|
35
|
+
assert.deepEqual(runs.sort(), ['file:///a', 'file:///b']);
|
|
36
|
+
});
|
|
37
|
+
test('cancels a queued run so a closed document publishes nothing', (t) => {
|
|
38
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
39
|
+
const runs = [];
|
|
40
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (u) => runs.push(u) });
|
|
41
|
+
scheduler.schedule('file:///a', 1);
|
|
42
|
+
assert.equal(scheduler.pending('file:///a'), true);
|
|
43
|
+
scheduler.cancel('file:///a');
|
|
44
|
+
t.mock.timers.tick(1000);
|
|
45
|
+
assert.deepEqual(runs, []);
|
|
46
|
+
assert.equal(scheduler.pending('file:///a'), false);
|
|
47
|
+
});
|
|
48
|
+
test('flushes immediately and drops the queued run', (t) => {
|
|
49
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
50
|
+
const runs = [];
|
|
51
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (_u, v) => runs.push(v) });
|
|
52
|
+
scheduler.schedule('file:///a', 1);
|
|
53
|
+
scheduler.flush('file:///a', 2);
|
|
54
|
+
assert.deepEqual(runs, [2]);
|
|
55
|
+
t.mock.timers.tick(1000);
|
|
56
|
+
assert.deepEqual(runs, [2]);
|
|
57
|
+
});
|
|
58
|
+
test('drops everything on dispose', (t) => {
|
|
59
|
+
t.mock.timers.enable({ apis: ['setTimeout'] });
|
|
60
|
+
const runs = [];
|
|
61
|
+
const scheduler = new DiagnosticScheduler({ delayMs: 100, run: (u) => runs.push(u) });
|
|
62
|
+
scheduler.schedule('file:///a', 1);
|
|
63
|
+
scheduler.schedule('file:///b', 1);
|
|
64
|
+
scheduler.dispose();
|
|
65
|
+
t.mock.timers.tick(1000);
|
|
66
|
+
assert.deepEqual(runs, []);
|
|
67
|
+
});
|
|
68
|
+
// BOUND, not proof: the default is exported so a host can reason about it, and
|
|
69
|
+
// this pins that it sits in the interactive range. No mutation of the
|
|
70
|
+
// coalescing logic breaks this row.
|
|
71
|
+
test('defaults to a delay inside the interactive range', () => {
|
|
72
|
+
assert.ok(DEFAULT_DIAGNOSTIC_DELAY_MS >= 100);
|
|
73
|
+
assert.ok(DEFAULT_DIAGNOSTIC_DELAY_MS <= 150);
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=diagnostic-scheduler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-scheduler.test.js","sourceRoot":"","sources":["../src/diagnostic-scheduler.test.ts"],"names":[],"mappings":"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"}
|
package/dist/folding.d.ts
CHANGED
|
@@ -6,3 +6,4 @@ import { type FoldingRange } from 'vscode-languageserver/node.js';
|
|
|
6
6
|
* the next heading of the same or shallower level (or end of document).
|
|
7
7
|
*/
|
|
8
8
|
export declare function foldingRanges(source: string): FoldingRange[];
|
|
9
|
+
export declare function lexicalFolds(source: string): FoldingRange[];
|
package/dist/folding.js
CHANGED
|
@@ -11,6 +11,9 @@ const FOLDABLE = new Set([
|
|
|
11
11
|
'div',
|
|
12
12
|
'definition_list',
|
|
13
13
|
'figure',
|
|
14
|
+
// A composite figure is a fenced container like any other, and a long one is
|
|
15
|
+
// exactly what a reader wants to collapse (PART 9 §4c).
|
|
16
|
+
'figure_group',
|
|
14
17
|
]);
|
|
15
18
|
/**
|
|
16
19
|
* Folding regions for a Carve document:
|
|
@@ -24,7 +27,7 @@ export function foldingRanges(source) {
|
|
|
24
27
|
doc = resolve(parse(source, { positions: true }));
|
|
25
28
|
}
|
|
26
29
|
catch {
|
|
27
|
-
return
|
|
30
|
+
return lexicalFolds(source);
|
|
28
31
|
}
|
|
29
32
|
const ranges = [];
|
|
30
33
|
const headings = [];
|
|
@@ -58,6 +61,38 @@ export function foldingRanges(source) {
|
|
|
58
61
|
}
|
|
59
62
|
return ranges;
|
|
60
63
|
}
|
|
64
|
+
export function lexicalFolds(source) {
|
|
65
|
+
const lines = source.replace(/\r\n?/g, '\n').split('\n');
|
|
66
|
+
const ranges = [];
|
|
67
|
+
const headings = [];
|
|
68
|
+
const fences = [];
|
|
69
|
+
for (let line = 0; line < lines.length; line += 1) {
|
|
70
|
+
const text = lines[line];
|
|
71
|
+
const heading = /^(#{1,6}) /.exec(text);
|
|
72
|
+
if (heading)
|
|
73
|
+
headings.push({ level: heading[1].length, line });
|
|
74
|
+
const fence = /^\s*(`{3,}|~{3,}|:{3,}|%{3,})/.exec(text);
|
|
75
|
+
if (!fence)
|
|
76
|
+
continue;
|
|
77
|
+
const top = fences.at(-1);
|
|
78
|
+
if (top && top.marker[0] === fence[1][0] && fence[1].length >= top.marker.length) {
|
|
79
|
+
fences.pop();
|
|
80
|
+
if (line > top.line)
|
|
81
|
+
ranges.push({ startLine: top.line, endLine: line });
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
fences.push({ marker: fence[1], line });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
for (let index = 0; index < headings.length; index += 1) {
|
|
88
|
+
const heading = headings[index];
|
|
89
|
+
const next = headings.slice(index + 1).find((candidate) => candidate.level <= heading.level);
|
|
90
|
+
const endLine = (next?.line ?? lines.length) - 1;
|
|
91
|
+
if (endLine > heading.line)
|
|
92
|
+
ranges.push({ startLine: heading.line, endLine, kind: 'region' });
|
|
93
|
+
}
|
|
94
|
+
return ranges;
|
|
95
|
+
}
|
|
61
96
|
function isBlockNode(node) {
|
|
62
97
|
return Boolean(node && typeof node === 'object' && 'type' in node);
|
|
63
98
|
}
|
package/dist/folding.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folding.js","sourceRoot":"","sources":["../src/folding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAiC,MAAM,qBAAqB,CAAA;AAEnF,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAoB;IAC1C,YAAY;IACZ,WAAW;IACX,SAAS;IACT,aAAa;IACb,MAAM;IACN,OAAO;IACP,YAAY;IACZ,KAAK;IACL,iBAAiB;IACjB,QAAQ;
|
|
1
|
+
{"version":3,"file":"folding.js","sourceRoot":"","sources":["../src/folding.ts"],"names":[],"mappings":"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"}
|
package/dist/folding.test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import assert from 'node:assert/strict';
|
|
2
2
|
import test from 'node:test';
|
|
3
|
-
import { foldingRanges } from './folding.js';
|
|
3
|
+
import { foldingRanges, lexicalFolds } from './folding.js';
|
|
4
4
|
const src = '# A\n\ntext\n\n## B\n\nmore\n\n```js\none\ntwo\n```\n';
|
|
5
5
|
test('folds the section under a top-level heading', () => {
|
|
6
6
|
const ranges = foldingRanges(src);
|
|
@@ -17,4 +17,9 @@ test('folds a multi-line fenced code block', () => {
|
|
|
17
17
|
test('returns nothing for an empty document', () => {
|
|
18
18
|
assert.deepEqual(foldingRanges(''), []);
|
|
19
19
|
});
|
|
20
|
+
test('lexical fallback preserves section and fence folds after analysis failure', () => {
|
|
21
|
+
const ranges = lexicalFolds('# One\n\n::: note\nbody\n:::\n\n## Two\ntext\n');
|
|
22
|
+
assert.ok(ranges.some((range) => range.startLine === 0 && range.endLine >= 7));
|
|
23
|
+
assert.ok(ranges.some((range) => range.startLine === 2 && range.endLine === 4));
|
|
24
|
+
});
|
|
20
25
|
//# sourceMappingURL=folding.test.js.map
|
package/dist/folding.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folding.test.js","sourceRoot":"","sources":["../src/folding.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"folding.test.js","sourceRoot":"","sources":["../src/folding.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,GAAG,GAAG,uDAAuD,CAAA;AAEnE,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;IACvD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACxF,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACrE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACzF,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACjD,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;AACzC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,MAAM,GAAG,YAAY,CAAC,gDAAgD,CAAC,CAAA;IAC7E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IAC9E,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;AACjF,CAAC,CAAC,CAAA"}
|