@kerebron/extension-lsp 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/esm/ExtensionLsp.d.ts +1 -7
  2. package/esm/ExtensionLsp.d.ts.map +1 -1
  3. package/esm/ExtensionLsp.js +62 -79
  4. package/esm/ExtensionLsp.js.map +1 -1
  5. package/esm/LSPClient.d.ts +60 -15
  6. package/esm/LSPClient.d.ts.map +1 -1
  7. package/esm/LSPClient.js +91 -40
  8. package/esm/LSPClient.js.map +1 -1
  9. package/esm/LSPPlugin.d.ts +6 -35
  10. package/esm/LSPPlugin.d.ts.map +1 -1
  11. package/esm/LSPPlugin.js +40 -165
  12. package/esm/LSPPlugin.js.map +1 -1
  13. package/esm/LSPSync.d.ts +28 -0
  14. package/esm/LSPSync.d.ts.map +1 -0
  15. package/esm/LSPSync.js +111 -0
  16. package/esm/LSPSync.js.map +1 -0
  17. package/esm/computeIncrementalChanges.d.ts +1 -0
  18. package/esm/computeIncrementalChanges.d.ts.map +1 -1
  19. package/esm/computeIncrementalChanges.js +11 -0
  20. package/esm/computeIncrementalChanges.js.map +1 -1
  21. package/esm/mod.d.ts +0 -1
  22. package/esm/mod.d.ts.map +1 -1
  23. package/esm/mod.js +0 -1
  24. package/esm/mod.js.map +1 -1
  25. package/package.json +4 -7
  26. package/src/ExtensionLsp.ts +91 -94
  27. package/src/LSPClient.ts +217 -54
  28. package/src/LSPPlugin.ts +59 -292
  29. package/src/LSPSync.ts +169 -0
  30. package/src/computeIncrementalChanges.ts +17 -0
  31. package/src/mod.ts +0 -1
  32. package/esm/LSPWorkspace.d.ts +0 -39
  33. package/esm/LSPWorkspace.d.ts.map +0 -1
  34. package/esm/LSPWorkspace.js +0 -118
  35. package/esm/LSPWorkspace.js.map +0 -1
  36. package/esm/createLspAutocomplete.d.ts +0 -17
  37. package/esm/createLspAutocomplete.d.ts.map +0 -1
  38. package/esm/createLspAutocomplete.js +0 -68
  39. package/esm/createLspAutocomplete.js.map +0 -1
  40. package/esm/types.d.ts +0 -19
  41. package/esm/types.d.ts.map +0 -1
  42. package/esm/types.js +0 -2
  43. package/esm/types.js.map +0 -1
  44. package/esm/workspace.d.ts +0 -33
  45. package/esm/workspace.d.ts.map +0 -1
  46. package/esm/workspace.js +0 -23
  47. package/esm/workspace.js.map +0 -1
  48. package/src/LSPWorkspace.ts +0 -172
  49. package/src/createLspAutocomplete.ts +0 -98
  50. package/src/types.ts +0 -14
  51. package/src/workspace.ts +0 -53
@@ -1,7 +1,6 @@
1
1
  import { Plugin } from 'prosemirror-state';
2
2
  import { Extension } from '@kerebron/editor';
3
- import { type ExtensionMarkdown } from '@kerebron/extension-markdown';
4
- import { LSPClient, Transport } from './LSPClient.js';
3
+ import { Transport } from './LSPClient.js';
5
4
  export type LSPTransportGetter = (lang: string) => Transport | undefined;
6
5
  export interface LspConfig {
7
6
  getLspTransport: LSPTransportGetter;
@@ -9,13 +8,8 @@ export interface LspConfig {
9
8
  export declare class ExtensionLsp extends Extension {
10
9
  config: LspConfig;
11
10
  name: string;
12
- clients: Record<string, LSPClient>;
13
- uri: string | undefined;
14
- extensionMarkdown: ExtensionMarkdown;
15
- mainLang: string;
16
11
  constructor(config: LspConfig);
17
12
  getProseMirrorPlugins(): Plugin[];
18
13
  created(): void;
19
- getClient(lang: string): LSPClient | undefined;
20
14
  }
21
15
  //# sourceMappingURL=ExtensionLsp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionLsp.d.ts","sourceRoot":"","sources":["../src/ExtensionLsp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGtE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAItD,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,kBAAkB,CAAC;CACrC;AAED,qBAAa,YAAa,SAAQ,SAAS;IAQb,MAAM,EAAE,SAAS;IAP7C,IAAI,SAAS;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IACxC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,iBAAiB,EAAG,iBAAiB,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAc;gBAGF,MAAM,EAAE,SAAS;IAIpC,qBAAqB,IAAI,MAAM,EAAE;IAUjC,OAAO;IAoEhB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;CAW/C"}
1
+ {"version":3,"file":"ExtensionLsp.d.ts","sourceRoot":"","sources":["../src/ExtensionLsp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAC;AAOxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,MAAM,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,eAAe,EAAE,kBAAkB,CAAC;CACrC;AAED,qBAAa,YAAa,SAAQ,SAAS;IAGb,MAAM,EAAE,SAAS;IAF7C,IAAI,SAAS;gBAEe,MAAM,EAAE,SAAS;IAIpC,qBAAqB,IAAI,MAAM,EAAE;IAOjC,OAAO,IAAI,IAAI;CAiFzB"}
@@ -1,96 +1,79 @@
1
1
  import { Extension } from '@kerebron/editor';
2
- import { LSPClient } from './LSPClient.js';
3
- import { LSPPlugin } from './LSPPlugin.js';
4
- import { createLspAutocomplete } from './createLspAutocomplete.js';
2
+ import { LSPPlugin, LSPPluginKey } from './LSPPlugin.js';
5
3
  export class ExtensionLsp extends Extension {
6
4
  config;
7
5
  name = 'lsp';
8
- clients = {};
9
- uri;
10
- extensionMarkdown;
11
- mainLang = 'markdown';
12
- // source!: LSPSource;
13
6
  constructor(config) {
14
7
  super(config);
15
8
  this.config = config;
16
9
  }
17
10
  getProseMirrorPlugins() {
18
11
  const plugins = [];
19
- const { autocompleteConfig } = createLspAutocomplete(this);
20
- plugins.push(new LSPPlugin(this.config, this));
12
+ // const { autocompleteConfig } = createLspAutocomplete(this);
13
+ plugins.push(new LSPPlugin(this.config, this.editor));
21
14
  return plugins;
22
15
  }
23
16
  created() {
24
- this.mainLang = this.editor.config.languageID || 'markdown';
25
- // this.source = {
26
- // ui: this.editor.ui,
27
- // getMappedContent: async () => {
28
- // const editor = this.editor;
29
- // const result = await this.extensionMarkdown.toMarkdown(
30
- // editor.state.doc,
31
- // );
32
- // const mapper = new PositionMapper(editor, result.rawTextMap);
33
- // return {
34
- // ...result,
35
- // mapper,
36
- // };
37
- // },
38
- // };
39
- const extensionMarkdown = this.editor
40
- .ci.resolve('markdown');
41
- if (!extensionMarkdown) {
42
- throw new Error('No markdown extension');
43
- }
44
- this.extensionMarkdown = extensionMarkdown;
45
- this.editor.addEventListener('doc:loaded', async () => {
46
- this.uri = this.editor.config.uri;
47
- if (this.editor.config.uri) {
48
- const tr = this.editor.view.state.tr;
49
- tr.setMeta('workspace', {
50
- operation: 'openFile',
51
- node: this.editor.view.state.doc,
52
- // pos: this.getPos(),
53
- uri: this.editor.config.uri,
54
- lang: this.mainLang,
17
+ const source3 = {
18
+ match: function (trigger) {
19
+ let pos = trigger.pos;
20
+ if (trigger.uri) {
21
+ pos = pos + trigger.inside;
22
+ }
23
+ return {
24
+ source: source3,
25
+ uri: trigger.uri,
26
+ range: {
27
+ from: pos,
28
+ to: pos,
29
+ },
30
+ trigger,
31
+ text: '...',
32
+ };
33
+ },
34
+ getItem: async (range, trigger) => {
35
+ if (!trigger.uri) {
36
+ return;
37
+ }
38
+ const lspSync = LSPPluginKey.getState(this.editor.state);
39
+ if (!lspSync) {
40
+ return;
41
+ }
42
+ const lspClient = lspSync.uriToClient[trigger.uri];
43
+ const entry = lspClient.getEntry(trigger.uri);
44
+ if (!entry) {
45
+ return;
46
+ }
47
+ const contentMapper = await entry.getContentMapper();
48
+ const [line, character] = contentMapper.toRawTextLineCol(trigger.inside);
49
+ const hover = await lspClient.request('textDocument/hover', {
50
+ textDocument: {
51
+ uri: trigger.uri,
52
+ },
53
+ position: {
54
+ line,
55
+ character,
56
+ },
55
57
  });
56
- this.editor.view.dispatch(tr);
57
- }
58
- // TODO start autocomplete...
59
- // this.editor.chain()/aaaa.run();
60
- });
61
- this.editor.addEventListener('changed', () => {
62
- if (this.editor.config.uri) {
63
- const tr = this.editor.view.state.tr;
64
- tr.setMeta('workspace', {
65
- operation: 'modifyFile',
66
- node: this.editor.view.state.doc,
67
- // pos: this.getPos(),
68
- uri: this.editor.config.uri,
69
- lang: this.mainLang,
70
- });
71
- this.editor.view.dispatch(tr);
72
- }
73
- });
74
- this.editor.addEventListener('beforeDestroy', () => {
75
- if (this.uri) {
76
- const tr = this.editor.view.state.tr;
77
- tr.setMeta('workspace', {
78
- operation: 'closeFile',
79
- uri: this.editor.config.uri,
80
- });
81
- }
82
- });
83
- }
84
- getClient(lang) {
85
- if (!this.clients[lang]) {
86
- const transport = this.config.getLspTransport(lang);
87
- if (!transport) {
88
- console.warn(`No lsp transport for ${lang}`);
89
- return undefined;
90
- }
91
- this.clients[lang] = new LSPClient(transport, { rootUri: 'file:///' });
92
- }
93
- return this.clients[lang];
58
+ if (!hover) {
59
+ return;
60
+ }
61
+ const contents = hover.contents;
62
+ if (Array.isArray(contents)) {
63
+ return { text: contents.map((a) => a.toString).join('\n') };
64
+ }
65
+ if ('string' === typeof contents) {
66
+ return { text: contents };
67
+ }
68
+ if ('kind' in contents) {
69
+ return { text: contents.value };
70
+ }
71
+ return { text: contents.value, a: contents.language };
72
+ },
73
+ };
74
+ this.editor.addEventListener('ready', () => {
75
+ this.editor.chain().addHoverSource(source3).run();
76
+ }, { once: true });
94
77
  }
95
78
  }
96
79
  //# sourceMappingURL=ExtensionLsp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExtensionLsp.js","sourceRoot":"","sources":["../src/ExtensionLsp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ExtensionLsp.js","sourceRoot":"","sources":["../src/ExtensionLsp.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type * as lsp from 'vscode-languageserver-protocol';
1
+ import * as lsp from 'vscode-languageserver-protocol';
2
2
  import { TextDocumentSyncKind } from 'vscode-languageserver-protocol';
3
- import { Workspace, WorkspaceFile } from './workspace.js';
4
- import { LSPSource } from './LSPWorkspace.js';
3
+ import { EditorUi } from '@kerebron/editor';
4
+ import type { ContentMapper, WorkspaceModifyParams } from '@kerebron/workspace';
5
5
  export type Transport = {
6
6
  connect(): void;
7
7
  disconnect(): void;
@@ -12,10 +12,10 @@ export type Transport = {
12
12
  isInitialized(): boolean;
13
13
  };
14
14
  export type LSPClientConfig = {
15
+ ui: EditorUi;
16
+ lang: string;
15
17
  rootUri?: string;
16
- workspace?: (client: LSPClient) => Workspace;
17
18
  timeout?: number;
18
- sanitizeHTML?: (html: string) => string;
19
19
  unhandledNotification?: (client: LSPClient, method: string, params: any) => void;
20
20
  };
21
21
  export declare class LSPError extends Error {
@@ -23,11 +23,50 @@ export declare class LSPError extends Error {
23
23
  readonly isLSP = true;
24
24
  static createTimeout(): LSPError;
25
25
  }
26
- export declare class LSPClient extends EventTarget {
26
+ export interface LSPClientEventMap {
27
+ 'initialize': CustomEvent<lsp.InitializeParams>;
28
+ 'initialized': CustomEvent<lsp.InitializedParams>;
29
+ 'textDocument/didOpen': CustomEvent<lsp.DidOpenTextDocumentParams>;
30
+ 'textDocument/didChange': CustomEvent<lsp.DidChangeTextDocumentParams>;
31
+ 'textDocument/didClose': CustomEvent<lsp.DidCloseTextDocumentParams>;
32
+ 'textDocument/completion': CustomEvent<lsp.CompletionParams>;
33
+ 'textDocument/diagnostic': CustomEvent<lsp.DocumentDiagnosticParams>;
34
+ 'textDocument/publishDiagnostics': CustomEvent<{
35
+ params: lsp.PublishDiagnosticsParams;
36
+ }>;
37
+ 'window/logMessage': CustomEvent<lsp.LogMessageParams>;
38
+ 'window/showMessage': CustomEvent<lsp.ShowMessageParams>;
39
+ 'close': CustomEvent<void>;
40
+ }
41
+ export interface LSPClient extends EventTarget {
42
+ addEventListener<K extends keyof LSPClientEventMap>(type: K, listener: (event: LSPClientEventMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
43
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | AddEventListenerOptions): void;
44
+ removeEventListener<K extends keyof LSPClientEventMap>(type: K, listener: (event: LSPClientEventMap[K]) => void, options?: boolean | EventListenerOptions): void;
45
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject | null, options?: boolean | EventListenerOptions): void;
46
+ dispatchEvent<K extends keyof LSPClientEventMap>(event: LSPClientEventMap[K]): boolean;
47
+ dispatchEvent(event: Event): boolean;
48
+ lang: string;
49
+ hasCapability(name: keyof lsp.ServerCapabilities): boolean;
50
+ connect(): void;
51
+ restart(): Promise<void>;
52
+ changeFile(modified: WorkspaceModifyParams): Promise<boolean>;
53
+ closeFile(uri: string): Promise<void>;
54
+ request<Params, Result>(method: string, params: Params): Promise<Result>;
55
+ notification<Params>(method: string, params: Params): Promise<boolean>;
56
+ getEntry(uri: string): LSPEntry | undefined;
57
+ destroy(): void;
58
+ }
59
+ interface LSPEntry {
60
+ getContentMapper: () => Promise<ContentMapper>;
61
+ uri: string;
62
+ version: number;
63
+ syncedText?: string;
64
+ opened: boolean;
65
+ }
66
+ export declare class LSPClientImpl extends EventTarget implements LSPClient {
27
67
  private readonly transport;
28
68
  readonly config: LSPClientConfig;
29
- sources: Record<string, LSPSource>;
30
- workspace: Workspace;
69
+ entries: Record<string, LSPEntry>;
31
70
  private nextReqID;
32
71
  private requests;
33
72
  serverCapabilities: lsp.ServerCapabilities | null;
@@ -35,23 +74,29 @@ export declare class LSPClient extends EventTarget {
35
74
  private readonly timeout;
36
75
  private initializing;
37
76
  private readonly receiveListener;
77
+ private readonly startInitializingListener;
38
78
  active: boolean;
39
- constructor(transport: Transport, config?: LSPClientConfig);
79
+ constructor(transport: Transport, config: LSPClientConfig);
80
+ destroy(): void;
81
+ get lang(): string;
40
82
  startInitializing(): void;
41
83
  stopInitializing(): void;
42
84
  restart(): Promise<void>;
43
- onInitialized(): void;
44
- connect(uri: string, source: LSPSource): void;
85
+ onInitialized(): Promise<void>;
86
+ connect(): void;
45
87
  disconnect(uri: string): void;
46
- didOpen(file: WorkspaceFile): Promise<boolean>;
47
- didClose(uri: string): void;
88
+ changeFile(modified: WorkspaceModifyParams): Promise<boolean>;
89
+ didOpen(entry: LSPEntry): Promise<boolean>;
90
+ didChange(entry: LSPEntry): Promise<boolean>;
91
+ closeFile(uri: string): Promise<void>;
48
92
  private receiveMessage;
49
93
  request<Params, Result>(method: string, params: Params): Promise<Result>;
50
94
  private requestInner;
51
95
  notification<Params>(method: string, params: Params): Promise<boolean>;
52
96
  cancelRequest(params: any): void;
53
- hasCapability(name: keyof lsp.ServerCapabilities): boolean | null;
54
- syncFiles(): void;
97
+ hasCapability(name: keyof lsp.ServerCapabilities): boolean;
55
98
  private timeoutRequest;
99
+ getEntry(uri: string): LSPEntry | undefined;
56
100
  }
101
+ export {};
57
102
  //# sourceMappingURL=LSPClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LSPClient.d.ts","sourceRoot":"","sources":["../src/LSPClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LSPClient.d.ts","sourceRoot":"","sources":["../src/LSPClient.ts"],"names":[],"mappings":"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"}
package/esm/LSPClient.js CHANGED
@@ -1,5 +1,6 @@
1
+ import * as lsp from 'vscode-languageserver-protocol';
1
2
  import { MessageType, TextDocumentSyncKind, } from 'vscode-languageserver-protocol';
2
- import { LSPWorkspace } from './LSPWorkspace.js';
3
+ import { contentChangesFor } from './computeIncrementalChanges.js';
3
4
  const defaultNotificationHandlers = {
4
5
  'window/logMessage': (client, params) => {
5
6
  if (params.type == MessageType.Error) {
@@ -15,11 +16,11 @@ const defaultNotificationHandlers = {
15
16
  console.log('[lsp] ' + params.message);
16
17
  }
17
18
  },
18
- 'window/showMessage': (client, params) => {
19
+ 'window/showMessage': (client, params, config) => {
19
20
  if (params.type > MessageType.Info)
20
21
  return;
21
- for (const f of client.workspace.files) {
22
- const ui = f.getUi();
22
+ for (const f of Object.entries(client.entries)) {
23
+ const ui = config.ui;
23
24
  if (!ui)
24
25
  continue;
25
26
  ui.showMessage(params.message);
@@ -99,11 +100,12 @@ export class LSPError extends Error {
99
100
  return err;
100
101
  }
101
102
  }
102
- export class LSPClient extends EventTarget {
103
+ export class LSPClientImpl extends EventTarget {
103
104
  transport;
104
105
  config;
105
- sources = {};
106
- workspace;
106
+ entries = {};
107
+ // sources: Record<string, () => Promise<ContentMapper>> = {};
108
+ // workspace: Workspace;
107
109
  nextReqID = 0;
108
110
  requests = [];
109
111
  serverCapabilities = null;
@@ -111,14 +113,16 @@ export class LSPClient extends EventTarget {
111
113
  timeout;
112
114
  initializing;
113
115
  receiveListener;
116
+ startInitializingListener;
114
117
  active = false;
115
- constructor(transport, config = {}) {
118
+ constructor(transport, config) {
116
119
  super();
117
120
  this.transport = transport;
118
121
  this.config = config;
119
122
  this.timeout = config.timeout ?? 3000;
120
123
  this.receiveListener = (event) => this.receiveMessage(event);
121
- transport.addEventListener('message', this.receiveListener);
124
+ this.startInitializingListener = (event) => this.startInitializing();
125
+ transport.addEventListener('open', this.startInitializingListener);
122
126
  transport.addEventListener('initialized', () => {
123
127
  try {
124
128
  console.info('LSP initialized');
@@ -133,17 +137,19 @@ export class LSPClient extends EventTarget {
133
137
  }
134
138
  }
135
139
  });
136
- transport.addEventListener('open', () => {
137
- this.startInitializing();
138
- });
140
+ transport.addEventListener('message', this.receiveListener);
139
141
  transport.addEventListener('close', (event) => {
140
142
  this.active = false;
141
143
  this.serverCapabilities = null;
142
144
  this.dispatchEvent(new CloseEvent('close'));
143
145
  });
144
- this.workspace = config.workspace
145
- ? config.workspace(this)
146
- : new LSPWorkspace(this);
146
+ }
147
+ destroy() {
148
+ this.transport.removeEventListener('message', this.receiveListener);
149
+ this.transport.removeEventListener('open', this.startInitializingListener);
150
+ }
151
+ get lang() {
152
+ return this.config.lang;
147
153
  }
148
154
  startInitializing() {
149
155
  if (this.initializing) {
@@ -187,57 +193,102 @@ export class LSPClient extends EventTarget {
187
193
  this.startInitializing();
188
194
  }
189
195
  }
190
- onInitialized() {
196
+ async onInitialized() {
191
197
  this.transport.send(JSON.stringify({ jsonrpc: '2.0', method: 'initialized', params: {} }));
192
- this.workspace.connected();
193
- }
194
- connect(uri, source) {
195
- if (this.sources[uri] && this.sources[uri] !== source) {
196
- throw new Error(`Source for ${uri} already connected`);
198
+ for (const [uri, entry] of Object.entries(this.entries)) {
199
+ if (entry.opened) {
200
+ return;
201
+ }
202
+ await this.didOpen(entry);
197
203
  }
198
- this.sources[uri] = source;
204
+ this.dispatchEvent(new CustomEvent('initialized'));
205
+ }
206
+ connect() {
199
207
  this.active = true;
200
208
  if (!this.transport.isConnected()) {
201
209
  this.transport.connect();
202
210
  }
203
211
  }
204
212
  disconnect(uri) {
205
- delete this.sources[uri];
206
- this.workspace.closeFile(uri);
207
- if (Object.keys(this.sources).length === 0) {
213
+ if (Object.keys(this.entries).length === 0) {
208
214
  this.active = false;
209
215
  this.serverCapabilities = null;
210
216
  this.transport.removeEventListener('data', this.receiveListener);
211
- this.workspace.disconnected();
212
217
  this.dispatchEvent(new CloseEvent('close'));
213
218
  }
214
219
  }
220
+ async changeFile(modified) {
221
+ const entry = this.entries[modified.uri] || {
222
+ uri: modified.uri,
223
+ version: modified.version,
224
+ syncedText: undefined,
225
+ opened: false,
226
+ };
227
+ entry.version = modified.version;
228
+ entry.getContentMapper = modified.getContentMapper;
229
+ if (!this.entries[modified.uri]) {
230
+ this.entries[modified.uri] = entry;
231
+ return await this.didOpen(entry);
232
+ }
233
+ else {
234
+ return await this.didChange(entry);
235
+ }
236
+ }
215
237
  /// Send a `textDocument/didOpen` notification to the server.
216
- async didOpen(file) {
238
+ async didOpen(entry) {
217
239
  if (!this.transport.isInitialized()) {
240
+ entry.opened = false;
241
+ this.connect();
218
242
  return false;
219
243
  }
244
+ const mapper = await entry.getContentMapper();
245
+ const text = mapper.getTextContent();
220
246
  await this.notification('textDocument/didOpen', {
221
247
  textDocument: {
222
- uri: file.uri,
223
- languageId: file.languageId,
224
- text: file.content,
225
- version: file.version,
248
+ uri: entry.uri,
249
+ languageId: this.lang,
250
+ text,
251
+ version: entry.version,
226
252
  },
227
253
  });
254
+ entry.opened = true;
255
+ entry.syncedText = text;
228
256
  await this.notification('textDocument/diagnostic', {
229
257
  textDocument: {
230
- uri: file.uri,
258
+ uri: entry.uri,
231
259
  },
232
260
  });
233
261
  return true;
234
262
  }
235
- /// Send a `textDocument/didClose` notification to the server.
236
- didClose(uri) {
263
+ async didChange(entry) {
264
+ if (!this.transport.isInitialized()) {
265
+ entry.opened = false;
266
+ this.connect();
267
+ return false;
268
+ }
269
+ if (!entry.opened) {
270
+ return this.didOpen(entry);
271
+ }
272
+ const mapper = await entry.getContentMapper();
273
+ const text = mapper.getTextContent();
274
+ await this.notification('textDocument/didChange', {
275
+ textDocument: { uri: entry.uri, version: entry.version },
276
+ contentChanges: contentChangesFor(this.supportSync == lsp.TextDocumentSyncKind.Incremental, text, entry.syncedText),
277
+ });
278
+ entry.syncedText = text;
279
+ await this.notification('textDocument/diagnostic', {
280
+ textDocument: {
281
+ uri: entry.uri,
282
+ },
283
+ });
284
+ return true;
285
+ }
286
+ async closeFile(uri) {
287
+ delete this.entries[uri];
237
288
  if (!this.transport.isInitialized()) {
238
289
  return;
239
290
  }
240
- this.notification('textDocument/didClose', {
291
+ await this.notification('textDocument/didClose', {
241
292
  textDocument: { uri },
242
293
  });
243
294
  }
@@ -269,7 +320,7 @@ export class LSPClient extends EventTarget {
269
320
  }
270
321
  else {
271
322
  if (defaultNotificationHandlers[value.method]) {
272
- defaultNotificationHandlers[value.method](this, value.params);
323
+ defaultNotificationHandlers[value.method](this, value.params, this.config);
273
324
  }
274
325
  }
275
326
  }
@@ -355,10 +406,7 @@ export class LSPClient extends EventTarget {
355
406
  }
356
407
  }
357
408
  hasCapability(name) {
358
- return this.serverCapabilities ? !!this.serverCapabilities[name] : null;
359
- }
360
- syncFiles() {
361
- this.workspace.syncFiles();
409
+ return this.serverCapabilities ? !!this.serverCapabilities[name] : false;
362
410
  }
363
411
  timeoutRequest(req, method, id, params) {
364
412
  const index = this.requests.indexOf(req);
@@ -367,5 +415,8 @@ export class LSPClient extends EventTarget {
367
415
  this.requests.splice(index, 1);
368
416
  }
369
417
  }
418
+ getEntry(uri) {
419
+ return this.entries[uri];
420
+ }
370
421
  }
371
422
  //# sourceMappingURL=LSPClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LSPClient.js","sourceRoot":"","sources":["../src/LSPClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LSPClient.js","sourceRoot":"","sources":["../src/LSPClient.ts"],"names":[],"mappings":"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"}