helix-editor / helix

A post-modern modal text editor.
https://helix-editor.com
Mozilla Public License 2.0
32.74k stars 2.41k forks source link

Implement `window/showMessageRequest` in LSP client #4699

Open ckipp01 opened 1 year ago

ckipp01 commented 1 year ago

Some servers will make use of this. You can see it in the spec here. An example of a server that uses this is Metals, which is the language server for Scala. We use this when a user first opens up a workspace to prompt them to import the workspace. A request looks like this:

[Trace - 03:48:41 pm] Sending request 'window/showMessageRequest - (2)'
Params: {
  "actions": [
    {
      "title": "Import build"
    },
    {
      "title": "Not now"
    },
    {
      "title": "Don\u0027t show again"
    }
  ],
  "type": 3,
  "message": "New sbt workspace detected, would you like to import the build?"
}

Having support for this would be great. There's also a handful of other usecases with Metals for this request.

cringeops commented 7 months ago

Unfortunately, the latest 23.10 release still doesn't work properly with ansible-language-server.

2024-02-10T14:05:07.568 helix_term::application [ERROR] Language Server: Method window/showMessageRequest not found in request 3
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "/usr/local/lib/node_modules/@ansible/ansible-language-server/node_modules/vscode-jsonrpc/lib/common/connection.js:565\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "                        responsePromise.reject(new messages_1.ResponseError(error.code, error.message, error.data));\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "                                               ^\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "ResponseError: Method not found: window/showMessageRequest\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "    at handleResponse (/usr/local/lib/node_modules/@ansible/ansible-language-server/node_modules/vscode-jsonrpc/lib/common/connection.js:565:48)\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "    at handleMessage (/usr/local/lib/node_modules/@ansible/ansible-language-server/node_modules/vscode-jsonrpc/lib/common/connection.js:345:13)\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "    at processMessageQueue (/usr/local/lib/node_modules/@ansible/ansible-language-server/node_modules/vscode-jsonrpc/lib/common/connection.js:362:17)\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "    at Immediate.<anonymous> (/usr/local/lib/node_modules/@ansible/ansible-language-server/node_modules/vscode-jsonrpc/lib/common/connection.js:334:13)\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "    at process.processImmediate (node:internal/timers:476:21) {\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "  code: -32601,\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "  data: undefined\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "}\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "\n"
2024-02-10T14:05:07.569 helix_lsp::transport [ERROR] ansible-language-server err <- "Node.js v18.19.0\n"
2024-02-10T14:05:07.574 helix_lsp::transport [ERROR] ansible-language-server err: <- StreamClosed
2024-02-10T14:05:07.703 helix_term::application [WARN] Ignoring a client/registerCapability request because dynamic capability registration is not enabled. Please report this upstream to the language server
jba commented 7 months ago

I'm having the same issue with gopls, which is trying to tell me about a bad config:

helix_term::application [WARN] unhandled window/showMessage: ShowMessageParams { typ: Error, message: "Invalid settings: unexpected gopls setting \"moose\"; unexpected gopls setting \"ui\"" }