@kerebron/extension-lsp 0.8.4 → 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,38 +1,9 @@
1
- import { Plugin } from 'prosemirror-state';
2
- import { PositionMapper } from '@kerebron/extension-markdown/PositionMapper';
1
+ import { Plugin, PluginKey } from 'prosemirror-state';
3
2
  import { CoreEditor } from '@kerebron/editor';
4
- import { type MarkdownResult } from '@kerebron/extension-markdown';
5
- import { ExtensionLsp, LspConfig } from './ExtensionLsp.js';
6
- export interface LspRange {
7
- line: number;
8
- character: number;
3
+ import type { LspConfig } from './ExtensionLsp.js';
4
+ import { LSPSync } from './LSPSync.js';
5
+ export declare const LSPPluginKey: PluginKey<LSPSync>;
6
+ export declare class LSPPlugin extends Plugin<LSPSync> {
7
+ constructor(config: LspConfig, editor: CoreEditor);
9
8
  }
10
- interface DiagnosticsItem {
11
- severity: number;
12
- range: {
13
- start: LspRange;
14
- end: LspRange;
15
- };
16
- message: string;
17
- source: string;
18
- code: string;
19
- data: any;
20
- }
21
- declare class LSPPluginState {
22
- private editor;
23
- diagnostics: DiagnosticsItem[];
24
- snapshot?: {
25
- version: number;
26
- mapper: PositionMapper;
27
- markdownResult: MarkdownResult;
28
- };
29
- constructor(editor: CoreEditor);
30
- }
31
- export declare class LSPPlugin extends Plugin<LSPPluginState> {
32
- listenerDiag: ((event: Event) => void) | undefined;
33
- listenerDisconnect: ((event: Event) => void) | undefined;
34
- listenerChange: ((event: Event) => void) | undefined;
35
- constructor(config: LspConfig, extension: ExtensionLsp);
36
- }
37
- export {};
38
9
  //# sourceMappingURL=LSPPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LSPPlugin.d.ts","sourceRoot":"","sources":["../src/LSPPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,MAAM,mBAAmB,CAAC;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE;QACL,KAAK,EAAE,QAAQ,CAAC;QAChB,GAAG,EAAE,QAAQ,CAAC;KACf,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;CACX;AA0BD,cAAM,cAAc;IASN,OAAO,CAAC,MAAM;IAR1B,WAAW,EAAE,eAAe,EAAE,CAAM;IAEpC,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,cAAc,CAAC;QACvB,cAAc,EAAE,cAAc,CAAC;KAChC,CAAC;gBAEkB,MAAM,EAAE,UAAU;CAEvC;AAID,qBAAa,SAAU,SAAQ,MAAM,CAAC,cAAc,CAAC;IACnD,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACnD,kBAAkB,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACzD,cAAc,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;gBAEzC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY;CAwPvD"}
1
+ {"version":3,"file":"LSPPlugin.d.ts","sourceRoot":"","sources":["../src/LSPPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,eAAO,MAAM,YAAY,oBAAgC,CAAC;AAE1D,qBAAa,SAAU,SAAQ,MAAM,CAAC,OAAO,CAAC;gBAChC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;CA8ElD"}
package/esm/LSPPlugin.js CHANGED
@@ -1,190 +1,65 @@
1
1
  import { Plugin, PluginKey } from 'prosemirror-state';
2
2
  import { Decoration, DecorationSet } from 'prosemirror-view';
3
- class LSPPluginState {
4
- editor;
5
- diagnostics = [];
6
- snapshot;
7
- constructor(editor) {
8
- this.editor = editor;
9
- }
10
- }
11
- const LSPPluginKey = new PluginKey('lsp');
3
+ import { LSPSync } from './LSPSync.js';
4
+ export const LSPPluginKey = new PluginKey('lsp');
12
5
  export class LSPPlugin extends Plugin {
13
- listenerDiag;
14
- listenerDisconnect;
15
- listenerChange;
16
- constructor(config, extension) {
6
+ constructor(config, editor) {
17
7
  super({
18
8
  key: LSPPluginKey,
19
- view(view) {
20
- return {
21
- destroy: () => {
22
- const client = extension.getClient(extension.mainLang);
23
- if (this.listenerDiag && client) {
24
- client.removeEventListener('textDocument/publishDiagnostics', this.listenerDiag);
25
- }
26
- if (this.listenerDisconnect && client) {
27
- client.removeEventListener('close', this.listenerDisconnect);
28
- }
29
- // if (this.listenerChange) {
30
- // extension.getEditor().removeEventListener(
31
- // 'change',
32
- // this.listenerChange,
33
- // );
34
- // }
35
- },
36
- };
37
- },
38
9
  state: {
39
10
  init() {
40
- return new LSPPluginState(editor);
11
+ return new LSPSync(config, editor);
41
12
  },
42
- apply(tr, value, oldState, newState) {
43
- const workspaceMeta = tr.getMeta('workspace');
44
- if (workspaceMeta) {
45
- console.log('workspaceMeta', workspaceMeta.operation, workspaceMeta);
46
- const uri = workspaceMeta.uri;
47
- // const lang = workspaceMeta.lang;
48
- switch (workspaceMeta.operation) {
49
- case 'openFile':
50
- {
51
- const client = extension.getClient(workspaceMeta.lang);
52
- if (client) {
53
- client.addEventListener('textDocument/publishDiagnostics', this.diagListener);
54
- const go = async () => {
55
- client.connect(uri, this.source);
56
- if (uri === editor.config.uri) {
57
- await client.restart();
58
- }
59
- client.workspace.openFile(workspaceMeta.uri, workspaceMeta.lang, this.source);
60
- };
61
- go();
62
- }
63
- }
64
- break;
65
- case 'modifyFile':
66
- break;
67
- case 'closeFile':
68
- // this.editor.view.dispatch(tr);
69
- // const client = this.getClient(this.mainLang);
70
- // if (client) {
71
- // client.disconnect(this.uri);
72
- // }
73
- break;
74
- }
75
- return value;
76
- }
77
- const meta = tr.getMeta(LSPPluginKey);
78
- if (meta?.diagnostics) {
79
- value.diagnostics = meta.diagnostics;
80
- }
81
- const markdownMeta = tr.getMeta('markdown');
82
- if (markdownMeta?.snapshot) {
83
- value.snapshot = markdownMeta.snapshot;
84
- return value;
85
- }
86
- if (markdownMeta?.clearSnapshot) {
87
- value.snapshot = undefined;
88
- return value;
89
- }
90
- if (tr.docChanged) {
91
- // value.snapshot = undefined;
92
- }
93
- // let codeBlockChanged = false;
94
- // // Compare changed ranges only
95
- // tr.mapping.maps.forEach((stepMap) => {
96
- // stepMap.forEach((oldStart, oldEnd, newStart, newEnd) => {
97
- // oldState.doc.nodesBetween(oldStart, oldEnd, (node) => {
98
- // if (node.type.name === "code_block") {
99
- // codeBlockChanged = true;
100
- // }
101
- // });
102
- // newState.doc.nodesBetween(newStart, newEnd, (node) => {
103
- // if (node.type.name === "code_block") {
104
- // codeBlockChanged = true;
105
- // }
106
- // });
107
- // });
108
- // });
109
- // if (codeBlockChanged) {
110
- // console.log("Code block changed");
111
- // // trigger your logic here
112
- // }
13
+ apply(_tr, value) {
113
14
  return value;
114
15
  },
115
16
  },
17
+ view(view) {
18
+ const pluginState = LSPPluginKey.getState(view.state);
19
+ return {
20
+ destroy() {
21
+ pluginState?.destroy();
22
+ },
23
+ };
24
+ },
116
25
  props: {
117
26
  decorations(state) {
118
27
  const decorations = [];
119
- const pluginState = this.getState(state);
28
+ const pluginState = LSPPluginKey.getState(editor.state);
120
29
  if (pluginState) {
121
- const { diagnostics, snapshot } = pluginState;
122
- if (snapshot?.version === editor.version) {
123
- for (const diag of diagnostics) {
124
- const from = snapshot.mapper.fromLineChar(diag.range.start.line, diag.range.start.character);
125
- const end = snapshot.mapper.fromLineChar(diag.range.end.line, diag.range.end.character);
126
- if (from > -1 && end > -1) {
127
- const decoration = Decoration.inline(from, end, { class: 'kb-lsp__error', title: diag.message });
128
- decorations.push(decoration);
30
+ state.doc.forEach((node, pos) => {
31
+ const dom = editor.view.nodeDOM(pos);
32
+ if (!dom || !dom.querySelector) {
33
+ return;
34
+ }
35
+ const editorElement = dom.querySelector('[data-uri]');
36
+ const uri = (editorElement
37
+ ? editorElement.getAttribute('data-uri')
38
+ : undefined) ||
39
+ undefined;
40
+ if (uri) {
41
+ const diags = pluginState.uriToDiagnostics[uri];
42
+ if (!diags) {
43
+ return;
44
+ }
45
+ const { diagnostics, version, contentMapper } = diags;
46
+ if (version === editor.version) {
47
+ for (const diag of diagnostics) {
48
+ const from = contentMapper.fromLineChar(diag.range.start.line, diag.range.start.character);
49
+ const end = contentMapper.fromLineChar(diag.range.end.line, diag.range.end.character);
50
+ if (from > -1 && end > -1) {
51
+ const decoration = Decoration.inline(pos + 1 + from, pos + 1 + end, {}, { class: 'kb-lsp__error', title: diag.message });
52
+ decorations.push(decoration);
53
+ }
54
+ }
129
55
  }
130
56
  }
131
- }
57
+ });
132
58
  }
133
59
  return DecorationSet.create(state.doc, decorations);
134
60
  },
135
61
  },
136
62
  });
137
- let lastDiag = 0;
138
- const editor = extension.getEditor();
139
- const uri = editor.config.uri;
140
- if (uri) {
141
- const client = extension.getClient(extension.mainLang);
142
- this.listenerDiag = (event) => {
143
- const detail = event.detail;
144
- if (detail.params.uri !== uri) {
145
- return;
146
- }
147
- event.preventDefault();
148
- lastDiag = +Date();
149
- if (client) {
150
- const file = client.workspace.getFile(uri);
151
- if (file) {
152
- const { mapper } = file;
153
- const diagnostics = detail.params.diagnostics;
154
- // file.dia
155
- const tr = editor.view.state.tr.setMeta(LSPPluginKey, {
156
- diagnostics: detail.params.diagnostics,
157
- mapper,
158
- });
159
- editor.view.dispatch(tr);
160
- }
161
- }
162
- };
163
- if (client) {
164
- client.addEventListener('textDocument/publishDiagnostics', this.listenerDiag);
165
- }
166
- this.listenerDisconnect = (event) => {
167
- const tr = editor.view.state.tr.setMeta(LSPPluginKey, {
168
- diagnostics: [],
169
- mapper: undefined,
170
- });
171
- editor.view.dispatch(tr);
172
- };
173
- if (client) {
174
- client.addEventListener('close', this.listenerDisconnect);
175
- }
176
- this.listenerChange = (event) => {
177
- if (lastDiag === 0 && +Date() - lastDiag > 10_1000) {
178
- return;
179
- }
180
- const tr = editor.view.state.tr.setMeta(LSPPluginKey, {
181
- diagnostics: [],
182
- mapper: undefined,
183
- });
184
- editor.view.dispatch(tr);
185
- };
186
- // extension.getEditor().addEventListener('changed', this.listenerChange);
187
- }
188
63
  }
189
64
  }
190
65
  //# sourceMappingURL=LSPPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LSPPlugin.js","sourceRoot":"","sources":["../src/LSPPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LSPPlugin.js","sourceRoot":"","sources":["../src/LSPPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import * as lsp from 'vscode-languageserver-protocol';
2
+ import { CoreEditor } from '@kerebron/editor';
3
+ import type { ContentMapper, WorkspaceModifyParams } from '@kerebron/workspace';
4
+ import type { LspConfig } from './ExtensionLsp.js';
5
+ import { LSPClient } from './LSPClient.js';
6
+ export declare class LSPSync {
7
+ private config;
8
+ private editor;
9
+ clients: Record<string, LSPClient>;
10
+ uriToClient: Record<string, LSPClient>;
11
+ uriToDiagnostics: Record<string, {
12
+ diagnostics: lsp.Diagnostic[];
13
+ version: number;
14
+ contentMapper: ContentMapper;
15
+ }>;
16
+ listenerDiag: (event: CustomEvent<{
17
+ params: lsp.PublishDiagnosticsParams;
18
+ }>) => void;
19
+ listenerDisconnect: (event: CustomEvent<void>) => void;
20
+ listenerChange: (event: CustomEvent<WorkspaceModifyParams>) => Promise<void>;
21
+ constructor(config: LspConfig, editor: CoreEditor);
22
+ changeFile(modified: WorkspaceModifyParams): Promise<void>;
23
+ closeFile(uri: string): Promise<void>;
24
+ disconnected(disconnectedClient: LSPClient): void;
25
+ getClient(lang: string): LSPClient | undefined;
26
+ destroy(): void;
27
+ }
28
+ //# sourceMappingURL=LSPSync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LSPSync.d.ts","sourceRoot":"","sources":["../src/LSPSync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EACV,aAAa,EAGb,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAE1D,qBAAa,OAAO;IAmBN,OAAO,CAAC,MAAM;IAAa,OAAO,CAAC,MAAM;IAlBrD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IAExC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAM;IAC5C,gBAAgB,EAAE,MAAM,CACtB,MAAM,EACN;QACE,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,aAAa,CAAC;KAC9B,CACF,CAAM;IAEP,YAAY,EAAE,CACZ,KAAK,EAAE,WAAW,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,wBAAwB,CAAA;KAAE,CAAC,KACzD,IAAI,CAAC;IACV,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,qBAAqB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,EAAE,SAAS,EAAU,MAAM,EAAE,UAAU;IA8C3D,UAAU,CAAC,QAAQ,EAAE,qBAAqB;IAwB1C,SAAS,CAAC,GAAG,EAAE,MAAM;IAS3B,YAAY,CAAC,kBAAkB,EAAE,SAAS,GAAG,IAAI;IASjD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IA2B9C,OAAO;CAqBR"}
package/esm/LSPSync.js ADDED
@@ -0,0 +1,111 @@
1
+ import { LSPClientImpl } from './LSPClient.js';
2
+ export class LSPSync {
3
+ config;
4
+ editor;
5
+ clients = {};
6
+ uriToClient = {};
7
+ uriToDiagnostics = {};
8
+ listenerDiag;
9
+ listenerDisconnect;
10
+ listenerChange;
11
+ constructor(config, editor) {
12
+ this.config = config;
13
+ this.editor = editor;
14
+ this.listenerDiag = async (event) => {
15
+ const { uri, diagnostics, version } = event.detail.params;
16
+ const client = event.target;
17
+ const entry = client.entries[uri];
18
+ if (!entry || !version) {
19
+ return;
20
+ }
21
+ const contentMapper = await entry.getContentMapper();
22
+ this.uriToDiagnostics[uri] = {
23
+ diagnostics,
24
+ version,
25
+ contentMapper,
26
+ };
27
+ const tr = editor.state.tr;
28
+ editor.dispatchTransaction(tr);
29
+ };
30
+ this.listenerDisconnect = (event) => {
31
+ const client = event.target;
32
+ this.disconnected(client);
33
+ };
34
+ const workspace = this.editor.ci.resolve('workspace');
35
+ this.listenerChange = async (event) => {
36
+ await this.changeFile(event.detail);
37
+ };
38
+ workspace.addEventListener('openFile', this.listenerChange);
39
+ workspace.addEventListener('modifyFile', this.listenerChange);
40
+ workspace.addEventListener('closeFile', (event) => {
41
+ this.closeFile(event.detail.uri);
42
+ });
43
+ }
44
+ async changeFile(modified) {
45
+ const langClient = this.getClient(modified.lang);
46
+ if (!langClient) {
47
+ return;
48
+ }
49
+ const client = this.uriToClient[modified.uri];
50
+ if (!client) {
51
+ this.uriToClient[modified.uri] = langClient;
52
+ await langClient.changeFile(modified);
53
+ return;
54
+ }
55
+ if (client.lang !== langClient.lang) {
56
+ await client.closeFile(modified.uri);
57
+ this.uriToClient[modified.uri] = langClient;
58
+ await langClient.changeFile(modified);
59
+ return;
60
+ }
61
+ await client.changeFile(modified);
62
+ }
63
+ async closeFile(uri) {
64
+ const client = this.uriToClient[uri];
65
+ if (client) {
66
+ delete this.uriToClient[uri];
67
+ await client.closeFile(uri);
68
+ }
69
+ }
70
+ disconnected(disconnectedClient) {
71
+ for (const [uri, client] of Object.entries(this.uriToClient)) {
72
+ if (client !== disconnectedClient) {
73
+ continue;
74
+ }
75
+ this.closeFile(uri);
76
+ }
77
+ }
78
+ getClient(lang) {
79
+ if (!this.clients[lang]) {
80
+ const transport = this.config.getLspTransport(lang);
81
+ if (!transport) {
82
+ console.warn(`No lsp transport for ${lang}`);
83
+ return undefined;
84
+ }
85
+ const ui = this.editor.ui;
86
+ const client = new LSPClientImpl(transport, {
87
+ lang,
88
+ rootUri: 'file:///',
89
+ ui,
90
+ });
91
+ client.addEventListener('textDocument/publishDiagnostics', this.listenerDiag);
92
+ client.addEventListener('close', this.listenerDisconnect);
93
+ this.clients[lang] = client;
94
+ }
95
+ return this.clients[lang];
96
+ }
97
+ destroy() {
98
+ const workspace = this.editor.ci.resolve('workspace');
99
+ workspace.removeEventListener('openFile', this.listenerChange);
100
+ workspace.removeEventListener('modifyFile', this.listenerChange);
101
+ for (const client of Object.values(this.clients)) {
102
+ client.removeEventListener('textDocument/publishDiagnostics', this.listenerDiag);
103
+ client.removeEventListener('close', this.listenerDisconnect);
104
+ client.destroy();
105
+ }
106
+ this.clients = {};
107
+ this.uriToClient = {};
108
+ this.uriToDiagnostics = {};
109
+ }
110
+ }
111
+ //# sourceMappingURL=LSPSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LSPSync.js","sourceRoot":"","sources":["../src/LSPSync.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,5 @@ import * as lsp from 'vscode-languageserver-protocol';
5
5
  * Returns an array of TextEdit-like changes that transform `previous` into `current`.
6
6
  */
7
7
  export declare function computeIncrementalChanges(previous: string, current: string): lsp.TextDocumentContentChangeEvent[];
8
+ export declare function contentChangesFor(supportInc: boolean, newContent: string, oldContent?: string): lsp.TextDocumentContentChangeEvent[];
8
9
  //# sourceMappingURL=computeIncrementalChanges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeIncrementalChanges.d.ts","sourceRoot":"","sources":["../src/computeIncrementalChanges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gCAAgC,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,8BAA8B,EAAE,CA0FtC"}
1
+ {"version":3,"file":"computeIncrementalChanges.d.ts","sourceRoot":"","sources":["../src/computeIncrementalChanges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,gCAAgC,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,GAAG,CAAC,8BAA8B,EAAE,CA0FtC;AAMD,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,OAAO,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,GAClB,GAAG,CAAC,8BAA8B,EAAE,CAOtC"}
@@ -80,4 +80,15 @@ export function computeIncrementalChanges(previous, current) {
80
80
  });
81
81
  return changes;
82
82
  }
83
+ var Sync;
84
+ (function (Sync) {
85
+ Sync[Sync["AlwaysIfSmaller"] = 1024] = "AlwaysIfSmaller";
86
+ })(Sync || (Sync = {}));
87
+ export function contentChangesFor(supportInc, newContent, oldContent) {
88
+ if (!supportInc || newContent.length < Sync.AlwaysIfSmaller || !oldContent) {
89
+ return [{ text: newContent }];
90
+ }
91
+ const changes = computeIncrementalChanges(oldContent, newContent);
92
+ return changes.reverse();
93
+ }
83
94
  //# sourceMappingURL=computeIncrementalChanges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"computeIncrementalChanges.js","sourceRoot":"","sources":["../src/computeIncrementalChanges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"computeIncrementalChanges.js","sourceRoot":"","sources":["../src/computeIncrementalChanges.ts"],"names":[],"mappings":"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"}
package/esm/mod.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from './ExtensionLsp.js';
2
2
  export * from './LSPClient.js';
3
- export * from './LSPWorkspace.js';
4
3
  //# sourceMappingURL=mod.d.ts.map
package/esm/mod.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
package/esm/mod.js CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from './ExtensionLsp.js';
2
2
  export * from './LSPClient.js';
3
- export * from './LSPWorkspace.js';
4
3
  //# sourceMappingURL=mod.js.map
package/esm/mod.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../src/mod.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@kerebron/extension-lsp",
3
- "version": "0.8.4",
3
+ "version": "0.8.6",
4
4
  "license": "MIT",
5
5
  "module": "./esm/mod.js",
6
6
  "exports": {
7
7
  ".": {
8
8
  "import": "./esm/mod.js"
9
9
  },
10
- "./types": {
11
- "import": "./esm/types.js"
12
- },
13
10
  "./LSPWebSocketTransport": {
14
11
  "import": "./esm/LSPWebSocketTransport.js"
15
12
  }
@@ -20,9 +17,9 @@
20
17
  "src"
21
18
  ],
22
19
  "dependencies": {
23
- "@kerebron/editor": "0.8.4",
24
- "@kerebron/extension-markdown": "0.8.4",
25
- "@kerebron/extension-ui": "0.8.4",
20
+ "@kerebron/editor": "0.8.6",
21
+ "@kerebron/extension-ui": "0.8.6",
22
+ "@kerebron/workspace": "0.8.6",
26
23
  "prosemirror-state": "1.4.3",
27
24
  "prosemirror-view": "1.40.0",
28
25
  "vscode-languageserver-protocol": "3.17.5"