OmniSharp / csharp-language-server-protocol

Language Server Protocol in C#
MIT License
528 stars 104 forks source link

LSPServerOutputFilter filtering valid initialize progress messages #1390

Open JustinGrote opened 2 weeks ago

JustinGrote commented 2 weeks ago

Reproduce (per the provided sample in this repo)

                    .OnInitialize(
                        (languageServer, initializeParams, cancellationToken) =>
                        {
                            if (languageServer.WorkDoneManager.IsSupported)
                            {
                                initializeProgress = languageServer.WorkDoneManager.For(
                                    initializeParams,
                                    new WorkDoneProgressBegin()
                                    {
                                        Title = "Initializing PowerShell Editor Services",
                                        Percentage = 0,
                                    }
                                );
                            }
etc.

Expected

Progress messages with the initialize worktoken arrive and surfaced on the client as per the initialize spec

Actual

Filtered by LspServerOutputFilter

2024-11-09 18:23:18.598 [trace] Params: {
    "type": 2,
    "message": "OmniSharp.Extensions.LanguageServer.Server.LspServerOutputFilter: Tried to send request or notification before initialization was completed and will be sent later OutgoingNotification { Method = $/progress, Params = ProgressParams { Token = 23da5d56-3261-4793-9561-e91663a356e6, Value = {\r\n  \"title\": \"Initializing PowerShell Editor Services\",\r\n  \"percentage\": 0,\r\n  \"kind\": \"begin\"\r\n} }, TraceParent = , TraceState =  } | @Request='OutgoingNotification { Method = $/progress, Params = ProgressParams { Token = 23da5d56-3261-4793-9561-e91663a356e6, Value = {\r\n  \"title\": \"Initializing PowerShell Editor Services\",\r\n  \"percentage\": 0,\r\n  \"kind\": \"begin\"\r\n} }, TraceParent = , TraceState =  }'"
}
2024-11-09 18:23:18.606 [trace] ◀️ notification 'window/logMessage'.
2024-11-09 18:23:18.606 [trace] Params: {
    "type": 2,
    "message": "OmniSharp.Extensions.LanguageServer.Server.LspServerOutputFilter: Tried to send request or notification before initialization was completed and will be sent later OutgoingNotification { Method = $/progress, Params = ProgressParams { Token = 23da5d56-3261-4793-9561-e91663a356e6, Value = {\r\n  \"percentage\": 50,\r\n  \"kind\": \"report\",\r\n  \"message\": \"Fetching PSES Internal Host\"\r\n} }, TraceParent = , TraceState =  } | @Request='OutgoingNotification { Method = $/progress, Params = ProgressParams { Token = 23da5d56-3261-4793-9561-e91663a356e6, Value = {\r\n  \"percentage\": 50,\r\n  \"kind\": \"report\",\r\n  \"message\": \"Fetching PSES Internal Host\"\r\n} }, TraceParent = , TraceState =  }'"
}
andyleejordan commented 2 weeks ago

Unfortunately I have to say: don't expect a fix any time soon. This project is treading water sadly.

JustinGrote commented 2 weeks ago

@andyleejordan wasn't counting on it, just noting for prosperity since I found it :)