(
editor: monaco.editor.IStandaloneCodeEditor,
languageServerWorker: Worker,
info: {
languageId: string;
logger?: Logger;
clientInfo?: InitializeParams['clientInfo'];
}
)
| 49 | * @param languageServerWorker The web worker with a language server listening for messages. |
| 50 | */ |
| 51 | export async function basicEditorLspIntegration( |
| 52 | editor: monaco.editor.IStandaloneCodeEditor, |
| 53 | languageServerWorker: Worker, |
| 54 | info: { |
| 55 | languageId: string; |
| 56 | logger?: Logger; |
| 57 | clientInfo?: InitializeParams['clientInfo']; |
| 58 | } |
| 59 | ) { |
| 60 | const reader = new BrowserMessageReader(languageServerWorker); |
| 61 | const writer = new BrowserMessageWriter(languageServerWorker); |
| 62 | const connection = createProtocolConnection(reader, writer, info.logger); |
| 63 | connection.onError(data => { |
| 64 | info.logger?.error(`Error on protocol connection: ${data}`); |
| 65 | }); |
| 66 | connection.onClose(() => { |
| 67 | info.logger?.log(`Language Server connection closed`); |
| 68 | }); |
| 69 | |
| 70 | const initRequest: InitializeParams = { |
| 71 | processId: null, |
| 72 | clientInfo: info.clientInfo, |
| 73 | rootUri: null, |
| 74 | capabilities: { |
| 75 | general: { |
| 76 | staleRequestSupport: { |
| 77 | cancel: true, |
| 78 | retryOnContentModified: [] |
| 79 | }, |
| 80 | regularExpressions: { |
| 81 | engine: 'ECMAScript', |
| 82 | version: 'ES2020' |
| 83 | }, |
| 84 | markdown: { |
| 85 | parser: 'marked', |
| 86 | version: '1.1.0' |
| 87 | }, |
| 88 | positionEncodings: [PositionEncodingKind.UTF16] |
| 89 | }, |
| 90 | textDocument: { |
| 91 | completion: { |
| 92 | completionItem: { |
| 93 | snippetSupport: true, |
| 94 | documentationFormat: ['markdown', 'plaintext'], |
| 95 | insertReplaceSupport: true, |
| 96 | labelDetailsSupport: true |
| 97 | } |
| 98 | }, |
| 99 | hover: { |
| 100 | contentFormat: ['markdown', 'plaintext'] |
| 101 | }, |
| 102 | signatureHelp: { |
| 103 | signatureInformation: { |
| 104 | documentationFormat: ['markdown', 'plaintext'], |
| 105 | parameterInformation: { |
| 106 | labelOffsetSupport: true |
| 107 | }, |
| 108 | activeParameterSupport: true |
no test coverage detected