Package: emacs;
Reported by: Troy Brown <brownts <at> troybrown.dev>
Date: Thu, 12 Dec 2024 00:47:02 UTC
Severity: normal
Found in version 30.0.90
To reply to this bug, email your comments to 74807 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Thu, 12 Dec 2024 00:47:02 GMT) Full text and rfc822 format available.Troy Brown <brownts <at> troybrown.dev>
:bug-gnu-emacs <at> gnu.org
.
(Thu, 12 Dec 2024 00:47:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Troy Brown <brownts <at> troybrown.dev> To: bug-gnu-emacs <at> gnu.org Cc: Felician Nemeth <felician.nemeth <at> gmail.com>, João Távora <joaotavora <at> gmail.com> Subject: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Wed, 11 Dec 2024 19:46:03 -0500
I've run across a situation where Eglot receives a documentation string as part of a "completionItem/resolve". The documentation is being provided as a regular "string", not MarkupContent, yet it is being rendered as markup. Since the string contains characters which are being interpreted as markdown (e.g., ":"), it causes the documentation to be rendered incorrectly. [jsonrpc] e[19:22:22.458] <-- completionItem/resolve[21] {"jsonrpc":"2.0","id":21,"result":{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} I believe this is because `eglot-completion-at-point` calls `eglot--format-markup` for the documentation string provided in the CompletionItem without first checking to see if it really should be formatted (i.e., if it is a string it shouldn't be formatted). While `eglot--format-markup` will handle strings, it should only be passed strings which are intended to be markup formated (specified as MarkedString in the specification). I believe this issue might affect more than just the documentation string for CompletionItem, it's possible this also affects other places which specify fields as "string | MarkupContent" (such as the SignatureInformation documentation field).
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Thu, 12 Dec 2024 08:31:01 GMT) Full text and rfc822 format available.Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Troy Brown <brownts <at> troybrown.dev> Cc: "simon254--- via Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>, Felician Nemeth <felician.nemeth <at> gmail.com> Subject: Re: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Thu, 12 Dec 2024 08:30:05 +0000
[Message part 1 (text/plain, inline)]
Please provide more of the eglot events log. Thanks, João On Thu, Dec 12, 2024, 00:46 Troy Brown <brownts <at> troybrown.dev> wrote: > I've run across a situation where Eglot receives a documentation > string as part of a "completionItem/resolve". The documentation is > being provided as a regular "string", not MarkupContent, yet it is > being rendered as markup. Since the string contains characters which > are being interpreted as markdown (e.g., ":"), it causes the > documentation to be rendered incorrectly. > > [jsonrpc] e[19:22:22.458] <-- completionItem/resolve[21] > > {"jsonrpc":"2.0","id":21,"result":{"label":"End_Of_Line","documentation":"End > of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} > > I believe this is because `eglot-completion-at-point` calls > `eglot--format-markup` for the documentation string provided in the > CompletionItem without first checking to see if it really should be > formatted (i.e., if it is a string it shouldn't be formatted). While > `eglot--format-markup` will handle strings, it should only be passed > strings which are intended to be markup formated (specified as > MarkedString in the specification). > > I believe this issue might affect more than just the documentation > string for CompletionItem, it's possible this also affects other > places which specify fields as "string | MarkupContent" (such as the > SignatureInformation documentation field). >
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Thu, 12 Dec 2024 13:33:03 GMT) Full text and rfc822 format available.Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Troy Brown <brownts <at> troybrown.dev> To: João Távora <joaotavora <at> gmail.com> Cc: "simon254--- via Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>, Felician Nemeth <felician.nemeth <at> gmail.com> Subject: Re: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Thu, 12 Dec 2024 08:32:37 -0500
On Thu, Dec 12, 2024 at 3:30 AM João Távora <joaotavora <at> gmail.com> wrote: > > Please provide more of the eglot events log. > I wasn't sure how much more of the log you wanted, so I re-ran the scenario and provided the entire log. [jsonrpc] D[08:22:58.272] Running language server: ada_language_server --language-gpr [jsonrpc] e[08:22:58.272] --> initialize[1] {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"processId":2262352,"clientInfo":{"name":"Eglot","version":"1.17.30"},"rootPath":"/home/troy/","rootUri":"file:///home/troy","initializationOptions":{},"capabilities":{"workspace":{"applyEdit":true,"executeCommand":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":false},"configuration":true,"workspaceFolders":true},"textDocument":{"synchronization":{"dynamicRegistration":false,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":false,"completionItem":{"snippetSupport":true,"deprecatedSupport":true,"resolveSupport":{"properties":["documentation","details","additionalTextEdits"]},"tagSupport":{"valueSet":[1]}},"contextSupport":true},"hover":{"dynamicRegistration":false,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":false,"signatureInformation":{"parameterInformation":{"labelOffsetSupport":true},"documentationFormat":["markdown","plaintext"],"activeParameterSupport":true}},"references":{"dynamicRegistration":false},"definition":{"dynamicRegistration":false,"linkSupport":true},"declaration":{"dynamicRegistration":false,"linkSupport":true},"implementation":{"dynamicRegistration":false,"linkSupport":true},"typeDefinition":{"dynamicRegistration":false,"linkSupport":true},"documentSymbol":{"dynamicRegistration":false,"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"documentHighlight":{"dynamicRegistration":false},"codeAction":{"dynamicRegistration":false,"resolveSupport":{"properties":["edit","command"]},"dataSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"isPreferredSupport":true},"formatting":{"dynamicRegistration":false},"rangeFormatting":{"dynamicRegistration":false},"rename":{"dynamicRegistration":false},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"relatedInformation":false,"codeDescriptionSupport":false,"tagSupport":{"valueSet":[1,2]}}},"window":{"showDocument":{"support":true},"workDoneProgress":true},"general":{"positionEncodings":["utf-32","utf-8","utf-16"]},"experimental":{}},"workspaceFolders":[{"uri":"file:///home/troy","name":"~/"}]}} [jsonrpc] e[08:22:58.336] <-- initialize[1] {"jsonrpc":"2.0","id":1,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":1},"completionProvider":{"triggerCharacters":[" ",".","'"],"resolveProvider":true},"hoverProvider":true,"declarationProvider":true,"definitionProvider":true,"documentSymbolProvider":{}}}} [jsonrpc] e[08:22:58.336] --> initialized {"jsonrpc":"2.0","method":"initialized","params":{}} [jsonrpc] e[08:22:58.338] --> textDocument/didOpen {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":0,"languageId":"gpr","text":"project Hello_World is\n\n package Format is\n end Format;\n\nend Hello_World;\n"}}} [jsonrpc] e[08:22:58.338] --> workspace/didChangeConfiguration {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}} [jsonrpc] e[08:22:58.845] --> textDocument/hover[2] {"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":3,"character":0}}} [jsonrpc] e[08:22:59.336] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} [jsonrpc] e[08:23:00.291] <-- textDocument/hover[2] {"jsonrpc":"2.0","id":2,"result":null} [jsonrpc] e[08:23:00.839] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":1},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:00.839] --> textDocument/hover[3] {"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":3}}} [jsonrpc] e[08:23:01.822] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} [jsonrpc] e[08:23:01.823] <-- textDocument/hover[3] {"jsonrpc":"2.0","id":3,"result":null} [jsonrpc] e[08:23:01.839] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":2},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n\n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:01.839] --> textDocument/hover[4] {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":0}}} [jsonrpc] e[08:23:02.830] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} [jsonrpc] e[08:23:02.861] <-- textDocument/hover[4] {"jsonrpc":"2.0","id":4,"result":null} [jsonrpc] e[08:23:03.358] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":3},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n \n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:03.358] --> textDocument/hover[5] {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":6}}} [jsonrpc] e[08:23:04.098] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":4},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n for \n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:04.098] --> textDocument/completion[6] {"jsonrpc":"2.0","id":6,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":10},"context":{"triggerKind":2,"triggerCharacter":" "}}} [jsonrpc] e[08:23:04.303] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} [jsonrpc] e[08:23:04.305] <-- textDocument/hover[5] {"jsonrpc":"2.0","id":5,"result":null} [jsonrpc] i[08:23:04.305] anxious continuation to 5 can't run, held up by (6) [jsonrpc] e[08:23:04.401] --> textDocument/hover[7] {"jsonrpc":"2.0","id":7,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":10}}} [jsonrpc] e[08:23:04.568] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected Identifier, got 'end'"}]}} [jsonrpc] e[08:23:04.573] <-- textDocument/completion[6] {"jsonrpc":"2.0","id":6,"result":{"isIncomplete":false,"items":[{"label":"Width","documentation":"Max line width","data":["Format","Width"]},{"label":"Indentation","documentation":"Indentation size","data":["Format","Indentation"]},{"label":"Indentation_Kind","documentation":"Indentation kind: spaces | tabs","data":["Format","Indentation_Kind"]},{"label":"Indentation_Continuation","documentation":"Continuation Line Indentation size","data":["Format","Indentation_Continuation"]},{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]},{"label":"Charset","documentation":"Charset to use for source decoding","data":["Format","Charset"]}]}} [jsonrpc] i[08:23:04.573] anxious continuation to 5 running now [jsonrpc] e[08:23:04.573] <-- textDocument/hover[7] {"jsonrpc":"2.0","id":7,"result":null} [jsonrpc] e[08:23:04.585] --> completionItem/resolve[8] {"jsonrpc":"2.0","id":8,"method":"completionItem/resolve","params":{"label":"Charset","documentation":"Charset to use for source decoding","data":["Format","Charset"]}} [jsonrpc] e[08:23:04.590] <-- completionItem/resolve[8] {"jsonrpc":"2.0","id":8,"result":{"label":"Charset","documentation":"Charset to use for source decoding","data":["Format","Charset"]}} [jsonrpc] e[08:23:06.553] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":5},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n for en\n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:06.553] --> completionItem/resolve[9] {"jsonrpc":"2.0","id":9,"method":"completionItem/resolve","params":{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} [jsonrpc] e[08:23:06.743] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":6},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n for end\n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:06.743] --> completionItem/resolve[10] {"jsonrpc":"2.0","id":10,"method":"completionItem/resolve","params":{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} [jsonrpc] e[08:23:06.823] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected 'use', got 'end'"}]}} [jsonrpc] e[08:23:06.830] <-- [9] {"jsonrpc":"2.0","id":9,"result":{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} [jsonrpc] i[08:23:06.830] [9] Response to request 9 which has been canceled [jsonrpc] e[08:23:07.076] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":4,"character":10},"end":{"line":4,"character":10}},"severity":1,"source":"project","message":"Expected Identifier, got 'end'"}]}} [jsonrpc] e[08:23:07.105] <-- completionItem/resolve[10] {"jsonrpc":"2.0","id":10,"result":{"label":"End_Of_Line","documentation":"End of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} [jsonrpc] e[08:23:07.245] --> textDocument/hover[11] {"jsonrpc":"2.0","id":11,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":13}}} [jsonrpc] e[08:23:07.257] <-- textDocument/hover[11] {"jsonrpc":"2.0","id":11,"result":null} [jsonrpc] e[08:23:08.466] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":7},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n for end_of\n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:08.466] --> textDocument/hover[12] {"jsonrpc":"2.0","id":12,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":16}}} [jsonrpc] e[08:23:08.725] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected 'use', got 'end'"}]}} [jsonrpc] e[08:23:08.727] <-- textDocument/hover[12] {"jsonrpc":"2.0","id":12,"result":null} [jsonrpc] e[08:23:09.013] --> textDocument/didChange {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":8},"contentChanges":[{"text":"project Hello_World is\n\n package Format is\n\n for End_Of_Line\n \n end Format;\n\nend Hello_World;\n"}]}} [jsonrpc] e[08:23:09.281] <-- textDocument/publishDiagnostics {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected 'use', got 'end'"}]}} [jsonrpc] e[08:23:09.518] --> textDocument/hover[13] {"jsonrpc":"2.0","id":13,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":21}}} [jsonrpc] e[08:23:09.531] <-- textDocument/hover[13] {"jsonrpc":"2.0","id":13,"result":null}
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Sat, 28 Dec 2024 11:04:02 GMT) Full text and rfc822 format available.Message #14 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: joaotavora <at> gmail.com, Troy Brown <brownts <at> troybrown.dev> Cc: 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Sat, 28 Dec 2024 13:02:40 +0200
Ping! Can we make some progress here, please? > Cc: 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com > From: Troy Brown <brownts <at> troybrown.dev> > Date: Thu, 12 Dec 2024 08:32:37 -0500 > > On Thu, Dec 12, 2024 at 3:30 AM João Távora <joaotavora <at> gmail.com> wrote: > > > > Please provide more of the eglot events log. > > > > I wasn't sure how much more of the log you wanted, so I re-ran the > scenario and provided the entire log. > > [jsonrpc] D[08:22:58.272] Running language server: ada_language_server > --language-gpr > [jsonrpc] e[08:22:58.272] --> initialize[1] > {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"processId":2262352,"clientInfo":{"name":"Eglot","version":"1.17.30"},"rootPath":"/home/troy/","rootUri":"file:///home/troy","initializationOptions":{},"capabilities":{"workspace":{"applyEdit":true,"executeCommand":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":false},"configuration":true,"workspaceFolders":true},"textDocument":{"synchronization":{"dynamicRegistration":false,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":false,"completionItem":{"snippetSupport":true,"deprecatedSupport":true,"resolveSupport":{"properties":["documentation","details","additionalTextEdits"]},"tagSupport":{"valueSet":[1]}},"contextSupport":true},"hover":{"dynamicRegistration":false,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":false,"signatureInformation":{"parameterInformation":{"labelOffsetSupport":true},"documentationFormat":["markdown","plaintext"],"activeParameterSupport":true}},"references":{"dynamicRegistration":false},"definition":{"dynamicRegistration":false,"linkSupport":true},"declaration":{"dynamicRegistration":false,"linkSupport":true},"implementation":{"dynamicRegistration":false,"linkSupport":true},"typeDefinition":{"dynamicRegistration":false,"linkSupport":true},"documentSymbol":{"dynamicRegistration":false,"hierarchicalDocumentSymbolSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"documentHighlight":{"dynamicRegistration":false},"codeAction":{"dynamicRegistration":false,"resolveSupport":{"properties":["edit","command"]},"dataSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"isPreferredSupport":true},"formatting":{"dynamicRegistration":false},"rangeFormatting":{"dynamicRegistration":false},"rename":{"dynamicRegistration":false},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"relatedInformation":false,"codeDescriptionSupport":false,"tagSupport":{"valueSet":[1,2]}}},"window":{"showDocument":{"support":true},"workDoneProgress":true},"general":{"positionEncodings":["utf-32","utf-8","utf-16"]},"experimental":{}},"workspaceFolders":[{"uri":"file:///home/troy","name":"~/"}]}} > [jsonrpc] e[08:22:58.336] <-- initialize[1] > {"jsonrpc":"2.0","id":1,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":1},"completionProvider":{"triggerCharacters":[" > ",".","'"],"resolveProvider":true},"hoverProvider":true,"declarationProvider":true,"definitionProvider":true,"documentSymbolProvider":{}}}} > [jsonrpc] e[08:22:58.336] --> initialized > {"jsonrpc":"2.0","method":"initialized","params":{}} > [jsonrpc] e[08:22:58.338] --> textDocument/didOpen > {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":0,"languageId":"gpr","text":"project > Hello_World is\n\n package Format is\n end Format;\n\nend > Hello_World;\n"}}} > [jsonrpc] e[08:22:58.338] --> workspace/didChangeConfiguration > {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{}}} > [jsonrpc] e[08:22:58.845] --> textDocument/hover[2] > {"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":3,"character":0}}} > [jsonrpc] e[08:22:59.336] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} > [jsonrpc] e[08:23:00.291] <-- textDocument/hover[2] > {"jsonrpc":"2.0","id":2,"result":null} > [jsonrpc] e[08:23:00.839] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":1},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n end Format;\n\nend > Hello_World;\n"}]}} > [jsonrpc] e[08:23:00.839] --> textDocument/hover[3] > {"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":3}}} > [jsonrpc] e[08:23:01.822] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} > [jsonrpc] e[08:23:01.823] <-- textDocument/hover[3] > {"jsonrpc":"2.0","id":3,"result":null} > [jsonrpc] e[08:23:01.839] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":2},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n\n end Format;\n\nend > Hello_World;\n"}]}} > [jsonrpc] e[08:23:01.839] --> textDocument/hover[4] > {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":0}}} > [jsonrpc] e[08:23:02.830] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} > [jsonrpc] e[08:23:02.861] <-- textDocument/hover[4] > {"jsonrpc":"2.0","id":4,"result":null} > [jsonrpc] e[08:23:03.358] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":3},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n \n \n end > Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:03.358] --> textDocument/hover[5] > {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":6}}} > [jsonrpc] e[08:23:04.098] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":4},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n for \n \n end > Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:04.098] --> textDocument/completion[6] > {"jsonrpc":"2.0","id":6,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":10},"context":{"triggerKind":2,"triggerCharacter":" > "}}} > [jsonrpc] e[08:23:04.303] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[]}} > [jsonrpc] e[08:23:04.305] <-- textDocument/hover[5] > {"jsonrpc":"2.0","id":5,"result":null} > [jsonrpc] i[08:23:04.305] anxious continuation to 5 can't run, held up by (6) > [jsonrpc] e[08:23:04.401] --> textDocument/hover[7] > {"jsonrpc":"2.0","id":7,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":10}}} > [jsonrpc] e[08:23:04.568] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected > Identifier, got 'end'"}]}} > [jsonrpc] e[08:23:04.573] <-- textDocument/completion[6] > {"jsonrpc":"2.0","id":6,"result":{"isIncomplete":false,"items":[{"label":"Width","documentation":"Max > line width","data":["Format","Width"]},{"label":"Indentation","documentation":"Indentation > size","data":["Format","Indentation"]},{"label":"Indentation_Kind","documentation":"Indentation > kind: spaces | tabs","data":["Format","Indentation_Kind"]},{"label":"Indentation_Continuation","documentation":"Continuation > Line Indentation > size","data":["Format","Indentation_Continuation"]},{"label":"End_Of_Line","documentation":"End > of line sequence: lf | > crlf","data":["Format","End_Of_Line"]},{"label":"Charset","documentation":"Charset > to use for source decoding","data":["Format","Charset"]}]}} > [jsonrpc] i[08:23:04.573] anxious continuation to 5 running now > [jsonrpc] e[08:23:04.573] <-- textDocument/hover[7] > {"jsonrpc":"2.0","id":7,"result":null} > [jsonrpc] e[08:23:04.585] --> completionItem/resolve[8] > {"jsonrpc":"2.0","id":8,"method":"completionItem/resolve","params":{"label":"Charset","documentation":"Charset > to use for source decoding","data":["Format","Charset"]}} > [jsonrpc] e[08:23:04.590] <-- completionItem/resolve[8] > {"jsonrpc":"2.0","id":8,"result":{"label":"Charset","documentation":"Charset > to use for source decoding","data":["Format","Charset"]}} > [jsonrpc] e[08:23:06.553] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":5},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n for en\n \n end > Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:06.553] --> completionItem/resolve[9] > {"jsonrpc":"2.0","id":9,"method":"completionItem/resolve","params":{"label":"End_Of_Line","documentation":"End > of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} > [jsonrpc] e[08:23:06.743] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":6},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n for end\n \n > end Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:06.743] --> completionItem/resolve[10] > {"jsonrpc":"2.0","id":10,"method":"completionItem/resolve","params":{"label":"End_Of_Line","documentation":"End > of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} > [jsonrpc] e[08:23:06.823] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected > 'use', got 'end'"}]}} > [jsonrpc] e[08:23:06.830] <-- [9] > {"jsonrpc":"2.0","id":9,"result":{"label":"End_Of_Line","documentation":"End > of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} > [jsonrpc] i[08:23:06.830] [9] Response to request 9 which has been canceled > [jsonrpc] e[08:23:07.076] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":4,"character":10},"end":{"line":4,"character":10}},"severity":1,"source":"project","message":"Expected > Identifier, got 'end'"}]}} > [jsonrpc] e[08:23:07.105] <-- completionItem/resolve[10] > {"jsonrpc":"2.0","id":10,"result":{"label":"End_Of_Line","documentation":"End > of line sequence: lf | crlf","data":["Format","End_Of_Line"]}} > [jsonrpc] e[08:23:07.245] --> textDocument/hover[11] > {"jsonrpc":"2.0","id":11,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":13}}} > [jsonrpc] e[08:23:07.257] <-- textDocument/hover[11] > {"jsonrpc":"2.0","id":11,"result":null} > [jsonrpc] e[08:23:08.466] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":7},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n for end_of\n \n > end Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:08.466] --> textDocument/hover[12] > {"jsonrpc":"2.0","id":12,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":16}}} > [jsonrpc] e[08:23:08.725] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected > 'use', got 'end'"}]}} > [jsonrpc] e[08:23:08.727] <-- textDocument/hover[12] > {"jsonrpc":"2.0","id":12,"result":null} > [jsonrpc] e[08:23:09.013] --> textDocument/didChange > {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr","version":8},"contentChanges":[{"text":"project > Hello_World is\n\n package Format is\n\n for End_Of_Line\n > \n end Format;\n\nend Hello_World;\n"}]}} > [jsonrpc] e[08:23:09.281] <-- textDocument/publishDiagnostics > {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/junk/hello_world.gpr","diagnostics":[{"range":{"start":{"line":6,"character":3},"end":{"line":6,"character":3}},"severity":1,"source":"project","message":"Expected > 'use', got 'end'"}]}} > [jsonrpc] e[08:23:09.518] --> textDocument/hover[13] > {"jsonrpc":"2.0","id":13,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":21}}} > [jsonrpc] e[08:23:09.531] <-- textDocument/hover[13] > {"jsonrpc":"2.0","id":13,"result":null} > > > >
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Mon, 06 Jan 2025 11:57:02 GMT) Full text and rfc822 format available.Message #17 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: felician.nemeth <at> gmail.com, Troy Brown <brownts <at> troybrown.dev>, 74807 <at> debbugs.gnu.org Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Mon, 06 Jan 2025 11:56:09 +0000
Eli Zaretskii <eliz <at> gnu.org> writes: > Ping! Can we make some progress here, please? >> [jsonrpc] e[08:23:09.518] --> textDocument/hover[13] >> {"jsonrpc":"2.0","id":13,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/troy/junk/hello_world.gpr"},"position":{"line":4,"character":21}}} >> [jsonrpc] e[08:23:09.531] <-- textDocument/hover[13] >> {"jsonrpc":"2.0","id":13,"result":null} Hello Troy, I've finally had time to look at your bug report. > I've run across a situation where Eglot receives a documentation > string as part of a "completionItem/resolve". The documentation is > being provided as a regular "string", not MarkupContent, yet it is > being rendered as markup. Since the string contains characters which > are being interpreted as markdown (e.g., ":"), it causes the > documentation to be rendered incorrectly. After perusing the spec, I'm not sure the simple strings cannot be rendered as Markdown by the client. The spec doesn't seem to disambiguate this. All it says about the documentation field of a Completion structure, besides its polymorphic type, is that it is a /** * A human-readable string that represents a doc-comment. */ documentation?: string | MarkupContent; Anyway I think if the server wants to ensure something is _not_ rendered as Markdown it should use the more advanced MarkupContent structure and explicitly specify 'plaintext' in its MarkupKind field. I understand this sounds counter-intuitive, but I have to be very careful to do these kinds of changes. As you know, Eglot works with a large body of servers, and I wouldn't be at all surprised that some of those servers (or, more importantly, regulat users of those servers) do actually expect plain strings to be rendered as Markdown when such a renderer is available. Lastly, and adding to my reluctance to address this in code, I don't understand what ':' is tripping the renderer here. Last I checked, ':' doesn't have any special meaning in Markdown, especially in the middle of the sequence. Emacs's `markdown-view-mode` from the markdown.el package does give the left and right parts of: Indentation kind: spaces | tabs a different face (I don't know why, the online renderers I've tried do not do that). But I wouldn't say it is being rendered "incorrectly". Anyway, I lean strongly towards not touching this. João
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Mon, 06 Jan 2025 23:57:01 GMT) Full text and rfc822 format available.Message #20 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: Troy Brown <brownts <at> troybrown.dev> To: João Távora <joaotavora <at> gmail.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Mon, 6 Jan 2025 18:56:39 -0500
On Mon, Jan 6, 2025 at 6:56 AM João Távora <joaotavora <at> gmail.com> wrote: > > Hello Troy, I've finally had time to look at your bug report. Thanks, I appreciate it. > > > I've run across a situation where Eglot receives a documentation > > string as part of a "completionItem/resolve". The documentation is > > being provided as a regular "string", not MarkupContent, yet it is > > being rendered as markup. Since the string contains characters which > > are being interpreted as markdown (e.g., ":"), it causes the > > documentation to be rendered incorrectly. > > After perusing the spec, I'm not sure the simple strings cannot be > rendered as Markdown by the client. The spec doesn't seem to > disambiguate this. All it says about the documentation field of a > Completion structure, besides its polymorphic type, is that it is a > > /** > * A human-readable string that represents a doc-comment. > */ > documentation?: string | MarkupContent; > > > Anyway I think if the server wants to ensure something is _not_ rendered > as Markdown it should use the more advanced MarkupContent structure and > explicitly specify 'plaintext' in its MarkupKind field. > > I understand this sounds counter-intuitive, but I have to be very > careful to do these kinds of changes. As you know, Eglot works with a > large body of servers, and I wouldn't be at all surprised that some of > those servers (or, more importantly, regulat users of those servers) do > actually expect plain strings to be rendered as Markdown when such a > renderer is available. > I'm fairly confident that plain text is heavily implied by the type being "string". If the spec wanted to indicate that the string could be markup, it would have been specified as "MarkedString" instead of "string", like this: documentation?: MarkedString | MarkupContent; The fact that it is specified as "string" strongly suggests that this was intentional in order to indicate that it does not contain markup. I understand, and appreciate your careful consideration of these kinds of changes, however even the VSCode implementation does not treat this as markdown, as can be seen at the following link where when the CompletionItem.documentation is a "string", the markdown renderer is not applied to the documentation: https://github.com/microsoft/vscode/blob/aaa576acca01852119f6a6b0260cf5aa74a30c58/src/vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts#L168-L185 Furthermore, I would think that if, as you suggest, there were servers which expected plain strings to be rendered as Markdown here, the VSCode implementation would not avoid rendering plain strings as markdown. > Lastly, and adding to my reluctance to address this in code, I don't > understand what ':' is tripping the renderer here. Last I checked, ':' > doesn't have any special meaning in Markdown, especially in the middle > of the sequence. Emacs's `markdown-view-mode` from the markdown.el > package does give the left and right parts of: > > Indentation kind: spaces | tabs > > a different face (I don't know why, the online renderers I've tried do > not do that). But I wouldn't say it is being rendered "incorrectly". > While you might argue that the example I've shown is a fringe example, I'm sure you could envision other documentation content which uses characters which are interpreted as markup, and shouldn't be. I stand by my wording of "rendered incorrectly" when based on the content of the documentation, you might see it displayed differently, possibly more severely based on the documentation content. > Anyway, I lean strongly towards not touching this. I hope you reconsider, given the additional information I've provided. Thanks, Troy.
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Tue, 07 Jan 2025 00:29:02 GMT) Full text and rfc822 format available.Message #23 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Troy Brown <brownts <at> troybrown.dev> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Tue, 7 Jan 2025 00:28:47 +0000
On Mon, Jan 6, 2025 at 11:56 PM Troy Brown <brownts <at> troybrown.dev> wrote: > > careful to do these kinds of changes. As you know, Eglot works with a > > large body of servers, and I wouldn't be at all surprised that some of > > those servers (or, more importantly, regular users of those servers) do ... > Furthermore, I would think that if, as you suggest, there were servers > which expected plain strings to be rendered as Markdown here, the > VSCode implementation would not avoid rendering plain strings as > markdown. This VSCode argument is not meaningful to me. Not only does it not command any special authority over disambiguation of an ambiguous spec, but the "regular users of those servers" I'm concerned with are longtime Eglot users, not VSCoders. Those are the users I don't want to disturb. Who's to say that Eglot users of your ada-language-server aren't quite happy to see "Indentation kind" fontified with a certain face and "spaces | tabs" in another face? > While you might argue that the example I've shown is a fringe example, > I'm sure you could envision other documentation content which uses > characters which are interpreted as markup, and shouldn't be. I stand > by my wording of "rendered incorrectly" when based on the content of > the documentation, you might see it displayed differently, possibly > more severely based on the documentation content. Yes, it _could_ happen. But ostensibly it didn't happen in your case. And if it did happen to the point of "incorrectness", as you posit, then we would see non-contrived bug reports on the matter. And even then, a much better fix would be for the server to be precise about its want for plain text. João
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Wed, 08 Jan 2025 03:58:01 GMT) Full text and rfc822 format available.Message #26 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: Troy Brown <brownts <at> troybrown.dev> To: João Távora <joaotavora <at> gmail.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Tue, 7 Jan 2025 22:56:44 -0500
On Mon, Jan 6, 2025 at 7:28 PM João Távora <joaotavora <at> gmail.com> wrote: > > This VSCode argument is not meaningful to me. Not only does it not > command any special authority over disambiguation of an ambiguous spec, > but the "regular users of those servers" I'm concerned with are longtime > Eglot users, not VSCoders. I think it's a good indication that if users of a language server thought VSCode was behaving incorrectly, it would quickly be pointed out and corrected. Since the VSCode implementation stands as-is in this area, it is an indication that users of language servers believe that this is the correct behavior. The fact is, VSCode gets a lot more exposure than other LSP clients and should at least be used as a data point. I think it's unwise to completely disregard that information. > Those are the users I don't want to disturb. Who's to say that Eglot users > of your ada-language-server aren't quite happy to see "Indentation kind" > fontified with a certain face and "spaces | tabs" in another face? I'm not quite sure what your point is. I am both a user of Eglot and a user of the language server and I'm not happy with this behavior, nor do I think Eglot's behavior is correct. How is my experience any less important than any other user? I am trying to point out where the "Emacs experience" is subpar in an effort to correct those undesirable behaviors and improve my Emacs user experience. Moving on, I've done some digging and found historical information that I believe is relevant. Initially, the specification only included "string" for the documentation field. (i.e., "documentation?: string;"). Then there was a Github issue logged proposing to support markdown in the CompletionItem.documentation (see https://github.com/microsoft/language-server-protocol/issues/111). This is evidence that the original specification did not allow markdown for strings in the "documentation" field. The following is the commit where the specification was updated to add MarkupContent as an additional option, thus remaining backwards compatible for servers who continue to specify non-markdown documentation as strings in addition to allowing servers to provide markdown using (the new then) MarkupContent: https://github.com/microsoft/language-server-protocol/commit/692c225dcb737e287e393f148d193877b0a2dd54
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Wed, 08 Jan 2025 09:19:01 GMT) Full text and rfc822 format available.Message #29 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Troy Brown <brownts <at> troybrown.dev> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Wed, 08 Jan 2025 09:18:37 +0000
Troy Brown <brownts <at> troybrown.dev> writes: > On Mon, Jan 6, 2025 at 7:28 PM João Távora <joaotavora <at> gmail.com> wrote: > data point. I think it's unwise to completely disregard that > information. I'm sure to treasure your remarks about my wisdom going forward. >> Those are the users I don't want to disturb. Who's to say that Eglot users >> of your ada-language-server aren't quite happy to see "Indentation kind" >> fontified with a certain face and "spaces | tabs" in another face? > > I'm not quite sure what your point is. Other users may very well be content with the current Emacs behaviour, which gives them coloured documentation for ada-language-server. If I change it in the direction you argue, I destroy this value and create no new value. Is it still difficult to comprehend? > I am both a user of Eglot and a user of the language server and I'm > not happy with this behavior, nor do I think Eglot's behavior is > correct. How is my experience any less important than any other user? Never said it is. It's also no more important than other users. > I am trying to point out where the "Emacs experience" is subpar And you did that. Then I spent my time thinking about this and came to a different conclusion. > Moving on, I've done some digging and found historical information > that I believe is relevant. It's irrelevant, of course. Markdown is specifically designed to render non marked-up aka "plain" text reasonably. It would be much more relevant if you could actually find plaintext that Markdown mistakes for a link or something to get it to be actually harmful. Even then, because of what I've already stated, I'm not sure I'd change it. If it's such a hill to die on, I'd spend my time arguing with the ada-language-server author to specifically provide those snippets inside a MarkupContent struct. João
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Wed, 08 Jan 2025 23:38:02 GMT) Full text and rfc822 format available.Message #32 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: Troy Brown <brownts <at> troybrown.dev> To: João Távora <joaotavora <at> gmail.com> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Wed, 8 Jan 2025 18:37:22 -0500
On Wed, Jan 8, 2025 at 4:18 AM João Távora <joaotavora <at> gmail.com> wrote: > > > data point. I think it's unwise to completely disregard that > > information. > > I'm sure to treasure your remarks about my wisdom going forward. I don't know why you feel the need to be condescending, nor why you think it brings anything useful to this conversation. > Other users may very well be content with the current Emacs behaviour, > which gives them coloured documentation for ada-language-server. If I > change it in the direction you argue, I destroy this value and create no > new value. Is it still difficult to comprehend? As you have pointed out, it appears Emacs' Markdown mode is the one that renders this particular text that way. I don't know what value you think is added through inconsistency among LSP clients, it only lessens the user's experience, and when Language Servers don't directly target Eglot, it lessens the Emacs experience too (considering Eglot's "built-in" package status). Since you say you are "concerned with longtime Eglot users", I would think this would be important to you. It was not the intention of the Language Server authors to have plain text rendered as Markdown. Additionally, it's not just colored text, it may be underlined or italicised or something completely different based on the user's theme, which looks completely out of place with other documentation that doesn't happen to include characters which trigger special Markdown rendering. > > I am both a user of Eglot and a user of the language server and I'm > > not happy with this behavior, nor do I think Eglot's behavior is > > correct. How is my experience any less important than any other user? > > Never said it is. It's also no more important than other users. I never said, nor implied that my experience was more important than other users, I was only asking to be treated equally to your "longtime Eglot users", whoever that encompasses. Also, since Eglot is a built-in Emacs package, I would think you'd be concerned with all users of Eglot, not just "longtime users" and base decisions on technical merit. > > Moving on, I've done some digging and found historical information > > that I believe is relevant. > > It's irrelevant, of course. Markdown is specifically designed to render > non marked-up aka "plain" text reasonably. It would be much more > relevant if you could actually find plaintext that Markdown mistakes for > a link or something to get it to be actually harmful. > > Even then, because of what I've already stated, I'm not sure I'd change > it. It's not irrelevant, but I'm not going to debate it anymore as you appear to be entrenched in your opinion. I don't see the need to find another example that somehow exceeds your personal tolerance level, I've already demonstrated a perfectly reasonable example. > If it's such a hill to die on, I'd spend my time arguing with the > ada-language-server author to specifically provide those snippets inside > a MarkupContent struct. I probably will end up asking them to change this, but my approach is to first try to correct a problem before I ask someone else to workaround it. Troy.
bug-gnu-emacs <at> gnu.org
:bug#74807
; Package emacs
.
(Wed, 08 Jan 2025 23:46:02 GMT) Full text and rfc822 format available.Message #35 received at 74807 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Troy Brown <brownts <at> troybrown.dev> Cc: Eli Zaretskii <eliz <at> gnu.org>, 74807 <at> debbugs.gnu.org, felician.nemeth <at> gmail.com Subject: Re: bug#74807: 30.0.90; Eglot: Non-Markdown strings rendered as Markdown Date: Wed, 8 Jan 2025 23:45:27 +0000
On Wed, Jan 8, 2025 at 11:37 PM Troy Brown <brownts <at> troybrown.dev> wrote: > > On Wed, Jan 8, 2025 at 4:18 AM João Távora <joaotavora <at> gmail.com> wrote: > > > > > data point. I think it's unwise to completely disregard that > > > information. > > > > I'm sure to treasure your remarks about my wisdom going forward. > > I don't know why you feel the need to be condescending, nor why you > think it brings anything useful to this conversation. So _you_ make comments about me being unwise and _I'm_ condescending. Nice.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.