dotnet / vscode-csharp

Official C# support for Visual Studio Code
MIT License
2.85k stars 668 forks source link

Documentation comment code tags do not render as rich text #4641

Open CynicalBusiness opened 3 years ago

CynicalBusiness commented 3 years ago

Issue Description

Some documentation comment tags, namely code and c do not render rich text and simply display their text contents verbatim as if without the tag.

Steps to Reproduce

Here's an example interface method with all of these:

``` /// /// Begins a transaction on a realm. If a transaction is already in progress for the given realm instance, /// null is returned, since multiple transactions on a given instance are invalid. This can be used /// to begin a transaction if not already in one. /// /// /// using (var transaction = realmService.BeginTransaction()) /// { /// // do some stuff that needs a write transaction /// /// // now commit this transaction, or leave the outer transaction to do the committing /// transaction?.Commit(); /// } /// /// /// /// /// Note: If a realm is not given, the thread's current instance is used. /// /// The realm /// The transaction Transaction? BeginTransaction(Realm? realm = null); ```

Done as documented

Expected Behavior

code block should be rendered as a code block, and c as inline code.

TypeScript docs do this: image

Actual Behavior

I get a comment with some tags rendering, but not the aforementioned two. image

Logs

OmniSharp log

``` Starting OmniSharp server at 7/9/2021, 10:55:17 AM Target: c:\Users\Matt\Workspace\lab\horizon\project\horizon.sln OmniSharp server started. Path: c:\Users\Matt\.vscode\extensions\ms-dotnettools.csharp-1.23.12\.omnisharp\1.37.10\OmniSharp.exe PID: 19924 [info]: OmniSharp.Stdio.Host Starting OmniSharp on Windows 6.2.9200.0 (x64) [info]: OmniSharp.Services.DotNetCliService DotNetPath set to dotnet [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Located 3 MSBuild instance(s) 1: Visual Studio Build Tools 2017 15.9.28307.1234 - "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin" 2: Visual Studio Community 2019 16.10.31321.278 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin" 3: StandAlone 16.11.0 - "c:\Users\Matt\.vscode\extensions\ms-dotnettools.csharp-1.23.12\.omnisharp\1.37.10\.msbuild\Current\Bin" [info]: OmniSharp.MSBuild.Discovery.MSBuildLocator Registered MSBuild instance: Visual Studio Community 2019 16.10.31321.278 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin" [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0 [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.Completion.CompletionOptionsProvider, Order: 0 [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100 [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.ImplementTypeWorkspaceOptionsProvider, Order: 110 [info]: OmniSharp.WorkspaceInitializer Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.BlockStructureWorkspaceOptionsProvider, Order: 140 [info]: OmniSharp.Cake.CakeProjectSystem Detecting Cake files in 'c:\Users\Matt\Workspace\lab\horizon\project'. [info]: OmniSharp.Cake.CakeProjectSystem Could not find any Cake files [info]: OmniSharp.MSBuild.ProjectSystem Detecting projects in 'c:\Users\Matt\Workspace\lab\horizon\project\horizon.sln'. [info]: OmniSharp.MSBuild.ProjectManager Queue project update for 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine\horizon-engine.csproj' [info]: OmniSharp.MSBuild.ProjectManager Queue project update for 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine-gen\horizon-engine-generator.csproj' [info]: OmniSharp.Script.ScriptProjectSystem Detecting CSX files in 'c:\Users\Matt\Workspace\lab\horizon\project'. [info]: OmniSharp.MSBuild.ProjectManager Loading project: c:\Users\Matt\Workspace\lab\horizon\project\packages\engine\horizon-engine.csproj [info]: OmniSharp.Script.ScriptProjectSystem Could not find any CSX files [info]: OmniSharp.WorkspaceInitializer Configuration finished. [info]: OmniSharp.Stdio.Host Omnisharp server running using Stdio at location 'c:\Users\Matt\Workspace\lab\horizon\project' on host 22392. [info]: OmniSharp.MSBuild.ProjectManager Successfully loaded project file 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine\horizon-engine.csproj'. [info]: OmniSharp.MSBuild.ProjectManager Adding project 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine\horizon-engine.csproj' [info]: OmniSharp.MSBuild.ProjectManager Loading project: c:\Users\Matt\Workspace\lab\horizon\project\packages\engine-gen\horizon-engine-generator.csproj [info]: OmniSharp.MSBuild.ProjectManager Successfully loaded project file 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine-gen\horizon-engine-generator.csproj'. [info]: OmniSharp.MSBuild.ProjectManager Adding project 'c:\Users\Matt\Workspace\lab\horizon\project\packages\engine-gen\horizon-engine-generator.csproj' [info]: OmniSharp.MSBuild.ProjectManager Update project: horizon-engine [info]: OmniSharp.MSBuild.ProjectManager Update project: horizon-engine-generator Received response for /completion but could not find request. Received response for /quickinfo but could not find request. ```

C# log

This is empty.

Environment information

VSCode version: 1.58.0 C# Extension: 1.23.12

Dotnet Information .NET SDK (reflecting any global.json): Version: 5.0.300 Commit: 2e0c8c940e Runtime Environment: OS Name: Windows OS Version: 10.0.19042 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\5.0.300\ Host (useful for support): Version: 5.0.6 Commit: 478b2f8c0e .NET SDKs installed: 2.1.801 [C:\Program Files\dotnet\sdk] 2.1.802 [C:\Program Files\dotnet\sdk] 2.2.401 [C:\Program Files\dotnet\sdk] 5.0.300 [C:\Program Files\dotnet\sdk] .NET runtimes installed: Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All] Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 3.1.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.AspNetCore.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App] Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 3.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 3.1.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.NETCore.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] Microsoft.WindowsDesktop.App 3.1.15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] Microsoft.WindowsDesktop.App 5.0.6 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App] To install additional .NET runtimes or SDKs: https://aka.ms/dotnet-download
Visual Studio Code Extensions |Extension|Author|Version| |---|---|---| |alphabetical-sorter|ue|2.0.1| |auto-using|Fudge|0.7.15| |bbcode|rickvansloten|0.0.2| |change-case|wmaurer|1.0.0| |cpptools|ms-vscode|1.5.1| |csharp|ms-dotnettools|1.23.12| |csharpfixformat|Leopotam|0.0.84| |debugger-for-chrome|msjsdiag|4.12.12| |EditorConfig|EditorConfig|0.16.4| |file-icons|file-icons|1.0.29| |gitlens|eamodio|11.5.1| |ilspy-vscode|icsharpcode|0.11.2| |markdown-all-in-one|yzhang|3.4.0| |msbuild-project-tools|tintoy|0.3.15| |msbuild-tools|sterin|0.0.12| |nord-visual-studio-code|arcticicestudio|0.17.1| |prettier-vscode|esbenp|8.0.1| |pug|amandeepmittal|1.0.1| |python|ms-python|2021.6.944021595| |remote-wsl|ms-vscode-remote|0.58.2| |santacodes-region-viewer|SantaCodes|1.0.0| |sass-lint|glen-84|1.0.7| |sln-support|logerfo|0.0.1| |spellright|ban|3.0.58| |uuid-generator|netcorext|0.0.4| |vdf|GEEKiDoS|0.0.7| |vscode-commons|redhat|0.0.6| |vscode-csproj|lucasazzola|0.7.0| |vscode-docker|ms-azuretools|1.14.0| |vscode-dotnet-runtime|ms-dotnettools|1.1.0| |vscode-eslint|dbaeumer|2.1.23| |vscode-gitignore-generator|piotrpalarz|1.0.3| |vscode-nuget-package-manager|jmrog|1.1.6| |vscode-pylance|ms-python|2021.7.2| |vscode-solution-explorer|fernandoescolar|0.4.3| |vscode-xml|redhat|0.17.0| |vsliveshare|ms-vsliveshare|1.0.4531| |webgl-glsl-editor|raczzalan|1.2.1| |xml|DotJoshJohnson|2.5.1| |yarn-task-provider|dkneeland|0.2.2|;

Edit: formatting, typo

333fred commented 3 years ago

Alright, I took a look at this. Unfortunately, this seems like a roslyn bug: the QuickInfoProvider is giving us a TaggedText section with a Tag of Text, which we dutifully render as plaintext. There does exist a Style property that indicates the tag should be rendered as Code, not as plaintext, but that style is currently internal so we can't easily access it. @sharwell, is that property something you'd be in favor of making public? If so, I can open an API proposal for it.

333fred commented 3 years ago

Also, as a side note, <example> tags are a separate top-level section, not nested under <summary> tags. Not really related here, as just a <code> tag under a summary shows the same issue, but just so you're aware @CynicalBusiness.

sharwell commented 3 years ago

I have no objection to making TaggedText.Style public.