Created attachment 174435 [details] Kate, showing backspaces before a bunch of special characters SUMMARY The hover text from language servers contains backspaces before many special characters, including: .`!#*(){}[]\ STEPS TO REPRODUCE 1. Configure the YAML LSP to enable hover and receive from the schema store: { "servers": { "yaml": { "command": ["yaml-language-server", "--stdio"], "url": "https://github.com/redhat-developer/yaml-language-server", "highlightingModeRegex": "^YAML$", "settings": { "yaml": { "hover": true, "schemaStore": { "enable": true } } } } } } 2. Create a "rockcraft.yaml" file with the following contents: name: my-name title: blah summary: thing description: description base: ubuntu@24.04 platforms: amd64: parts: {} 3. Hover over the "name" field OBSERVED RESULT Hover text contains several backslashes. For example, the first paragraph reads as: "Valid names for rocks\. It matches the accepted values for pebble layer files:" EXPECTED RESULT Hover text does not contain these backslashes. The first paragraph should read: "Valid names for rocks. It matches the accepted values for pebble layer files:" Compare to Visual Studio Code with the Red Hat YAML LSP extension installed. SOFTWARE/OS VERSIONS Operating System: Kubuntu 24.10 KDE Plasma Version: 6.1.5 KDE Frameworks Version: 6.6.0 Qt Version: 6.6.2 Kernel Version: 6.11.0-8-generic (64-bit) Graphics Platform: Wayland Processors: 16 × AMD Ryzen 7 7840U w/ Radeon 780M Graphics Memory: 60.6 GiB of RAM Graphics Processor: AMD Radeon 780M ADDITIONAL INFORMATION The schema for rockcraft.yaml can be found at: https://raw.githubusercontent.com/canonical/rockcraft/main/schema/rockcraft.json The actual value that comes out of the server at this point, according to lsp-devtools, is: { "jsonrpc": "2.0", "id": 3, "result": { "contents": [ "Project Name\n\nValid names for rocks\\. It matches the accepted values for pebble layer files:\n\n\\- must start with a lowercase letter \\[a\\-z\\]\n\n\\- must contain only lowercase letters \\[a\\-z\\], numbers \\[0\\-9\\] or hyphens\n\n\\- must not end with a hyphen, and must not contain two or more consecutive hyphens\n" ], "range": { "start": { "line": 0, "character": 0 }, "end": { "line": 0, "character": 4 } } } }
I wonder if its the server's fault or our fault. If the server escapes markdown characters by putting backslashes, thats how they will appear...
Created attachment 174623 [details] Emacs not showing these backslashes
Created attachment 174624 [details] Pycharm not showing these backslashes
Created attachment 174625 [details] vscode not showing slashes
Created attachment 174629 [details] Visual Studio Code not showing backslashes
(In reply to Waqar Ahmed from comment #1) > I wonder if its the server's fault or our fault. If the server escapes > markdown characters by putting backslashes, thats how they will appear... I was initially working to create a report on the YAML language server, but I noticed that kate was also behaving this way with the vscode JSON language server. VSCode doesn't show this same behaviour though, either in JSON or in YAML. I asked some coworkers to compare with their text editors and got the following: - Emacs appears to behave mostly-correctly, but ignores the backslashes that are undoing the "markdownification" of bullet points and then treats those hyphens as bullet points - PyCharm eats the newlines, but doesn't include the slashes (Incorrect because a double-newline in Markdown should be treated as a newline in the resulting formatted document) - VSCode behaves what appears to be "most correctly" from a user perspective, as the contents field is correctly turned into a string (converting "\n" in the raw JSON to a newline character and unescaping "\\" to a single "\"), and then that string is treated as Markdown (including unescaping characters - see: https://www.markdownguide.org/basic-syntax/#characters-you-can-escape) Looking further, the current protocol specification shows the "contents" field to be one of three types (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_hover). In this case, it's a plain string, which is one of the two forms of the MarkedString type (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#markedString). While this is a deprecated type, the relevance here is that the MarkedString is a union type either of a plain string which needs to be rendered in (presumably GitHub dialect) Markdown or an object that provides both the language and the value.
While researching the last comment I found that someone had reported this in the YAML language server: https://github.com/redhat-developer/yaml-language-server/issues/837 I made a comment there because the research displayed in my last comment makes me think that it is behaving correctly, but I wanted to cross-link the bugs in both directions.
Created attachment 174670 [details] yaml server hover on master This is how it looks like on latest master. I think this got fixed with the recent changes to hover code. Can you try the latest master? We have app-images available I think
Please feel free to reopen if it isn't resolved