Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Broken formatting on Razor (cshtml) files with LF EOL (vscode) #4349

Closed
bryanjhv opened this issue Apr 19, 2021 · 18 comments · Fixed by #10802
Closed

Broken formatting on Razor (cshtml) files with LF EOL (vscode) #4349

bryanjhv opened this issue Apr 19, 2021 · 18 comments · Fixed by #10802
Assignees
Labels
bug Something isn't working feature-formatting vscode

Comments

@bryanjhv
Copy link

Describe the bug

Razor (cshtml) file formatting breaks in a very strange way when using LF end of lines.
It doesn't happen if file EOL is CRLF. It's independent of BOM-encoded file (tested this).

To Reproduce

Repository: https://github.com/bryanjhv/aspnet-vscode-issues
(including the steps above and some extra files in the GIF below)

  1. Create a new webapp project using dotnet new.
  2. Open any .cshtml file with Razor expressions (Index.cshtml, etc).
  3. Change its end of line to LF and save it.
  4. Enable format on save.
  5. Modify the file (add a space or something).
  6. Save the file.

recording

Exceptions (if any)

None.

Further technical details

  • ASP.NET Core version: 5.0.5

  • Include the output of dotnet --info

    .NET SDK (reflecting any global.json):
     Version:   5.0.202
     Commit:    db7cc87d51
    
    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.202\
    
    Host (useful for support):
      Version: 5.0.5
      Commit:  2f740adc14
    
    .NET SDKs installed:
      5.0.202 [C:\Program Files\dotnet\sdk]
    
    .NET runtimes installed:
      Microsoft.AspNetCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
      Microsoft.NETCore.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
      Microsoft.WindowsDesktop.App 5.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
    
    To install additional .NET runtimes or SDKs:
      https://aka.ms/dotnet-download
    
  • The IDE (VS / VS Code/ VS4Mac) you're running on, and its version

    • VSCode version: 1.55.2
    • C# Extension: 1.23.11

Additional notes

Migrated from dotnet/vscode-csharp#4503 as requested.

@NTaylorMullen
Copy link
Contributor

@davidwengier From your investigations in our formatting area did anything jump out to you as concerning in regards to EOL handling?

@davidwengier
Copy link
Contributor

I didn't look at that specifically (yet?) but I did see some cases where new lines were added around C# blocks within razor directives, so if the parsing is choking on newlines and producing multiple code blocks or something I could see this happening. Would have to dig in to be sure.

@NTaylorMullen
Copy link
Contributor

I didn't look at that specifically (yet?) but I did see some cases where new lines were added around C# blocks within razor directives, so if the parsing is choking on newlines and producing multiple code blocks or something I could see this happening. Would have to dig in to be sure.

Ahhh interesting, in the situations where we were adding newlines were those added newlines via Environment.NewLine or via a configured newline?

@davidwengier
Copy link
Contributor

Not sure, but it was the Roslyn C# formatter adding the new lines, not Razor tooling by the look of things.

@NTaylorMullen
Copy link
Contributor

Not sure, but it was the Roslyn C# formatter adding the new lines, not Razor tooling by the look of things.

😲

@bryanjhv
Copy link
Author

bryanjhv commented Apr 20, 2021

Still testing... Looks like it's specific to Windows/LF combination.
Tried reproducing the issue in a Codespaces VM, and works fine with LF/CRLF.
Don't know if the same would happen when testing on a real Linux machine, though.

@PeterWone
Copy link

PeterWone commented Apr 22, 2021

Still testing... Looks like it's specific to Windows/LF combination.
Tried reproducing the issue in a Codespaces VM, and works fine with LF/CRLF.

Does this mean that if I configure VS Code to force everything to CRLF line endings the problem will go away?

@NTaylorMullen
Copy link
Contributor

Does this mean that if I configure VS Code to force everything to CRLF line endings the problem will go away?

If you're on Windows yes. Gist is the whole stack does a lot of Environment.Newline in .NET which doesn't respect the VSCode's newline setting 😄

@bryanjhv
Copy link
Author

bryanjhv commented Apr 23, 2021

Does this mean that if I configure VS Code to force everything to CRLF line endings the problem will go away?

To be specific, even if I don't set a global files.eol setting, but just the file to CRLF, everything is fine.
In the repro repo I'm forcing it to LF via EditorConfig (then uninstalled, discarding issues with other extensions).

Gist is the whole stack does a lot of Environment.Newline in .NET which doesn't respect the VSCode's newline setting

Haven't tried but I'm guessing it's not specific to VSCode (OmniSharp and others are also used on Vim, for example).
So, maybe a solution which detects file EOL would be better. Just a suggestion, don't know how hard it would be.

@NTaylorMullen
Copy link
Contributor

Haven't tried but I'm guessing it's not specific to VSCode (OmniSharp and others are also used on Vim, for example).
So, maybe a solution which detects file EOL would be better. Just a suggestion, don't know how hard it would be.

File EOL isn't an awful idea but we typically stray away from it only because it's a little less defined what to do in mixed newline cases. Not really an excuse on our part though because obv there's ways around that. Just work to be done 😄

@PeterWone
Copy link

PeterWone commented Apr 24, 2021 via email

@bryanjhv
Copy link
Author

bryanjhv commented Apr 24, 2021

The cynic in my calls this IWOMP, something of which most of us are guilty.

Tried again with a "clean" environment (just C# extension, no user settings, nothing more than the repro repo, deleted user omnisharp.json in case Roslynator interfered).
Here's the result (still happening at least for me). One thing to notice is that it takes one save (or a modification as I said at point 5 of my "To Reproduce" steps) to show the issue. Don't know the way VSCode works but it seems it doesn't execute save actions (formatting in this case) on unmodified files (but that's another thing).

recording

we typically stray away from it only because it's a little less defined what to do in mixed newline cases

I understand, that's kind of an issue in some edge (I mean, not so infrequent) cases, and would bring confusion.
Some sort of "auto-detect EOL" setting would be useful but, again, that's another thing unrelated to this issue.

@bryanjhv
Copy link
Author

After setting razor.trace to Verbose in order to have a Razor Log (to provide more information on where the issue would be, if logged), here are the results on three consecutive formatting requests:

Format #​1
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/formatting:Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint | Method='textDocument/formatting' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/formatting:11 request for processing | Type='Parallel' Name='textDocument/formatting:11'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/formatting 11 | Method='textDocument/formatting' ResponseId='11'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (11) textDocument/formatting | Id='11' Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (11) textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Id='11' Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (11) textDocument/formatting in 57ms | Id='11' Method='textDocument/formatting' ElapsedMilliseconds='57'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/formatting 11 in 57ms | Method='textDocument/formatting' ResponseId='11' ElapsedMilliseconds='57'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/didChange:Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint | Method='textDocument/didChange' Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Parallel to Serial | From='Parallel' To='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Parallel | Type='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Serial:textDocument/didChange request for processing | Type='Serial' Name='textDocument/didChange'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams | Method='textDocument/didChange' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams'
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [26..26), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem.DefaultRazorProjectService: Updating document 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'. | 
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating C# buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 5. 2580 -> 2581 = Change delta of 1 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='5' 2='2580' 3='2581' 4='1' 5='1'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Notification textDocument/didChange in 4ms | Method='textDocument/didChange' ElapsedMilliseconds='4'
[Client - 11:42:27 PM] Updating the C# document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (5)
[Client - 11:42:27 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'csharpChanged'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing notification textDocument/didChange in 4ms | Method='textDocument/didChange' ElapsedMilliseconds='4'
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating HTML buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 5. 252 -> 253 = Change delta of 1 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='5' 2='252' 3='253' 4='1' 5='1'
[Client - 11:42:27 PM] Updating the HTML document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (5)
[Client - 11:42:27 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'htmlChanged'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/semanticTokens/edits:Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint | Method='textDocument/semanticTokens/edits' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Serial to Parallel | From='Serial' To='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Serial | Type='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/semanticTokens/edits:12 request for processing | Type='Parallel' Name='textDocument/semanticTokens/edits:12'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/semanticTokens/edits 12 | Method='textDocument/semanticTokens/edits' ResponseId='12'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (12) textDocument/semanticTokens/edits | Id='12' Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (12) textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Id='12' Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (12) textDocument/semanticTokens/edits in 6ms | Id='12' Method='textDocument/semanticTokens/edits' ElapsedMilliseconds='6'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/semanticTokens/edits 12 in 6ms | Method='textDocument/semanticTokens/edits' ResponseId='12' ElapsedMilliseconds='6'
Format #​2
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/formatting:Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint | Method='textDocument/formatting' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/formatting:13 request for processing | Type='Parallel' Name='textDocument/formatting:13'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/formatting 13 | Method='textDocument/formatting' ResponseId='13'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (13) textDocument/formatting | Id='13' Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (13) textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Id='13' Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (13) textDocument/formatting in 31ms | Id='13' Method='textDocument/formatting' ElapsedMilliseconds='31'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/formatting 13 in 31ms | Method='textDocument/formatting' ResponseId='13' ElapsedMilliseconds='31'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/didChange:Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint | Method='textDocument/didChange' Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Parallel to Serial | From='Parallel' To='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Parallel | Type='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Serial:textDocument/didChange request for processing | Type='Serial' Name='textDocument/didChange'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams | Method='textDocument/didChange' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams'
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [27..27), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [26..26), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem.DefaultRazorProjectService: Updating document 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'. | 
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating C# buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 6. 2581 -> 2583 = Change delta of 2 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='6' 2='2581' 3='2583' 4='2' 5='1'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Notification textDocument/didChange in 3ms | Method='textDocument/didChange' ElapsedMilliseconds='3'
[Client - 11:43:05 PM] Updating the C# document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (6)
[Client - 11:43:05 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'csharpChanged'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing notification textDocument/didChange in 3ms | Method='textDocument/didChange' ElapsedMilliseconds='3'
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating HTML buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 6. 253 -> 255 = Change delta of 2 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='6' 2='253' 3='255' 4='2' 5='1'
[Client - 11:43:05 PM] Updating the HTML document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (6)
[Client - 11:43:05 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'htmlChanged'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/semanticTokens/edits:Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint | Method='textDocument/semanticTokens/edits' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Serial to Parallel | From='Serial' To='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Serial | Type='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/semanticTokens/edits:14 request for processing | Type='Parallel' Name='textDocument/semanticTokens/edits:14'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/semanticTokens/edits 14 | Method='textDocument/semanticTokens/edits' ResponseId='14'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (14) textDocument/semanticTokens/edits | Id='14' Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (14) textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Id='14' Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (14) textDocument/semanticTokens/edits in 3ms | Id='14' Method='textDocument/semanticTokens/edits' ElapsedMilliseconds='3'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/semanticTokens/edits 14 in 3ms | Method='textDocument/semanticTokens/edits' ResponseId='14' ElapsedMilliseconds='3'
Format #​3
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/formatting | Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/formatting:Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint | Method='textDocument/formatting' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Formatting.RazorFormattingEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/formatting:15 request for processing | Type='Parallel' Name='textDocument/formatting:15'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/formatting 15 | Method='textDocument/formatting' ResponseId='15'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (15) textDocument/formatting | Id='15' Method='textDocument/formatting'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (15) textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Id='15' Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/formatting to OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams | Method='textDocument/formatting' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DocumentFormattingParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextEditContainer'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (15) textDocument/formatting in 33ms | Id='15' Method='textDocument/formatting' ElapsedMilliseconds='33'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/formatting 15 in 33ms | Method='textDocument/formatting' ResponseId='15' ElapsedMilliseconds='33'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/didChange:Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint | Method='textDocument/didChange' Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentChangeRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Parallel to Serial | From='Parallel' To='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Parallel | Type='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Serial:textDocument/didChange request for processing | Type='Serial' Name='textDocument/didChange'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Notification textDocument/didChange | Method='textDocument/didChange'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/didChange to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams | Method='textDocument/didChange' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DidChangeTextDocumentParams'
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [29..29), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [28..28), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [27..27), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Applying TextChange: { [26..26), "
" } | 
Microsoft.AspNetCore.Razor.LanguageServer.ProjectSystem.DefaultRazorProjectService: Updating document 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'. | 
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Notification textDocument/didChange in 5ms | Method='textDocument/didChange' ElapsedMilliseconds='5'
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating C# buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 7. 2583 -> 2587 = Change delta of 4 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='7' 2='2583' 3='2587' 4='4' 5='1'
[Client - 11:43:30 PM] Updating the C# document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (7)
[Client - 11:43:30 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'csharpChanged'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing notification textDocument/didChange in 5ms | Method='textDocument/didChange' ElapsedMilliseconds='5'
Microsoft.AspNetCore.Razor.LanguageServer.DefaultGeneratedDocumentPublisher: Updating HTML buffer of d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml to correspond with host document version 7. 255 -> 259 = Change delta of 4 via 1 text changes. | 0='d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' 1='7' 2='255' 3='259' 4='4' 5='1'
[Client - 11:43:30 PM] Updating the HTML document for Razor file 'd:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml' (7)
[Client - 11:43:30 PM] Notifying document 'd:\Downloads\aspnet-vscode-issues-master\Pages\Index.cshtml' changed 'htmlChanged'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/didSave | Method='textDocument/didSave'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/didSave | Method='textDocument/didSave'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/didSave:Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint | Method='textDocument/didSave' Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentSaveRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.TextDocumentSaveRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcNotificationHandler`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Serial:textDocument/didSave request for processing | Type='Serial' Name='textDocument/didSave'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing notification textDocument/didSave | Method='textDocument/didSave'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Notification textDocument/didSave | Method='textDocument/didSave'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/didSave to OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams | Method='textDocument/didSave' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.DidSaveTextDocumentParams'
[Info  - 11:43:30 PM] Microsoft.AspNetCore.Razor.LanguageServer.RazorDocumentSynchronizationEndpoint: Saved Document d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | 
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Notification textDocument/didSave in 0ms | Method='textDocument/didSave' ElapsedMilliseconds='0'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing notification textDocument/didSave in 0ms | Method='textDocument/didSave' ElapsedMilliseconds='0'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finding descriptors for textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Found attributes 1, razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml | Count='1' Attributes='razor::file:///d:/Downloads/aspnet-vscode-issues-master/Pages/Index.cshtml'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Looking for handler for descriptors textDocument/semanticTokens/edits | Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Checking handler textDocument/semanticTokens/edits:Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint | Method='textDocument/semanticTokens/edits' Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Registration options OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions | OptionsName='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensRegistrationOptions'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Document Selector [**/*.{cshtml,razor}] | DocumentSelector='[**/*.{cshtml,razor}]'
OmniSharp.Extensions.LanguageServer.Server.Matchers.TextDocumentMatcher: Handler Selected: Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint  via [**/*.{cshtml,razor}] (targeting OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]) | Handler='Microsoft.AspNetCore.Razor.LanguageServer.Semantic.RazorSemanticTokensEndpoint' Id='' DocumentSelector='[**/*.{cshtml,razor}]' HandlerInterface='OmniSharp.Extensions.JsonRpc.IJsonRpcRequestHandler`2[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022],[System.Nullable`1[[OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta, OmniSharp.Extensions.LanguageProtocol, Version=0.18.0.0, Culture=neutral, PublicKeyToken=6d868dff454e6022]], System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Swapping from Serial to Parallel | From='Serial' To='Parallel'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Completing existing request process type Serial | Type='Serial'
OmniSharp.Extensions.JsonRpc.ProcessScheduler: Queueing Parallel:textDocument/semanticTokens/edits:16 request for processing | Type='Parallel' Name='textDocument/semanticTokens/edits:16'
OmniSharp.Extensions.JsonRpc.InputHandler: Starting: Processing request textDocument/semanticTokens/edits 16 | Method='textDocument/semanticTokens/edits' ResponseId='16'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Starting: Routing Request (16) textDocument/semanticTokens/edits | Id='16' Method='textDocument/semanticTokens/edits'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Request (16) textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Id='16' Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Converting params for Notification textDocument/semanticTokens/edits to OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams | Method='textDocument/semanticTokens/edits' Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensDeltaParams'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Response value was OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta | Type='OmniSharp.Extensions.LanguageServer.Protocol.Models.Proposals.SemanticTokensFullOrDelta'
OmniSharp.Extensions.LanguageServer.Shared.LspRequestRouter: Finished: Routing Request (16) textDocument/semanticTokens/edits in 3ms | Id='16' Method='textDocument/semanticTokens/edits' ElapsedMilliseconds='3'
OmniSharp.Extensions.JsonRpc.InputHandler: Finished: Processing request textDocument/semanticTokens/edits 16 in 3ms | Method='textDocument/semanticTokens/edits' ResponseId='16' ElapsedMilliseconds='3'

@NTaylorMullen
Copy link
Contributor

Thanks for the traces @bryanjhv! Ya I validated that things didn't break down for normal crlf cases which thankfully they don't; however, was definitely able to reproduce after changing the file's crlf -> lf.

@allisonchou allisonchou transferred this issue from dotnet/aspnetcore Oct 1, 2021
@allisonchou allisonchou added bug Something isn't working feature-formatting labels Oct 1, 2021
@allisonchou allisonchou added this to the Next Preview Candidates milestone Oct 1, 2021
@allisonchou allisonchou modified the milestones: Next Preview Candidates, 17.1 Candidates Oct 9, 2021
@jonathanlamela
Copy link

Hi to everyone, I've the same problem on my vscode on Mac Os M1. When I save , with the option Format on Save, the html code wrapped with @{} is formatted with bad identation. I hope the bug is as soon as solved. Thanks for your work

image

@davidwengier
Copy link
Contributor

Another report: dotnet/vscode-csharp#5327

@rfrancisco
Copy link

Hi to everyone, I've the same problem on my vscode on Mac Os M1. When I save , with the option Format on Save, the html code wrapped with @{} is formatted with bad identation. I hope the bug is as soon as solved. Thanks for your work

image

Same thing here. Also on a M1 Mac.

@TheElegantCoding
Copy link

same error here with index.razor file

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working feature-formatting vscode
Projects
None yet
Development

Successfully merging a pull request may close this issue.