@@ -23,6 +23,9 @@ import fluxWorkerUrl from 'worker-plugin/loader!./worker/flux.worker'
2323import Fallback from 'src/languageSupport/languages/flux/lsp/worker/flux.fallback'
2424import { EditorType } from 'src/types'
2525
26+ // error notification
27+ import { reportErrorThroughHoneyBadger } from 'src/shared/utils/errors'
28+
2629// install Monaco language client services
2730MonacoServices . install ( monaco )
2831
@@ -52,6 +55,17 @@ function createLanguageClient(
5255
5356let worker : Worker , messageReader , messageWriter , prelude
5457
58+ const handleConnectionClose = ( ) => {
59+ reportErrorThroughHoneyBadger ( new Error ( 'LSP connection closed.' ) , {
60+ name : 'LSP worker' ,
61+ } )
62+ }
63+
64+ const handleConnectionError = ( [ error , , ] : [ Error , unknown , number ] ) => {
65+ // LSP worker will not be stopped. Is only an unhandled error.
66+ reportErrorThroughHoneyBadger ( error , { name : 'LSP worker' } )
67+ }
68+
5569export function initLspWorker ( ) {
5670 if ( worker ) {
5771 return
@@ -68,9 +82,11 @@ export function initLspWorker() {
6882 const connection = createMessageConnection ( messageReader , messageWriter )
6983 const languageClient = createLanguageClient ( connection )
7084 const disposable = languageClient . start ( )
85+ connection . onError ( e => handleConnectionError ( e ) )
7186 connection . onClose ( ( ) => {
7287 disposable . dispose ( )
7388 prelude . dispose ( )
89+ handleConnectionClose ( )
7490 } )
7591}
7692initLspWorker ( )
0 commit comments