@hydranium/core 1.0.0-next.304 → 1.0.0-next.306
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 +4 -1
- package/lib/browser/start-language-server-in-worker.d.ts +3 -0
- package/lib/browser/start-language-server-in-worker.d.ts.map +1 -1
- package/lib/browser/start-language-server-in-worker.js +6 -1
- package/lib/browser/start-language-server-in-worker.js.map +1 -1
- package/lib/documents/hydranium-text-documents.d.ts +18 -1
- package/lib/documents/hydranium-text-documents.d.ts.map +1 -1
- package/lib/documents/hydranium-text-documents.js +48 -7
- package/lib/documents/hydranium-text-documents.js.map +1 -1
- package/lib/documents/language-client-shadow.d.ts +25 -9
- package/lib/documents/language-client-shadow.d.ts.map +1 -1
- package/lib/documents/language-client-shadow.js +25 -3
- package/lib/documents/language-client-shadow.js.map +1 -1
- package/lib/lsp/index.d.ts +1 -0
- package/lib/lsp/index.d.ts.map +1 -1
- package/lib/lsp/index.js +1 -0
- package/lib/lsp/index.js.map +1 -1
- package/lib/lsp/save-text-document.d.ts +31 -0
- package/lib/lsp/save-text-document.d.ts.map +1 -0
- package/lib/lsp/save-text-document.js +52 -0
- package/lib/lsp/save-text-document.js.map +1 -0
- package/package.json +5 -5
- package/src/browser/start-language-server-in-worker.ts +6 -1
- package/src/documents/hydranium-text-documents.ts +52 -6
- package/src/documents/language-client-shadow.ts +59 -10
- package/src/lsp/index.ts +1 -0
- package/src/lsp/save-text-document.ts +63 -0
package/README.md
CHANGED
|
@@ -55,7 +55,10 @@ needs it.
|
|
|
55
55
|
`startLanguageServerInWorker` and the other heads with their own starters.
|
|
56
56
|
It posts the ready message once every head is up, runs the validating
|
|
57
57
|
build and reports a failed start, build or rejection to the page;
|
|
58
|
-
`reportWorkerError` reports a failure of your own.
|
|
58
|
+
`reportWorkerError` reports a failure of your own. The LSP starter answers
|
|
59
|
+
the editor's save request, which a worker creating its own connection adds
|
|
60
|
+
with `withSaveTextDocumentCapability` and `listenToSaveTextDocument` from
|
|
61
|
+
`./lsp`.
|
|
59
62
|
|
|
60
63
|
See *Compose a server by hand* and *Add a validation check* in
|
|
61
64
|
[Adopting Hydranium](https://github.com/eclipse-emfcloud/hydranium/blob/main/docs/ADOPTING.md).
|
|
@@ -24,6 +24,9 @@ export interface WorkerLanguageServerOptions {
|
|
|
24
24
|
* listens. The page's end of the port closing ends only this head's
|
|
25
25
|
* connection, not the worker the other heads share, so the language client's
|
|
26
26
|
* documents are closed here, each reverting as its last close does.
|
|
27
|
+
*
|
|
28
|
+
* The worker holds the files, so the page cannot write them and `didSave`
|
|
29
|
+
* reports nothing: the head answers and advertises `SaveTextDocumentRequest`.
|
|
27
30
|
*/
|
|
28
31
|
export declare function startLanguageServerInWorker<TShared extends ServerSharedServices>(port: TransferredMessagePort, compose: (connection: Connection) => TShared, options?: WorkerLanguageServerOptions): TShared;
|
|
29
32
|
//# sourceMappingURL=start-language-server-in-worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-language-server-in-worker.d.ts","sourceRoot":"","sources":["../../src/browser/start-language-server-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA8B,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"start-language-server-in-worker.d.ts","sourceRoot":"","sources":["../../src/browser/start-language-server-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA8B,KAAK,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACpG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,MAAM,WAAW,2BAA2B;IACzC,4GAA4G;IAC5G,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,oBAAoB,EAC7E,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,EAC5C,OAAO,GAAE,2BAAgC,GACzC,OAAO,CAcT"}
|
|
@@ -10,6 +10,7 @@ import { createMessagePortTransport } from '@hydranium/protocol';
|
|
|
10
10
|
import { createConnection, ProposedFeatures } from 'vscode-languageserver/browser';
|
|
11
11
|
import { withHydraniumLspFeatures } from '../lsp/connection-features.js';
|
|
12
12
|
import { lspLatencyOptions } from '../lsp/lsp-latency.js';
|
|
13
|
+
import { listenToSaveTextDocument, withSaveTextDocumentCapability } from '../lsp/save-text-document.js';
|
|
13
14
|
import { startLanguageServer } from '../lsp/start-language-server.js';
|
|
14
15
|
/**
|
|
15
16
|
* Start the LSP head on the port the page transferred for it, and return the
|
|
@@ -22,12 +23,16 @@ import { startLanguageServer } from '../lsp/start-language-server.js';
|
|
|
22
23
|
* listens. The page's end of the port closing ends only this head's
|
|
23
24
|
* connection, not the worker the other heads share, so the language client's
|
|
24
25
|
* documents are closed here, each reverting as its last close does.
|
|
26
|
+
*
|
|
27
|
+
* The worker holds the files, so the page cannot write them and `didSave`
|
|
28
|
+
* reports nothing: the head answers and advertises `SaveTextDocumentRequest`.
|
|
25
29
|
*/
|
|
26
30
|
export function startLanguageServerInWorker(port, compose, options = {}) {
|
|
27
31
|
// Both ends use `createMessagePortTransport`; see it for why.
|
|
28
32
|
const transport = createMessagePortTransport(port);
|
|
29
|
-
const connection = createConnection(withHydraniumLspFeatures(ProposedFeatures.all), transport.reader, transport.writer, lspLatencyOptions(options.latency));
|
|
33
|
+
const connection = createConnection(withSaveTextDocumentCapability(withHydraniumLspFeatures(ProposedFeatures.all)), transport.reader, transport.writer, lspLatencyOptions(options.latency));
|
|
30
34
|
const shared = compose(connection);
|
|
35
|
+
listenToSaveTextDocument(connection, shared);
|
|
31
36
|
startLanguageServer(shared);
|
|
32
37
|
transport.reader.onClose(() => void shared.workspace.TextDocuments.closeLanguageClientDocuments());
|
|
33
38
|
return shared;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-language-server-in-worker.js","sourceRoot":"","sources":["../../src/browser/start-language-server-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,0BAA0B,EAAsD,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAEpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAOtE
|
|
1
|
+
{"version":3,"file":"start-language-server-in-worker.js","sourceRoot":"","sources":["../../src/browser/start-language-server-in-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,0BAA0B,EAAsD,MAAM,qBAAqB,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAEpG,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACxG,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAOtE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B,CACxC,IAA4B,EAC5B,OAA4C,EAC5C,OAAO,GAAgC,EAAE;IAEzC,8DAA8D;IAC9D,MAAM,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAChC,8BAA8B,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAC9E,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,MAAM,EAChB,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CACpC,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnC,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7C,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC,CAAC;IACnG,OAAO,MAAM,CAAC;AACjB,CAAC"}
|
|
@@ -316,6 +316,22 @@ export declare class HydraniumTextDocuments<T extends TextDocument = TextDocumen
|
|
|
316
316
|
* or an integrity repair steps past; `undefined` while it is not open.
|
|
317
317
|
*/
|
|
318
318
|
openedVersion(uri: DocumentUri): TextVersion | undefined;
|
|
319
|
+
/**
|
|
320
|
+
* Refuse unless the editor's buffer under `uri`, at its own `version`, holds
|
|
321
|
+
* the synced text, so a save the editor asks for persists what it shows.
|
|
322
|
+
* The editor's version counts its own buffer and the store's counts the
|
|
323
|
+
* synced text, so neither stands in for the other: `version` has to be the
|
|
324
|
+
* one the editor last declared, and the shadow has to know the buffer to
|
|
325
|
+
* hold the store's current version, which a push in flight breaks.
|
|
326
|
+
*
|
|
327
|
+
* A refusal is a {@link ConflictError} based on the store version the buffer
|
|
328
|
+
* last held, or on {@link STALE_VERSION} when it never held one or `version`
|
|
329
|
+
* names a buffer the editor never declared. It is a
|
|
330
|
+
* {@link DocumentNotOpenError} when the editor does not have `uri` open, or
|
|
331
|
+
* a delete of it is under way, which a save landing before the deletion
|
|
332
|
+
* build would undo by writing the file back.
|
|
333
|
+
*/
|
|
334
|
+
assertLanguageClientHolds(uri: DocumentUri, version: number): void;
|
|
319
335
|
/**
|
|
320
336
|
* The text the store holds for `uri`: an open document's, or for a closed
|
|
321
337
|
* one, the clean text its version sequence left off at, which for a deleted
|
|
@@ -606,7 +622,8 @@ export declare class HydraniumTextDocuments<T extends TextDocument = TextDocumen
|
|
|
606
622
|
* didChange paths from the LSP language client already auto-track the
|
|
607
623
|
* shadow. A seed for a URI the client has not opened is kept but changes no
|
|
608
624
|
* push, since nothing is pushed there; its open replaces it with the text it
|
|
609
|
-
* declares.
|
|
625
|
+
* declares. `text` other than the synced text refuses the editor's saves
|
|
626
|
+
* until the editor holds the synced text again.
|
|
610
627
|
*/
|
|
611
628
|
setLanguageClientText(uri: DocumentUri, text: string): void;
|
|
612
629
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-text-documents.d.ts","sourceRoot":"","sources":["../../src/documents/hydranium-text-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAalF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACJ,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EACf,OAAO,EACP,KAAK,KAAK,EACV,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAG5B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,QAAQ,EACb,KAAK,0BAA0B,EACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,KAAK,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACzH,OAAO,EACJ,KAAK,YAAY,EACjB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"hydranium-text-documents.d.ts","sourceRoot":"","sources":["../../src/documents/hydranium-text-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ import { NormalizedTextDocuments } from '@hydranium/langium/lsp';
|
|
|
21
21
|
import { UriUtils } from '@hydranium/langium';
|
|
22
22
|
import { Emitter, OptionalVersionedTextDocumentIdentifier, TextDocumentEdit, TextDocumentSyncKind } from 'vscode-languageserver';
|
|
23
23
|
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
24
|
-
import { asLanguageClientUri, DisposableCollection, STALE_VERSION, UNRECORDED_VERSION, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
24
|
+
import { asLanguageClientUri, asModelVersion, ConflictError, DisposableCollection, DocumentNotOpenError, STALE_BASE_VERSION_SAVE, STALE_VERSION, UNRECORDED_VERSION, describeError, describeErrorWithStack } from '@hydranium/protocol';
|
|
25
25
|
import { LANGUAGE_CLIENT_ID } from './client-ids.js';
|
|
26
26
|
import { INTEGRITY_CLIENT_ID } from '../langium/integrity/integrity-rule.js';
|
|
27
27
|
import { ClientSessionRegistry } from './client-session-registry.js';
|
|
@@ -282,7 +282,7 @@ export class HydraniumTextDocuments extends NormalizedTextDocuments {
|
|
|
282
282
|
const committed = this.commitChange(uri, document, verdict.kind === 'direct' ? changes : [{ text: verdict.text }], clientId);
|
|
283
283
|
document = committed.document;
|
|
284
284
|
if (editor) {
|
|
285
|
-
this.languageClientShadow.setLanguageClientText(clientUri, document.getText());
|
|
285
|
+
this.languageClientShadow.setLanguageClientText(clientUri, document.getText(), document.version);
|
|
286
286
|
// Content-identical echo: the editor is echoing text we already had.
|
|
287
287
|
// The model is unchanged, so skip the rebuild. Restricted to the
|
|
288
288
|
// editor: a ModelService-authored change is never skipped.
|
|
@@ -565,14 +565,17 @@ export class HydraniumTextDocuments extends NormalizedTextDocuments {
|
|
|
565
565
|
}
|
|
566
566
|
this.resolveDeferredRelease(uri, clientId);
|
|
567
567
|
let document = this.__syncedDocuments.get(uri);
|
|
568
|
+
const editor = clientId === LANGUAGE_CLIENT_ID;
|
|
568
569
|
// The client's declared text, never the synced document: staged
|
|
569
570
|
// content this open consumes leaves the two different, and a baseline
|
|
570
571
|
// asserting the client already holds it suppresses the one sync that
|
|
571
572
|
// would deliver it. On an attach, another client may already have
|
|
572
573
|
// changed the synced text, so the baseline is equality-only; a refresh
|
|
573
|
-
// pushing the full text would dirty the file on open.
|
|
574
|
-
|
|
575
|
-
|
|
574
|
+
// pushing the full text would dirty the file on open. A first open's
|
|
575
|
+
// version is known only once its document is made, below.
|
|
576
|
+
if (editor) {
|
|
577
|
+
const held = document?.getText() === td.text ? document.version : undefined;
|
|
578
|
+
this.languageClientShadow.addOpen(uri, this.toLanguageClientUri(td.uri), td.version, td.text, document === undefined, held);
|
|
576
579
|
}
|
|
577
580
|
if (this.isOpenInClient(uri, clientId)) {
|
|
578
581
|
// A repeat open, or the editor's second URI for the file, e.g. a
|
|
@@ -589,6 +592,10 @@ export class HydraniumTextDocuments extends NormalizedTextDocuments {
|
|
|
589
592
|
const text = pendingText ?? td.text;
|
|
590
593
|
const source = pendingText ? ', source=pending' : '';
|
|
591
594
|
const version = this.textLedger.openingVersion(uri, text) ?? this.builtRootOpeningVersion(uri, text) ?? td.version;
|
|
595
|
+
if (editor && text === td.text) {
|
|
596
|
+
// What `addOpen` already recorded, now with the version it is held at.
|
|
597
|
+
this.languageClientShadow.setLanguageClientText(this.toLanguageClientUri(td.uri), text, version);
|
|
598
|
+
}
|
|
592
599
|
this.log(uri, `Open document: Version ${version} by ${this.formatClientId(clientId)} [first client${source}]`);
|
|
593
600
|
document = this.create(uri, td.languageId, version, text);
|
|
594
601
|
this.commitText(uri, document, clientId);
|
|
@@ -721,6 +728,37 @@ export class HydraniumTextDocuments extends NormalizedTextDocuments {
|
|
|
721
728
|
openedVersion(uri) {
|
|
722
729
|
return this.__openedVersions.get(this.documentKey(uri));
|
|
723
730
|
}
|
|
731
|
+
/**
|
|
732
|
+
* Refuse unless the editor's buffer under `uri`, at its own `version`, holds
|
|
733
|
+
* the synced text, so a save the editor asks for persists what it shows.
|
|
734
|
+
* The editor's version counts its own buffer and the store's counts the
|
|
735
|
+
* synced text, so neither stands in for the other: `version` has to be the
|
|
736
|
+
* one the editor last declared, and the shadow has to know the buffer to
|
|
737
|
+
* hold the store's current version, which a push in flight breaks.
|
|
738
|
+
*
|
|
739
|
+
* A refusal is a {@link ConflictError} based on the store version the buffer
|
|
740
|
+
* last held, or on {@link STALE_VERSION} when it never held one or `version`
|
|
741
|
+
* names a buffer the editor never declared. It is a
|
|
742
|
+
* {@link DocumentNotOpenError} when the editor does not have `uri` open, or
|
|
743
|
+
* a delete of it is under way, which a save landing before the deletion
|
|
744
|
+
* build would undo by writing the file back.
|
|
745
|
+
*/
|
|
746
|
+
assertLanguageClientHolds(uri, version) {
|
|
747
|
+
const key = this.documentKey(uri);
|
|
748
|
+
const clientUri = this.toLanguageClientUri(uri);
|
|
749
|
+
const declared = this.languageClientShadow.declaredVersion(key, clientUri);
|
|
750
|
+
const document = this.__syncedDocuments.get(key);
|
|
751
|
+
if (declared === undefined || document === undefined || this.services.workspace.AstDocumentManager.isDeleting(key)) {
|
|
752
|
+
throw new DocumentNotOpenError(uri, LANGUAGE_CLIENT_ID);
|
|
753
|
+
}
|
|
754
|
+
const held = declared === version ? this.languageClientShadow.heldVersion(key, clientUri) : undefined;
|
|
755
|
+
if (held !== document.version) {
|
|
756
|
+
const base = held ?? STALE_VERSION;
|
|
757
|
+
this.logUri(key, `Refuse editor save: buffer v${version} holds text v${base}, store holds v${document.version}`, 'debug');
|
|
758
|
+
// A snapshot, as the brand means: recorded when the buffer held that text, not read live.
|
|
759
|
+
throw new ConflictError(uri, asModelVersion(base), document.version, STALE_BASE_VERSION_SAVE);
|
|
760
|
+
}
|
|
761
|
+
}
|
|
724
762
|
/**
|
|
725
763
|
* The text the store holds for `uri`: an open document's, or for a closed
|
|
726
764
|
* one, the clean text its version sequence left off at, which for a deleted
|
|
@@ -1232,10 +1270,13 @@ export class HydraniumTextDocuments extends NormalizedTextDocuments {
|
|
|
1232
1270
|
* didChange paths from the LSP language client already auto-track the
|
|
1233
1271
|
* shadow. A seed for a URI the client has not opened is kept but changes no
|
|
1234
1272
|
* push, since nothing is pushed there; its open replaces it with the text it
|
|
1235
|
-
* declares.
|
|
1273
|
+
* declares. `text` other than the synced text refuses the editor's saves
|
|
1274
|
+
* until the editor holds the synced text again.
|
|
1236
1275
|
*/
|
|
1237
1276
|
setLanguageClientText(uri, text) {
|
|
1238
|
-
this.
|
|
1277
|
+
const document = this.get(uri);
|
|
1278
|
+
const held = document?.getText() === text ? document.version : undefined;
|
|
1279
|
+
this.languageClientShadow.setLanguageClientText(this.toLanguageClientUri(uri), text, held);
|
|
1239
1280
|
}
|
|
1240
1281
|
/**
|
|
1241
1282
|
* Drop the shadow baseline for a URI; the next applyEditToLanguageClient
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydranium-text-documents.js","sourceRoot":"","sources":["../../src/documents/hydranium-text-documents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hydranium-text-documents.js","sourceRoot":"","sources":["../../src/documents/hydranium-text-documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
|
-
import { type CanonicalUri, type LanguageClientUri, type Tracer } from '@hydranium/protocol';
|
|
9
|
+
import { type CanonicalUri, type LanguageClientUri, type TextVersion, type Tracer } from '@hydranium/protocol';
|
|
10
10
|
import { type TextDocumentsConfiguration, type TextEdit } from 'vscode-languageserver';
|
|
11
11
|
import { TextDocument, type TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument';
|
|
12
12
|
/**
|
|
@@ -92,12 +92,19 @@ export interface LanguageClientShadow {
|
|
|
92
92
|
* the store's first open of `key`: that text becomes the diff baseline;
|
|
93
93
|
* otherwise there is none, since a buffer opened from disk can lag the
|
|
94
94
|
* synced text, and a push of other text is a full replace. Either replaces
|
|
95
|
-
* what was tracked for `clientUri` before the open.
|
|
96
|
-
* is
|
|
95
|
+
* what was tracked for `clientUri` before the open. `heldVersion` is the
|
|
96
|
+
* store version `text` is held at, `undefined` when the store holds other
|
|
97
|
+
* text. A no-op when this URI is already open.
|
|
97
98
|
*/
|
|
98
|
-
addOpen(key: CanonicalUri, clientUri: LanguageClientUri, version: number, text: string, firstOpen: boolean): void;
|
|
99
|
+
addOpen(key: CanonicalUri, clientUri: LanguageClientUri, version: number, text: string, firstOpen: boolean, heldVersion: TextVersion | undefined): void;
|
|
99
100
|
/** The version the client last declared for `key` under `clientUri`; `undefined` when it never opened it there. */
|
|
100
101
|
declaredVersion(key: CanonicalUri, clientUri: LanguageClientUri): number | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* The store version whose text the client was last known to hold under
|
|
104
|
+
* `clientUri`, behind the store's while a push is in flight; `undefined`
|
|
105
|
+
* when it has not held the store's text there since its open.
|
|
106
|
+
*/
|
|
107
|
+
heldVersion(key: CanonicalUri, clientUri: LanguageClientUri): TextVersion | undefined;
|
|
101
108
|
/**
|
|
102
109
|
* Take `version` as the client's newest for `clientUri`, and classify its
|
|
103
110
|
* change against `document`, the synced document. The caller has already
|
|
@@ -105,11 +112,16 @@ export interface LanguageClientShadow {
|
|
|
105
112
|
* commits the change and reports the synced text through
|
|
106
113
|
* {@link LanguageClientShadow.setLanguageClientText}: a `direct` change advances what
|
|
107
114
|
* the client was last heard to hold only through that call, and without it
|
|
108
|
-
* the next change is rebuilt against a stale text.
|
|
115
|
+
* the next change is rebuilt against a stale text. An `echo` that brings
|
|
116
|
+
* the client to `document`'s text records it as held at `document`'s version.
|
|
109
117
|
*/
|
|
110
118
|
acceptChange(key: CanonicalUri, clientUri: LanguageClientUri, version: number, document: TextDocument, changes: TextDocumentContentChangeEvent[]): LanguageClientChangeVerdict;
|
|
111
|
-
/**
|
|
112
|
-
|
|
119
|
+
/**
|
|
120
|
+
* The client holds `text` with nothing in flight: the store's text at
|
|
121
|
+
* `heldVersion`, or other text when it is `undefined`, which refuses the
|
|
122
|
+
* client's saves until it holds the store's text again.
|
|
123
|
+
*/
|
|
124
|
+
setLanguageClientText(clientUri: LanguageClientUri, text: string, heldVersion: TextVersion | undefined): void;
|
|
113
125
|
/** The client closed `clientUri`; what it held there is forgotten. */
|
|
114
126
|
removeOpen(key: CanonicalUri, clientUri: LanguageClientUri): void;
|
|
115
127
|
/** Whether the client has `key` open: under `clientUri` when given, else under any URI. */
|
|
@@ -161,6 +173,8 @@ export declare class DefaultLanguageClientShadow<T extends TextDocument = TextDo
|
|
|
161
173
|
*/
|
|
162
174
|
protected readonly heardTexts: Map<LanguageClientUri, string>;
|
|
163
175
|
protected readonly pending: Map<LanguageClientUri, PendingLanguageClientPush[]>;
|
|
176
|
+
/** {@link LanguageClientShadow.heldVersion}, kept beside {@link heardTexts}, which it versions. */
|
|
177
|
+
protected readonly heldVersions: Map<LanguageClientUri, number>;
|
|
164
178
|
/**
|
|
165
179
|
* @param configuration the store's text-document factories, the store's own
|
|
166
180
|
* `create` and `update`. Probes go through them rather than `TextDocument`
|
|
@@ -169,8 +183,9 @@ export declare class DefaultLanguageClientShadow<T extends TextDocument = TextDo
|
|
|
169
183
|
* refuses a document it did not create.
|
|
170
184
|
*/
|
|
171
185
|
constructor(configuration: TextDocumentsConfiguration<T>, tracer: Tracer);
|
|
172
|
-
addOpen(key: CanonicalUri, clientUri: LanguageClientUri, version: number, text: string, firstOpen: boolean): void;
|
|
186
|
+
addOpen(key: CanonicalUri, clientUri: LanguageClientUri, version: number, text: string, firstOpen: boolean, heldVersion: TextVersion | undefined): void;
|
|
173
187
|
declaredVersion(key: CanonicalUri, clientUri: LanguageClientUri): number | undefined;
|
|
188
|
+
heldVersion(key: CanonicalUri, clientUri: LanguageClientUri): TextVersion | undefined;
|
|
174
189
|
acceptChange(key: CanonicalUri, clientUri: LanguageClientUri, version: number, document: TextDocument, changes: TextDocumentContentChangeEvent[]): LanguageClientChangeVerdict;
|
|
175
190
|
/**
|
|
176
191
|
* Reconstruct the client's resulting buffer against what it was last heard
|
|
@@ -188,7 +203,8 @@ export declare class DefaultLanguageClientShadow<T extends TextDocument = TextDo
|
|
|
188
203
|
* holds only in-flight ones.
|
|
189
204
|
*/
|
|
190
205
|
protected classify(clientUri: LanguageClientUri, document: TextDocument, changes: TextDocumentContentChangeEvent[]): LanguageClientChangeVerdict;
|
|
191
|
-
setLanguageClientText(clientUri: LanguageClientUri, text: string): void;
|
|
206
|
+
setLanguageClientText(clientUri: LanguageClientUri, text: string, heldVersion: TextVersion | undefined): void;
|
|
207
|
+
protected setHeldVersion(clientUri: LanguageClientUri, heldVersion: TextVersion | undefined): void;
|
|
192
208
|
removeOpen(key: CanonicalUri, clientUri: LanguageClientUri): void;
|
|
193
209
|
isOpen(key: CanonicalUri, clientUri?: LanguageClientUri): boolean;
|
|
194
210
|
removeAllOpens(key: CanonicalUri): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-client-shadow.d.ts","sourceRoot":"","sources":["../../src/documents/language-client-shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAY,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"language-client-shadow.d.ts","sourceRoot":"","sources":["../../src/documents/language-client-shadow.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,8 @@ export class DefaultLanguageClientShadow {
|
|
|
46
46
|
*/
|
|
47
47
|
heardTexts = new Map();
|
|
48
48
|
pending = new Map();
|
|
49
|
+
/** {@link LanguageClientShadow.heldVersion}, kept beside {@link heardTexts}, which it versions. */
|
|
50
|
+
heldVersions = new Map();
|
|
49
51
|
/**
|
|
50
52
|
* @param configuration the store's text-document factories, the store's own
|
|
51
53
|
* `create` and `update`. Probes go through them rather than `TextDocument`
|
|
@@ -57,7 +59,7 @@ export class DefaultLanguageClientShadow {
|
|
|
57
59
|
this.configuration = configuration;
|
|
58
60
|
this.tracer = tracer;
|
|
59
61
|
}
|
|
60
|
-
addOpen(key, clientUri, version, text, firstOpen) {
|
|
62
|
+
addOpen(key, clientUri, version, text, firstOpen, heldVersion) {
|
|
61
63
|
let uris = this.opens.get(key);
|
|
62
64
|
if (uris?.has(clientUri)) {
|
|
63
65
|
return;
|
|
@@ -71,6 +73,7 @@ export class DefaultLanguageClientShadow {
|
|
|
71
73
|
// against it splices text the client does not hold.
|
|
72
74
|
this.invalidateLanguageClientText(clientUri);
|
|
73
75
|
this.heardTexts.set(clientUri, text);
|
|
76
|
+
this.setHeldVersion(clientUri, heldVersion);
|
|
74
77
|
if (firstOpen) {
|
|
75
78
|
this.baselines.set(clientUri, text);
|
|
76
79
|
}
|
|
@@ -78,12 +81,20 @@ export class DefaultLanguageClientShadow {
|
|
|
78
81
|
declaredVersion(key, clientUri) {
|
|
79
82
|
return this.opens.get(key)?.get(clientUri)?.declaredVersion;
|
|
80
83
|
}
|
|
84
|
+
heldVersion(key, clientUri) {
|
|
85
|
+
return this.isOpen(key, clientUri) ? this.heldVersions.get(clientUri) : undefined;
|
|
86
|
+
}
|
|
81
87
|
acceptChange(key, clientUri, version, document, changes) {
|
|
82
88
|
const state = this.opens.get(key)?.get(clientUri);
|
|
83
89
|
if (state) {
|
|
84
90
|
state.declaredVersion = version;
|
|
85
91
|
}
|
|
86
|
-
|
|
92
|
+
const verdict = this.classify(clientUri, document, changes);
|
|
93
|
+
// The echo of a push the store has since moved past keeps the older record.
|
|
94
|
+
if (verdict.kind === 'echo' && this.heardTexts.get(clientUri) === document.getText()) {
|
|
95
|
+
this.heldVersions.set(clientUri, document.version);
|
|
96
|
+
}
|
|
97
|
+
return verdict;
|
|
87
98
|
}
|
|
88
99
|
/**
|
|
89
100
|
* Reconstruct the client's resulting buffer against what it was last heard
|
|
@@ -124,16 +135,26 @@ export class DefaultLanguageClientShadow {
|
|
|
124
135
|
}
|
|
125
136
|
return heard === document.getText() ? { kind: 'direct' } : { kind: 'divergent', text: reconstructed };
|
|
126
137
|
}
|
|
127
|
-
setLanguageClientText(clientUri, text) {
|
|
138
|
+
setLanguageClientText(clientUri, text, heldVersion) {
|
|
128
139
|
this.baselines.set(clientUri, text);
|
|
129
140
|
this.heardTexts.set(clientUri, text);
|
|
130
141
|
this.pending.delete(clientUri);
|
|
142
|
+
this.setHeldVersion(clientUri, heldVersion);
|
|
143
|
+
}
|
|
144
|
+
setHeldVersion(clientUri, heldVersion) {
|
|
145
|
+
if (heldVersion === undefined) {
|
|
146
|
+
this.heldVersions.delete(clientUri);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
this.heldVersions.set(clientUri, heldVersion);
|
|
150
|
+
}
|
|
131
151
|
}
|
|
132
152
|
removeOpen(key, clientUri) {
|
|
133
153
|
const uris = this.opens.get(key);
|
|
134
154
|
if (uris?.delete(clientUri)) {
|
|
135
155
|
this.invalidateLanguageClientText(clientUri);
|
|
136
156
|
this.heardTexts.delete(clientUri);
|
|
157
|
+
this.heldVersions.delete(clientUri);
|
|
137
158
|
if (uris.size === 0) {
|
|
138
159
|
this.opens.delete(key);
|
|
139
160
|
}
|
|
@@ -147,6 +168,7 @@ export class DefaultLanguageClientShadow {
|
|
|
147
168
|
for (const clientUri of this.opens.get(key)?.keys() ?? []) {
|
|
148
169
|
this.invalidateLanguageClientText(clientUri);
|
|
149
170
|
this.heardTexts.delete(clientUri);
|
|
171
|
+
this.heldVersions.delete(clientUri);
|
|
150
172
|
}
|
|
151
173
|
this.opens.delete(key);
|
|
152
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-client-shadow.js","sourceRoot":"","sources":["../../src/documents/language-client-shadow.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAA6C,QAAQ,
|
|
1
|
+
{"version":3,"file":"language-client-shadow.js","sourceRoot":"","sources":["../../src/documents/language-client-shadow.ts"],"names":[],"mappings":"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"}
|
package/lib/lsp/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './semantic-token-provider.js';
|
|
|
14
14
|
export * from './language-module.js';
|
|
15
15
|
export * from './shared-module.js';
|
|
16
16
|
export * from './hydranium-document-update-handler.js';
|
|
17
|
+
export * from './save-text-document.js';
|
|
17
18
|
/**
|
|
18
19
|
* The LSP server entry point, so adopters get a unified import surface for the
|
|
19
20
|
* head: framework overrides + the start function live behind one
|
package/lib/lsp/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AAExC;;;;;;GAMG;AACH,cAAc,4BAA4B,CAAC"}
|
package/lib/lsp/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export * from './semantic-token-provider.js';
|
|
|
14
14
|
export * from './language-module.js';
|
|
15
15
|
export * from './shared-module.js';
|
|
16
16
|
export * from './hydranium-document-update-handler.js';
|
|
17
|
+
export * from './save-text-document.js';
|
|
17
18
|
/**
|
|
18
19
|
* The LSP server entry point, so adopters get a unified import surface for the
|
|
19
20
|
* head: framework overrides + the start function live behind one
|
package/lib/lsp/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lsp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,cAAc,+CAA+C,CAAC;AAC9D,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AAExC;;;;;;GAMG;AACH,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { type Connection, type Disposable, type Features } from 'vscode-languageserver';
|
|
10
|
+
import type { ServerSharedServices } from '../langium/module.js';
|
|
11
|
+
/**
|
|
12
|
+
* Advertise {@link SaveTextDocumentRequest} in the `initialize` answer, as
|
|
13
|
+
* `experimental[SaveTextDocumentRequest.method]`, LSP's place for a server
|
|
14
|
+
* feature it does not define. Supply it where the connection is created, with
|
|
15
|
+
* {@link listenToSaveTextDocument} on that connection: only a host whose files
|
|
16
|
+
* the server holds answers the request, and a client takes the entry as the
|
|
17
|
+
* promise that it does.
|
|
18
|
+
*/
|
|
19
|
+
export declare function withSaveTextDocumentCapability<T extends Features>(features: T): T;
|
|
20
|
+
/**
|
|
21
|
+
* Answer {@link SaveTextDocumentRequest} on `connection`: persist the store's
|
|
22
|
+
* text once `TextDocuments.assertLanguageClientHolds` finds the editor's
|
|
23
|
+
* buffer holds it. The gate and the manager's taking of the text are one
|
|
24
|
+
* synchronous step, so no change can land between them.
|
|
25
|
+
*
|
|
26
|
+
* A refusal crosses the wire as the data head's do, its message rendered by
|
|
27
|
+
* `MessageRenderer` and rebuilt on the connection's copy of `vscode-jsonrpc`,
|
|
28
|
+
* which keeps the code only of its own copy's errors.
|
|
29
|
+
*/
|
|
30
|
+
export declare function listenToSaveTextDocument(connection: Connection, shared: ServerSharedServices): Disposable;
|
|
31
|
+
//# sourceMappingURL=save-text-document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-text-document.d.ts","sourceRoot":"","sources":["../../src/lsp/save-text-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAEJ,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EAIf,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,QAAQ,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CASjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,oBAAoB,GAAG,UAAU,CAWzG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
import { isResponseError, SaveTextDocumentRequest } from '@hydranium/protocol';
|
|
10
|
+
import { combineWorkspaceFeatures, ResponseError } from 'vscode-languageserver';
|
|
11
|
+
import { LANGUAGE_CLIENT_ID } from '../documents/client-ids.js';
|
|
12
|
+
/**
|
|
13
|
+
* Advertise {@link SaveTextDocumentRequest} in the `initialize` answer, as
|
|
14
|
+
* `experimental[SaveTextDocumentRequest.method]`, LSP's place for a server
|
|
15
|
+
* feature it does not define. Supply it where the connection is created, with
|
|
16
|
+
* {@link listenToSaveTextDocument} on that connection: only a host whose files
|
|
17
|
+
* the server holds answers the request, and a client takes the entry as the
|
|
18
|
+
* promise that it does.
|
|
19
|
+
*/
|
|
20
|
+
export function withSaveTextDocumentCapability(features) {
|
|
21
|
+
const advertise = Base => class extends Base {
|
|
22
|
+
fillServerCapabilities(capabilities) {
|
|
23
|
+
super.fillServerCapabilities(capabilities);
|
|
24
|
+
capabilities.experimental = { ...capabilities.experimental, [SaveTextDocumentRequest.method]: true };
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
return { ...features, workspace: features.workspace ? combineWorkspaceFeatures(features.workspace, advertise) : advertise };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Answer {@link SaveTextDocumentRequest} on `connection`: persist the store's
|
|
31
|
+
* text once `TextDocuments.assertLanguageClientHolds` finds the editor's
|
|
32
|
+
* buffer holds it. The gate and the manager's taking of the text are one
|
|
33
|
+
* synchronous step, so no change can land between them.
|
|
34
|
+
*
|
|
35
|
+
* A refusal crosses the wire as the data head's do, its message rendered by
|
|
36
|
+
* `MessageRenderer` and rebuilt on the connection's copy of `vscode-jsonrpc`,
|
|
37
|
+
* which keeps the code only of its own copy's errors.
|
|
38
|
+
*/
|
|
39
|
+
export function listenToSaveTextDocument(connection, shared) {
|
|
40
|
+
return connection.onRequest(SaveTextDocumentRequest.method, async (params) => {
|
|
41
|
+
const { uri, version } = params.textDocument;
|
|
42
|
+
try {
|
|
43
|
+
shared.workspace.TextDocuments.assertLanguageClientHolds(uri, version);
|
|
44
|
+
await shared.workspace.AstDocumentManager.save(uri, LANGUAGE_CLIENT_ID);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw isResponseError(error) ? new ResponseError(error.code, shared.MessageRenderer.renderError(error), error.data) : error;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=save-text-document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-text-document.js","sourceRoot":"","sources":["../../src/lsp/save-text-document.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,eAAe,EAA+B,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC5G,OAAO,EACJ,wBAAwB,EAIxB,aAAa,EAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE;;;;;;;GAOG;AACH,MAAM,UAAU,8BAA8B,CAAqB,QAAW;IAC3E,MAAM,SAAS,GAA6B,IAAI,CAAC,EAAE,CAChD,KAAM,SAAQ,IAAI;QACN,sBAAsB,CAAC,YAAgC;YAC7D,KAAK,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC3C,YAAY,CAAC,YAAY,GAAG,EAAE,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QACxG,CAAC;KACH,CAAC;IACL,OAAO,EAAE,GAAG,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC/H,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAsB,EAAE,MAA4B;IAC1F,OAAO,UAAU,CAAC,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,MAA8B,EAAE,EAAE;QAClG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC;YACF,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACvE,MAAM,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACvB,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/H,CAAC;QACD,OAAO,IAAI,CAAC;IACf,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hydranium/core",
|
|
3
|
-
"version": "1.0.0-next.
|
|
3
|
+
"version": "1.0.0-next.306",
|
|
4
4
|
"description": "Foundational runtime of the hydranium framework: AST coordination layer (services, integrity, AST extension, serialization, multi-client documents) plus the LSP textual head at the /lsp subpath. Consumed by protocol-head packages (@hydranium/data-server, @hydranium/glsp-server).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ast",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
"diff": "^5.2.0"
|
|
88
88
|
},
|
|
89
89
|
"devDependencies": {
|
|
90
|
-
"@hydranium/langium": "1.0.0-next.
|
|
91
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
90
|
+
"@hydranium/langium": "1.0.0-next.306",
|
|
91
|
+
"@hydranium/protocol": "1.0.0-next.306",
|
|
92
92
|
"@playwright/test": "^1.40.0",
|
|
93
93
|
"@types/diff": "^5.2.0",
|
|
94
94
|
"fake-indexeddb": "^6.2.5",
|
|
@@ -101,8 +101,8 @@
|
|
|
101
101
|
"vscode-languageserver-types": "^3.17.5"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
|
104
|
-
"@hydranium/langium": "1.0.0-next.
|
|
105
|
-
"@hydranium/protocol": "1.0.0-next.
|
|
104
|
+
"@hydranium/langium": "1.0.0-next.306",
|
|
105
|
+
"@hydranium/protocol": "1.0.0-next.306",
|
|
106
106
|
"@playwright/test": "^1.40.0",
|
|
107
107
|
"vscode-jsonrpc": "^9.0.0",
|
|
108
108
|
"vscode-languageserver": "~10.0.1",
|
|
@@ -12,6 +12,7 @@ import { createConnection, ProposedFeatures, type Connection } from 'vscode-lang
|
|
|
12
12
|
import type { ServerSharedServices } from '../langium/module.js';
|
|
13
13
|
import { withHydraniumLspFeatures } from '../lsp/connection-features.js';
|
|
14
14
|
import { lspLatencyOptions } from '../lsp/lsp-latency.js';
|
|
15
|
+
import { listenToSaveTextDocument, withSaveTextDocumentCapability } from '../lsp/save-text-document.js';
|
|
15
16
|
import { startLanguageServer } from '../lsp/start-language-server.js';
|
|
16
17
|
|
|
17
18
|
export interface WorkerLanguageServerOptions {
|
|
@@ -30,6 +31,9 @@ export interface WorkerLanguageServerOptions {
|
|
|
30
31
|
* listens. The page's end of the port closing ends only this head's
|
|
31
32
|
* connection, not the worker the other heads share, so the language client's
|
|
32
33
|
* documents are closed here, each reverting as its last close does.
|
|
34
|
+
*
|
|
35
|
+
* The worker holds the files, so the page cannot write them and `didSave`
|
|
36
|
+
* reports nothing: the head answers and advertises `SaveTextDocumentRequest`.
|
|
33
37
|
*/
|
|
34
38
|
export function startLanguageServerInWorker<TShared extends ServerSharedServices>(
|
|
35
39
|
port: TransferredMessagePort,
|
|
@@ -39,12 +43,13 @@ export function startLanguageServerInWorker<TShared extends ServerSharedServices
|
|
|
39
43
|
// Both ends use `createMessagePortTransport`; see it for why.
|
|
40
44
|
const transport = createMessagePortTransport(port);
|
|
41
45
|
const connection = createConnection(
|
|
42
|
-
withHydraniumLspFeatures(ProposedFeatures.all),
|
|
46
|
+
withSaveTextDocumentCapability(withHydraniumLspFeatures(ProposedFeatures.all)),
|
|
43
47
|
transport.reader,
|
|
44
48
|
transport.writer,
|
|
45
49
|
lspLatencyOptions(options.latency)
|
|
46
50
|
);
|
|
47
51
|
const shared = compose(connection);
|
|
52
|
+
listenToSaveTextDocument(connection, shared);
|
|
48
53
|
startLanguageServer(shared);
|
|
49
54
|
transport.reader.onClose(() => void shared.workspace.TextDocuments.closeLanguageClientDocuments());
|
|
50
55
|
return shared;
|
|
@@ -49,7 +49,11 @@ import {
|
|
|
49
49
|
type CanonicalUri,
|
|
50
50
|
type LanguageClientUri,
|
|
51
51
|
asLanguageClientUri,
|
|
52
|
+
asModelVersion,
|
|
53
|
+
ConflictError,
|
|
52
54
|
DisposableCollection,
|
|
55
|
+
DocumentNotOpenError,
|
|
56
|
+
STALE_BASE_VERSION_SAVE,
|
|
53
57
|
type TextState,
|
|
54
58
|
type TextVersion,
|
|
55
59
|
STALE_VERSION,
|
|
@@ -460,7 +464,7 @@ export class HydraniumTextDocuments<T extends TextDocument = TextDocument> exten
|
|
|
460
464
|
const committed = this.commitChange(uri, document, verdict.kind === 'direct' ? changes : [{ text: verdict.text }], clientId);
|
|
461
465
|
document = committed.document;
|
|
462
466
|
if (editor) {
|
|
463
|
-
this.languageClientShadow.setLanguageClientText(clientUri, document.getText());
|
|
467
|
+
this.languageClientShadow.setLanguageClientText(clientUri, document.getText(), document.version);
|
|
464
468
|
// Content-identical echo: the editor is echoing text we already had.
|
|
465
469
|
// The model is unchanged, so skip the rebuild. Restricted to the
|
|
466
470
|
// editor: a ModelService-authored change is never skipped.
|
|
@@ -772,14 +776,17 @@ export class HydraniumTextDocuments<T extends TextDocument = TextDocument> exten
|
|
|
772
776
|
}
|
|
773
777
|
this.resolveDeferredRelease(uri, clientId);
|
|
774
778
|
let document = this.__syncedDocuments.get(uri);
|
|
779
|
+
const editor = clientId === LANGUAGE_CLIENT_ID;
|
|
775
780
|
// The client's declared text, never the synced document: staged
|
|
776
781
|
// content this open consumes leaves the two different, and a baseline
|
|
777
782
|
// asserting the client already holds it suppresses the one sync that
|
|
778
783
|
// would deliver it. On an attach, another client may already have
|
|
779
784
|
// changed the synced text, so the baseline is equality-only; a refresh
|
|
780
|
-
// pushing the full text would dirty the file on open.
|
|
781
|
-
|
|
782
|
-
|
|
785
|
+
// pushing the full text would dirty the file on open. A first open's
|
|
786
|
+
// version is known only once its document is made, below.
|
|
787
|
+
if (editor) {
|
|
788
|
+
const held = document?.getText() === td.text ? document.version : undefined;
|
|
789
|
+
this.languageClientShadow.addOpen(uri, this.toLanguageClientUri(td.uri), td.version, td.text, document === undefined, held);
|
|
783
790
|
}
|
|
784
791
|
if (this.isOpenInClient(uri, clientId)) {
|
|
785
792
|
// A repeat open, or the editor's second URI for the file, e.g. a
|
|
@@ -796,6 +803,10 @@ export class HydraniumTextDocuments<T extends TextDocument = TextDocument> exten
|
|
|
796
803
|
const text = pendingText ?? td.text;
|
|
797
804
|
const source = pendingText ? ', source=pending' : '';
|
|
798
805
|
const version = this.textLedger.openingVersion(uri, text) ?? this.builtRootOpeningVersion(uri, text) ?? td.version;
|
|
806
|
+
if (editor && text === td.text) {
|
|
807
|
+
// What `addOpen` already recorded, now with the version it is held at.
|
|
808
|
+
this.languageClientShadow.setLanguageClientText(this.toLanguageClientUri(td.uri), text, version);
|
|
809
|
+
}
|
|
799
810
|
this.log(uri, `Open document: Version ${version} by ${this.formatClientId(clientId)} [first client${source}]`);
|
|
800
811
|
document = this.create(uri, td.languageId, version, text);
|
|
801
812
|
this.commitText(uri, document, clientId);
|
|
@@ -943,6 +954,38 @@ export class HydraniumTextDocuments<T extends TextDocument = TextDocument> exten
|
|
|
943
954
|
return this.__openedVersions.get(this.documentKey(uri));
|
|
944
955
|
}
|
|
945
956
|
|
|
957
|
+
/**
|
|
958
|
+
* Refuse unless the editor's buffer under `uri`, at its own `version`, holds
|
|
959
|
+
* the synced text, so a save the editor asks for persists what it shows.
|
|
960
|
+
* The editor's version counts its own buffer and the store's counts the
|
|
961
|
+
* synced text, so neither stands in for the other: `version` has to be the
|
|
962
|
+
* one the editor last declared, and the shadow has to know the buffer to
|
|
963
|
+
* hold the store's current version, which a push in flight breaks.
|
|
964
|
+
*
|
|
965
|
+
* A refusal is a {@link ConflictError} based on the store version the buffer
|
|
966
|
+
* last held, or on {@link STALE_VERSION} when it never held one or `version`
|
|
967
|
+
* names a buffer the editor never declared. It is a
|
|
968
|
+
* {@link DocumentNotOpenError} when the editor does not have `uri` open, or
|
|
969
|
+
* a delete of it is under way, which a save landing before the deletion
|
|
970
|
+
* build would undo by writing the file back.
|
|
971
|
+
*/
|
|
972
|
+
assertLanguageClientHolds(uri: DocumentUri, version: number): void {
|
|
973
|
+
const key = this.documentKey(uri);
|
|
974
|
+
const clientUri = this.toLanguageClientUri(uri);
|
|
975
|
+
const declared = this.languageClientShadow.declaredVersion(key, clientUri);
|
|
976
|
+
const document = this.__syncedDocuments.get(key);
|
|
977
|
+
if (declared === undefined || document === undefined || this.services.workspace.AstDocumentManager.isDeleting(key)) {
|
|
978
|
+
throw new DocumentNotOpenError(uri, LANGUAGE_CLIENT_ID);
|
|
979
|
+
}
|
|
980
|
+
const held = declared === version ? this.languageClientShadow.heldVersion(key, clientUri) : undefined;
|
|
981
|
+
if (held !== document.version) {
|
|
982
|
+
const base = held ?? STALE_VERSION;
|
|
983
|
+
this.logUri(key, `Refuse editor save: buffer v${version} holds text v${base}, store holds v${document.version}`, 'debug');
|
|
984
|
+
// A snapshot, as the brand means: recorded when the buffer held that text, not read live.
|
|
985
|
+
throw new ConflictError(uri, asModelVersion(base), document.version, STALE_BASE_VERSION_SAVE);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
|
|
946
989
|
/**
|
|
947
990
|
* The text the store holds for `uri`: an open document's, or for a closed
|
|
948
991
|
* one, the clean text its version sequence left off at, which for a deleted
|
|
@@ -1485,10 +1528,13 @@ export class HydraniumTextDocuments<T extends TextDocument = TextDocument> exten
|
|
|
1485
1528
|
* didChange paths from the LSP language client already auto-track the
|
|
1486
1529
|
* shadow. A seed for a URI the client has not opened is kept but changes no
|
|
1487
1530
|
* push, since nothing is pushed there; its open replaces it with the text it
|
|
1488
|
-
* declares.
|
|
1531
|
+
* declares. `text` other than the synced text refuses the editor's saves
|
|
1532
|
+
* until the editor holds the synced text again.
|
|
1489
1533
|
*/
|
|
1490
1534
|
setLanguageClientText(uri: DocumentUri, text: string): void {
|
|
1491
|
-
this.
|
|
1535
|
+
const document = this.get(uri);
|
|
1536
|
+
const held = document?.getText() === text ? document.version : undefined;
|
|
1537
|
+
this.languageClientShadow.setLanguageClientText(this.toLanguageClientUri(uri), text, held);
|
|
1492
1538
|
}
|
|
1493
1539
|
|
|
1494
1540
|
/**
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* SPDX-License-Identifier: MIT
|
|
8
8
|
********************************************************************************/
|
|
9
9
|
|
|
10
|
-
import { type CanonicalUri, type LanguageClientUri, textHash, type Tracer } from '@hydranium/protocol';
|
|
10
|
+
import { type CanonicalUri, type LanguageClientUri, textHash, type TextVersion, type Tracer } from '@hydranium/protocol';
|
|
11
11
|
import { diffLines } from 'diff';
|
|
12
12
|
import { Range, type TextDocumentsConfiguration, type TextEdit, uinteger } from 'vscode-languageserver';
|
|
13
13
|
import { TextDocument, type TextDocumentContentChangeEvent } from 'vscode-languageserver-textdocument';
|
|
@@ -93,12 +93,26 @@ export interface LanguageClientShadow {
|
|
|
93
93
|
* the store's first open of `key`: that text becomes the diff baseline;
|
|
94
94
|
* otherwise there is none, since a buffer opened from disk can lag the
|
|
95
95
|
* synced text, and a push of other text is a full replace. Either replaces
|
|
96
|
-
* what was tracked for `clientUri` before the open.
|
|
97
|
-
* is
|
|
96
|
+
* what was tracked for `clientUri` before the open. `heldVersion` is the
|
|
97
|
+
* store version `text` is held at, `undefined` when the store holds other
|
|
98
|
+
* text. A no-op when this URI is already open.
|
|
98
99
|
*/
|
|
99
|
-
addOpen(
|
|
100
|
+
addOpen(
|
|
101
|
+
key: CanonicalUri,
|
|
102
|
+
clientUri: LanguageClientUri,
|
|
103
|
+
version: number,
|
|
104
|
+
text: string,
|
|
105
|
+
firstOpen: boolean,
|
|
106
|
+
heldVersion: TextVersion | undefined
|
|
107
|
+
): void;
|
|
100
108
|
/** The version the client last declared for `key` under `clientUri`; `undefined` when it never opened it there. */
|
|
101
109
|
declaredVersion(key: CanonicalUri, clientUri: LanguageClientUri): number | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* The store version whose text the client was last known to hold under
|
|
112
|
+
* `clientUri`, behind the store's while a push is in flight; `undefined`
|
|
113
|
+
* when it has not held the store's text there since its open.
|
|
114
|
+
*/
|
|
115
|
+
heldVersion(key: CanonicalUri, clientUri: LanguageClientUri): TextVersion | undefined;
|
|
102
116
|
/**
|
|
103
117
|
* Take `version` as the client's newest for `clientUri`, and classify its
|
|
104
118
|
* change against `document`, the synced document. The caller has already
|
|
@@ -106,7 +120,8 @@ export interface LanguageClientShadow {
|
|
|
106
120
|
* commits the change and reports the synced text through
|
|
107
121
|
* {@link LanguageClientShadow.setLanguageClientText}: a `direct` change advances what
|
|
108
122
|
* the client was last heard to hold only through that call, and without it
|
|
109
|
-
* the next change is rebuilt against a stale text.
|
|
123
|
+
* the next change is rebuilt against a stale text. An `echo` that brings
|
|
124
|
+
* the client to `document`'s text records it as held at `document`'s version.
|
|
110
125
|
*/
|
|
111
126
|
acceptChange(
|
|
112
127
|
key: CanonicalUri,
|
|
@@ -115,8 +130,12 @@ export interface LanguageClientShadow {
|
|
|
115
130
|
document: TextDocument,
|
|
116
131
|
changes: TextDocumentContentChangeEvent[]
|
|
117
132
|
): LanguageClientChangeVerdict;
|
|
118
|
-
/**
|
|
119
|
-
|
|
133
|
+
/**
|
|
134
|
+
* The client holds `text` with nothing in flight: the store's text at
|
|
135
|
+
* `heldVersion`, or other text when it is `undefined`, which refuses the
|
|
136
|
+
* client's saves until it holds the store's text again.
|
|
137
|
+
*/
|
|
138
|
+
setLanguageClientText(clientUri: LanguageClientUri, text: string, heldVersion: TextVersion | undefined): void;
|
|
120
139
|
/** The client closed `clientUri`; what it held there is forgotten. */
|
|
121
140
|
removeOpen(key: CanonicalUri, clientUri: LanguageClientUri): void;
|
|
122
141
|
/** Whether the client has `key` open: under `clientUri` when given, else under any URI. */
|
|
@@ -183,6 +202,8 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
183
202
|
*/
|
|
184
203
|
protected readonly heardTexts = new Map<LanguageClientUri, string>();
|
|
185
204
|
protected readonly pending = new Map<LanguageClientUri, PendingLanguageClientPush[]>();
|
|
205
|
+
/** {@link LanguageClientShadow.heldVersion}, kept beside {@link heardTexts}, which it versions. */
|
|
206
|
+
protected readonly heldVersions = new Map<LanguageClientUri, TextVersion>();
|
|
186
207
|
|
|
187
208
|
/**
|
|
188
209
|
* @param configuration the store's text-document factories, the store's own
|
|
@@ -196,7 +217,14 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
196
217
|
protected readonly tracer: Tracer
|
|
197
218
|
) {}
|
|
198
219
|
|
|
199
|
-
addOpen(
|
|
220
|
+
addOpen(
|
|
221
|
+
key: CanonicalUri,
|
|
222
|
+
clientUri: LanguageClientUri,
|
|
223
|
+
version: number,
|
|
224
|
+
text: string,
|
|
225
|
+
firstOpen: boolean,
|
|
226
|
+
heldVersion: TextVersion | undefined
|
|
227
|
+
): void {
|
|
200
228
|
let uris = this.opens.get(key);
|
|
201
229
|
if (uris?.has(clientUri)) {
|
|
202
230
|
return;
|
|
@@ -210,6 +238,7 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
210
238
|
// against it splices text the client does not hold.
|
|
211
239
|
this.invalidateLanguageClientText(clientUri);
|
|
212
240
|
this.heardTexts.set(clientUri, text);
|
|
241
|
+
this.setHeldVersion(clientUri, heldVersion);
|
|
213
242
|
if (firstOpen) {
|
|
214
243
|
this.baselines.set(clientUri, text);
|
|
215
244
|
}
|
|
@@ -219,6 +248,10 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
219
248
|
return this.opens.get(key)?.get(clientUri)?.declaredVersion;
|
|
220
249
|
}
|
|
221
250
|
|
|
251
|
+
heldVersion(key: CanonicalUri, clientUri: LanguageClientUri): TextVersion | undefined {
|
|
252
|
+
return this.isOpen(key, clientUri) ? this.heldVersions.get(clientUri) : undefined;
|
|
253
|
+
}
|
|
254
|
+
|
|
222
255
|
acceptChange(
|
|
223
256
|
key: CanonicalUri,
|
|
224
257
|
clientUri: LanguageClientUri,
|
|
@@ -230,7 +263,12 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
230
263
|
if (state) {
|
|
231
264
|
state.declaredVersion = version;
|
|
232
265
|
}
|
|
233
|
-
|
|
266
|
+
const verdict = this.classify(clientUri, document, changes);
|
|
267
|
+
// The echo of a push the store has since moved past keeps the older record.
|
|
268
|
+
if (verdict.kind === 'echo' && this.heardTexts.get(clientUri) === document.getText()) {
|
|
269
|
+
this.heldVersions.set(clientUri, document.version);
|
|
270
|
+
}
|
|
271
|
+
return verdict;
|
|
234
272
|
}
|
|
235
273
|
|
|
236
274
|
/**
|
|
@@ -277,10 +315,19 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
277
315
|
return heard === document.getText() ? { kind: 'direct' } : { kind: 'divergent', text: reconstructed };
|
|
278
316
|
}
|
|
279
317
|
|
|
280
|
-
setLanguageClientText(clientUri: LanguageClientUri, text: string): void {
|
|
318
|
+
setLanguageClientText(clientUri: LanguageClientUri, text: string, heldVersion: TextVersion | undefined): void {
|
|
281
319
|
this.baselines.set(clientUri, text);
|
|
282
320
|
this.heardTexts.set(clientUri, text);
|
|
283
321
|
this.pending.delete(clientUri);
|
|
322
|
+
this.setHeldVersion(clientUri, heldVersion);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
protected setHeldVersion(clientUri: LanguageClientUri, heldVersion: TextVersion | undefined): void {
|
|
326
|
+
if (heldVersion === undefined) {
|
|
327
|
+
this.heldVersions.delete(clientUri);
|
|
328
|
+
} else {
|
|
329
|
+
this.heldVersions.set(clientUri, heldVersion);
|
|
330
|
+
}
|
|
284
331
|
}
|
|
285
332
|
|
|
286
333
|
removeOpen(key: CanonicalUri, clientUri: LanguageClientUri): void {
|
|
@@ -288,6 +335,7 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
288
335
|
if (uris?.delete(clientUri)) {
|
|
289
336
|
this.invalidateLanguageClientText(clientUri);
|
|
290
337
|
this.heardTexts.delete(clientUri);
|
|
338
|
+
this.heldVersions.delete(clientUri);
|
|
291
339
|
if (uris.size === 0) {
|
|
292
340
|
this.opens.delete(key);
|
|
293
341
|
}
|
|
@@ -303,6 +351,7 @@ export class DefaultLanguageClientShadow<T extends TextDocument = TextDocument>
|
|
|
303
351
|
for (const clientUri of this.opens.get(key)?.keys() ?? []) {
|
|
304
352
|
this.invalidateLanguageClientText(clientUri);
|
|
305
353
|
this.heardTexts.delete(clientUri);
|
|
354
|
+
this.heldVersions.delete(clientUri);
|
|
306
355
|
}
|
|
307
356
|
this.opens.delete(key);
|
|
308
357
|
}
|
package/src/lsp/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './semantic-token-provider.js';
|
|
|
15
15
|
export * from './language-module.js';
|
|
16
16
|
export * from './shared-module.js';
|
|
17
17
|
export * from './hydranium-document-update-handler.js';
|
|
18
|
+
export * from './save-text-document.js';
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* The LSP server entry point, so adopters get a unified import surface for the
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2026 EclipseSource and others.
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the MIT License which is available in the project root.
|
|
6
|
+
*
|
|
7
|
+
* SPDX-License-Identifier: MIT
|
|
8
|
+
********************************************************************************/
|
|
9
|
+
|
|
10
|
+
import { isResponseError, type SaveTextDocumentParams, SaveTextDocumentRequest } from '@hydranium/protocol';
|
|
11
|
+
import {
|
|
12
|
+
combineWorkspaceFeatures,
|
|
13
|
+
type Connection,
|
|
14
|
+
type Disposable,
|
|
15
|
+
type Features,
|
|
16
|
+
ResponseError,
|
|
17
|
+
type ServerCapabilities,
|
|
18
|
+
type WorkspaceFeature
|
|
19
|
+
} from 'vscode-languageserver';
|
|
20
|
+
import { LANGUAGE_CLIENT_ID } from '../documents/client-ids.js';
|
|
21
|
+
import type { ServerSharedServices } from '../langium/module.js';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Advertise {@link SaveTextDocumentRequest} in the `initialize` answer, as
|
|
25
|
+
* `experimental[SaveTextDocumentRequest.method]`, LSP's place for a server
|
|
26
|
+
* feature it does not define. Supply it where the connection is created, with
|
|
27
|
+
* {@link listenToSaveTextDocument} on that connection: only a host whose files
|
|
28
|
+
* the server holds answers the request, and a client takes the entry as the
|
|
29
|
+
* promise that it does.
|
|
30
|
+
*/
|
|
31
|
+
export function withSaveTextDocumentCapability<T extends Features>(features: T): T {
|
|
32
|
+
const advertise: WorkspaceFeature<object> = Base =>
|
|
33
|
+
class extends Base {
|
|
34
|
+
override fillServerCapabilities(capabilities: ServerCapabilities): void {
|
|
35
|
+
super.fillServerCapabilities(capabilities);
|
|
36
|
+
capabilities.experimental = { ...capabilities.experimental, [SaveTextDocumentRequest.method]: true };
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return { ...features, workspace: features.workspace ? combineWorkspaceFeatures(features.workspace, advertise) : advertise };
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Answer {@link SaveTextDocumentRequest} on `connection`: persist the store's
|
|
44
|
+
* text once `TextDocuments.assertLanguageClientHolds` finds the editor's
|
|
45
|
+
* buffer holds it. The gate and the manager's taking of the text are one
|
|
46
|
+
* synchronous step, so no change can land between them.
|
|
47
|
+
*
|
|
48
|
+
* A refusal crosses the wire as the data head's do, its message rendered by
|
|
49
|
+
* `MessageRenderer` and rebuilt on the connection's copy of `vscode-jsonrpc`,
|
|
50
|
+
* which keeps the code only of its own copy's errors.
|
|
51
|
+
*/
|
|
52
|
+
export function listenToSaveTextDocument(connection: Connection, shared: ServerSharedServices): Disposable {
|
|
53
|
+
return connection.onRequest(SaveTextDocumentRequest.method, async (params: SaveTextDocumentParams) => {
|
|
54
|
+
const { uri, version } = params.textDocument;
|
|
55
|
+
try {
|
|
56
|
+
shared.workspace.TextDocuments.assertLanguageClientHolds(uri, version);
|
|
57
|
+
await shared.workspace.AstDocumentManager.save(uri, LANGUAGE_CLIENT_ID);
|
|
58
|
+
} catch (error: unknown) {
|
|
59
|
+
throw isResponseError(error) ? new ResponseError(error.code, shared.MessageRenderer.renderError(error), error.data) : error;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
});
|
|
63
|
+
}
|