Граф коммитов

3659 Коммитов

Автор SHA1 Сообщение Дата
David Wengier 4b3e4096e8
Cohost diagnostics support (#10882)
Fixes https://github.com/dotnet/razor/issues/10696
Fixes https://github.com/dotnet/razor/issues/10769
Fixes https://github.com/dotnet/razor/issues/10874
Needs Roslyn change: https://github.com/dotnet/roslyn/pull/75102

The actual code change was quite straight foward. The test code was a
bigger pain. Previously in cohosting tests we had two MEF composition,
one for Razor and one for Roslyn. Since Roslyn diagnostics can only run,
or at least start, in devenv, we now need three MEF compositions -
Roslyn devenv, Roslyn OOP and razor OOP - and two workspaces - Roslyn
devenv and Roslyn OOP - and our previous MEF infrastructure really
didn't handle this well, as evidenced by the fact that this PR also
fixes https://github.com/dotnet/razor/issues/10874

Now our MEF infra is simpler: We still cache catalogs etc. statically
the save time, but we create an `ExportProvider` as needed and expect
consumers to dispose of it like any other `IDisposable`, though there is
also here a test fixture to share the editor composition in the
formatting tests so we don't pay a huge penalty in terms of test run
time.

Commit-at-a-time if you want to read the story from beginning to end,
but it should be reasonably okay to just review as a whole too.
2024-09-18 14:11:37 +10:00
David Wengier c349de7362 Bump Roslyn to 4.12.0-3.24466.4 2024-09-18 07:20:51 +10:00
dotnet-maestro[bot] 821c789c70 Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240909.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24455.1 -> To Version 10.0.0-alpha.1.24459.1
2024-09-16 12:52:10 +00:00
Matt Mitchell ca91065e45
Switch to new VMR control schema. (#10883)
Now that razor is on .NET 9 arcade, it can switch over to the new control schema. For this repo, this is roughly:
- DotNetBuildFromSource -> DotNetBuildSourceOnly - Building a source-only build.
- DotnetBuildFromSourceFlavor == Product -> DotNetBuildOrchestrator == true - Building in the VMR, could be source-only or MS's build.
- ArcadeBuildFromSource -> DotNetBuildRepo == true -> Indicates an outer repo build.
2024-09-13 17:32:10 +00:00
David Wengier a782f9e8e3 Create basic service and endpoints to gather diagnostics and pass them over to OOP
Wanted to validate my Roslyn code would work first, before moving our services around, in case the order of this work seems backwards to usual :)
2024-09-11 16:50:50 +10:00
dotnet-maestro[bot] baabd8de45 Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240905.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24428.1 -> To Version 10.0.0-alpha.1.24455.1
2024-09-09 12:43:40 +00:00
David Wengier a3ee54d9a5 Merge remote-tracking branch 'upstream/main' into CohostSpellCheck
# Conflicts:
#	eng/targets/Services.props
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs
2024-09-06 13:28:23 +10:00
David Wengier 054f9ee41e Merge remote-tracking branch 'upstream/main' into CohostGoToImplementation
# Conflicts:
#	eng/targets/Services.props
2024-09-06 11:53:30 +10:00
David Wengier 6e121618bb Bump to real Roslyn version 2024-09-06 11:52:14 +10:00
David Wengier d37da8b3de Bump to real Roslyn version 2024-09-06 11:51:26 +10:00
David Wengier 4dcc2c4f4d Merge remote-tracking branch 'upstream/main' into CohostSpellCheck 2024-09-05 13:29:48 +10:00
David Wengier a795f32f17 Merge remote-tracking branch 'upstream/main' into CohostFormatting
# Conflicts:
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Formatting/RazorFormattingService.cs
2024-09-05 12:20:13 +10:00
David Wengier 460ae5b1a4
Merge branch 'main' into darc-main-a925341a-a0ef-49f7-bc6e-6525c5d13555 2024-09-05 07:29:55 +10:00
dotnet-maestro[bot] de7eddc0e9
Update dependencies from https://github.com/dotnet/arcade build 20240903.1 (#10835)
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24429.5 -> To Version 9.0.0-beta.24453.1

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
2024-09-04 12:33:30 -07:00
dotnet-maestro[bot] 4ec65fb914
[main] Update dependencies from dotnet/arcade (#10816)
* Update dependencies from https://github.com/dotnet/arcade build 20240829.3

Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24426.3 -> To Version 9.0.0-beta.24429.3

* Update dependencies from https://github.com/dotnet/arcade build 20240829.5

Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24429.3 -> To Version 9.0.0-beta.24429.5

* Failed to perform coherency update for one or more dependencies.

---------

Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
2024-09-03 23:00:10 -07:00
David Wengier a7cd940cd7 Cohost go to implementation 2024-09-03 16:21:10 +10:00
David Wengier 4a44a99239 Create cohost spell check endpoints and services 2024-09-03 09:27:57 +10:00
dotnet-maestro[bot] 4a9669226e Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240828.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24421.1 -> To Version 10.0.0-alpha.1.24428.1
2024-09-02 12:51:26 +00:00
David Wengier 3da875b6fe Create remote formatting service that delegates to the Razor formatting service 2024-09-02 15:02:42 +10:00
David Barbet 3ca44979cc
Update PublishData.json 2024-08-30 15:34:59 -07:00
David Barbet 4d4e9ab735
Update PublishData after VS snap 2024-08-30 15:19:30 -07:00
Alex Gavrilov 12f5194184
Cohosting OnAutoInsert endpoint (#10776)
* Factoring out AutoInsertService

* Switch non-cohost endpoint to use new AutoInsertService

* Adding Remote and OOB AutoInsertService classes and OnAutoInsertProviders

* Add common code for capabilities

* Add cohost OnAutoInsert endpoint

* Parameter rename

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/AutoClosingTagOnAutoInsertProvider.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/IAutoInsertService.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Update src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/AutoInsert/InsertTextEdit.cs

Co-authored-by: David Wengier <david.wengier@microsoft.com>

* Fixup after rebase

* More post-build cleanup

* Move common HTML and C# auto-insert trigger chars per CR suggestion

* More cleanup after rebase

* Add IOnAutoInsertTiggerCharacterProvider per CR suggestion

* Removing trigger characters property from RemoteAutoInsertService per CR suggestion

* Switch to using RemoteResponse

* Fixup bad resolve after rebase, and extra whitespace in RazorLangaugeServer

* Complete capabilities check in CohostingOnAutoInsertEndpoing registration

* Change input position type to serializable :LinePosition

* Fixing RemoteInsertTextEdit to use properly annotated (for serialization) types only

* Support for delegating auto-insert to C#

* Fixup after rebase

* Fixup AutoClosingTagOnAutoInsertProviderTest tests

* Fixinfg up CloseTextTagOnAutoInsertProviderTest tests

* Fixing up OnAutoInsertEndpointTest (which also tests the new AutoInsertService)

* Fixing duplicate OnAutoInsert handler registration (bad merge after rebate)

* Fixes to MEF composition issue and capabilities check
- IDocumentMappingService was not needed (and not available via MEF), so removed that
- TextDocument does not implmement VSInternalTextDocumentClientCapabilities

* Fixing incorrect export type

* Minor cleanup per CR suggestions

* Switching parameters to RazorCodeDocument and removing async in a lot of places per CR suggestion

* Fixing build - removing unneeded using

* Fix RemoteAutoInsertService logic to follow existing code (always prefer our own AutoInsertService first)

* Check allowed trigger characters before delegating to other languages/servers

* Plumbing through actual option values we need and using them

* Fixup After Rebase

* Consuming RazorFormattingService in remote OnAutoInsert service

* Fixing exception in RemoteProjectSnapshot.Configuration

Moving GetFormatterCodeDocumentAsync() into IDocumentSnapshot (and implementations of that) to allow eaiser differentiation of behavior in remote (cohosting) case where we don't need to check the flag on Project.Configuration.

Also AddUsingStatementsIfNeeded *always* gets called, even in cases when they are not actually needed, so we can't Debug.Fail there.

* Switch to PreferHtmlInAttributeValuesDocumentPositionInfoStrategy as the original code does

That allows the code insert double-quotes by delegating to HTML language server after attribute name and equals.

* Cleanup usings

* More usings cleanup

* PR feedback - minor cleanup and removal of InsertTextEdit type in favor of VSInternalDocumentOnAutoInsertResponseItem

* PR feedback - removing MEF usage from RemoteAdhocWorkspaceFactory, minor cleanup

* PR feedback

* Type and method renames, minor cleanup per PR feedback

* Renaming interface methods, removing unnecessary usage of FrozenSet

* Use ImmutableArray to store providers

* Switching to bool and out on IAutoInsertService and implementation

* Cleaned up document position info calculation per PR feedback

* Minor cleanup in RemoteAutoInsertService

* Cleanup trigger character calculation in CohostOnAutoInsertEndpoint

* Formatting changes, VsLspFactory usage

* Revert to MEF DI in RemoteAdhocWorkspaceFactory/RemoteRazorFormattingService

* Removing Rolsyn to VS LSP extension methods

* Switch to raw strings in tests and minor whitespace cleanup

* Rename per PR feedback suggestion to better indicate the purpose

* Cleanup formatting code document acquisition per PR feedback

Creating IFormattingCodeDocumentProvider service with seprate LSP and Remote implementations to provide code document appropriate for formatting.

* Removing redundant assert as compiler is already doing the check

* Unnecessary assignment cleanup

* Misc PR feedback cleanup

* Made GetGeneratedOutputAsync an extension method per PR feedback

* Remaining MEF parameter attrivute formatting changes

* Last of the PR feedback.

* Fixing most unit test failures.

Extension methods can't be used for Mock setups, so since I made GetGeneratedOutputAsync() with no parameter an extension method, I had to switch unit tests to use GeGeneratedOutputAsync(It.Any<bool>())

* Fixing last 4 unit test failures

We still had non-parameter GetGeneratedOutputAsycnc in DocumentSnapshot (even though it wasn't in IDocumentSnapshot) which was getting called internally. That was both messy (since there is now no-parameter extension method on IDocumentSnapshot) and was causing issues in tests

---------

Co-authored-by: David Wengier <david.wengier@microsoft.com>
2024-08-29 11:27:56 -07:00
David Barbet 7ed43a1fe7
[main] Update dependencies from dotnet/arcade (#10605)
Coherency update: Failed to perform coherency update for one or more
dependencies. Please review the GitHub checks or run `darc
update-dependencies --coherency-only` locally against
darc-main-a20bf2b8-a79a-4f26-a141-1afa2bfa58d0 for more information.

[marker]: <> (Begin:2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d)
## From https://github.com/dotnet/arcade
- **Subscription**: 2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d
- **Build**: 20240826.3
- **Date Produced**: August 26, 2024 5:01:25 PM UTC
- **Commit**: e3bdd9a0f2a65fe037ba1adb2261eea48a840fa4
- **Branch**: refs/heads/main

[DependencyUpdate]: <> (Begin)

- **Updates**:
- **Microsoft.SourceBuild.Intermediate.arcade**: [from
9.0.0-beta.24423.2 to 9.0.0-beta.24426.3][1]
- **Microsoft.DotNet.Arcade.Sdk**: [from 9.0.0-beta.24423.2 to
9.0.0-beta.24426.3][1]

[1]: 9159926865...e3bdd9a0f2

[DependencyUpdate]: <> (End)


[marker]: <> (End:2907dbca-fa2e-42bc-f7dd-08dc0c5b4e6d)
2024-08-27 12:12:18 -07:00
dotnet-maestro[bot] d7b76ad623 Update dependencies from https://github.com/dotnet/arcade build 20240826.3
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24423.2 -> To Version 9.0.0-beta.24426.3
2024-08-27 12:52:28 +00:00
David Barbet e7db6bcb15
Update configs for 17.12p3 snap 2024-08-26 13:59:43 -07:00
dotnet-maestro[bot] 5ca9964844 Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240821.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24419.1 -> To Version 10.0.0-alpha.1.24421.1
2024-08-26 12:52:05 +00:00
dotnet-maestro[bot] e841c0e5ee Update dependencies from https://github.com/dotnet/arcade build 20240823.2
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24421.7 -> To Version 9.0.0-beta.24423.2
2024-08-24 12:41:50 +00:00
David Barbet d031cc6ecc
Merge branch 'main' into darc-main-a925341a-a0ef-49f7-bc6e-6525c5d13555 2024-08-22 16:00:20 -07:00
dotnet-maestro[bot] ec191f808a Update dependencies from https://github.com/dotnet/arcade build 20240821.7
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24421.2 -> To Version 9.0.0-beta.24421.7
2024-08-22 12:43:45 +00:00
dotnet-maestro[bot] ceb06132c1 Update dependencies from https://github.com/dotnet/arcade build 20240821.2
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24420.6 -> To Version 9.0.0-beta.24421.2
2024-08-21 18:17:13 +00:00
dotnet-maestro[bot] 3458abac8b Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240819.1
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 10.0.0-alpha.1.24415.3 -> To Version 10.0.0-alpha.1.24419.1
2024-08-21 18:16:42 +00:00
dotnet-maestro[bot] a9eaef6edd Update dependencies from https://github.com/dotnet/arcade build 20240820.6
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24416.2 -> To Version 9.0.0-beta.24420.6
2024-08-21 12:46:59 +00:00
David Wengier 55c3058eb7 Merge remote-tracking branch 'upstream/main' into CohostDocumentSymbol
# Conflicts:
#	eng/targets/Services.props
#	src/Razor/src/Microsoft.AspNetCore.Razor.LanguageServer/RazorLanguageServer.cs
#	src/Razor/src/Microsoft.CodeAnalysis.Razor.Workspaces/Remote/RazorServices.cs
2024-08-21 11:55:14 +10:00
David Wengier 0bb4e6e55e Bump Roslyn version 2024-08-21 11:53:28 +10:00
dotnet-maestro[bot] 3bffce365f Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240815.3
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 9.0.0-alpha.1.24405.2 -> To Version 10.0.0-alpha.1.24415.3
2024-08-19 12:52:10 +00:00
dotnet-maestro[bot] b81f3ebf43 Update dependencies from https://github.com/dotnet/arcade build 20240816.2
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24414.3 -> To Version 9.0.0-beta.24416.2
2024-08-17 12:42:47 +00:00
Dustin Campbell e6fa90c225 Add co-hosting endpoint and remote service for GTD
This change adds all of the boilerplate needed to handle C# Go to Definition
2024-08-15 12:06:39 -07:00
dotnet-maestro[bot] 9e63e09781 Update dependencies from https://github.com/dotnet/arcade build 20240814.3
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24408.2 -> To Version 9.0.0-beta.24414.3
2024-08-15 12:54:01 +00:00
David Wengier 512b0d1d64 Create OOP service and cohost endpoint 2024-08-13 16:43:03 +10:00
dotnet-maestro[bot] 204efc45d2 Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240805.2
Microsoft.SourceBuild.Intermediate.source-build-reference-packages
 From Version 9.0.0-alpha.1.24374.1 -> To Version 9.0.0-alpha.1.24405.2
2024-08-12 12:42:48 +00:00
dotnet-maestro[bot] a8ead71685 Update dependencies from https://github.com/dotnet/arcade build 20240808.2
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24408.1 -> To Version 9.0.0-beta.24408.2
2024-08-09 12:42:08 +00:00
David Wengier 47665e0d26 Create a remote rename service, and dependencies, to perform the rename 2024-08-09 11:31:36 +10:00
dotnet-maestro[bot] 60926b85aa Update dependencies from https://github.com/dotnet/arcade build 20240808.1
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24405.1 -> To Version 9.0.0-beta.24408.1
2024-08-08 12:47:14 +00:00
dotnet-maestro[bot] b169e89f1f Update dependencies from https://github.com/dotnet/arcade build 20240805.1
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24401.1 -> To Version 9.0.0-beta.24405.1
2024-08-07 12:49:54 +00:00
Rikki Gibson 59e6260411
Insert release/dev17.12 to VS rel/d17.12 (#10707) 2024-08-05 09:53:41 -07:00
dotnet-maestro[bot] cdc027116b Update dependencies from https://github.com/dotnet/arcade build 20240801.1
Microsoft.SourceBuild.Intermediate.arcade , Microsoft.DotNet.Arcade.Sdk
 From Version 9.0.0-beta.24352.2 -> To Version 9.0.0-beta.24401.1
2024-08-01 12:34:58 +00:00
David Wengier c78f5f24f9
Cohost inlay hint support (#10672)
Part of https://github.com/dotnet/razor/issues/9519
Needs https://github.com/dotnet/roslyn/pull/74548 before it will compile
Needs
https://devdiv.visualstudio.com/DevDiv/_git/VSLanguageServerClient/pullrequest/567229
before it will work in VS

There were a few side quests on this one:
* Roslyn OOP, at least the way we access it, doesn't have any options
set, so took a few tries to get the Roslyn side of this right for our
needs
* I wrote this feature test-first so only discovered the lack of options
after I modified Roslyn and our test infra to allow us to set global
options, so ended up removing most of that code, Kept the bit about
isolated workspaces because it just makes sense.
* Had to re-write one of the `DocumentMappingService` methods to use
`TextChange` instead of `TextEdit` so I could use Roslyn LSP types
* The hacky, and fortunately temporary, way we were doing generated C#
content was causing cache misses in Roslyn in tests, so fixed that up
* When I finally got up to manual testing I found a bug in the platform
that meant inlay hints just don't work with dynamic registration, so
filed the above linked PR to fix that

If reviewing commit-at-a-time please note that the first commit was
written before the reworking of extension methods and LSP types, and the
fixes for that are in the last commit.
2024-07-31 13:38:03 +10:00
David Wengier 788988ba5c Fix Version.Details.xml to make source build happy 2024-07-31 09:55:30 +10:00
David Wengier 02854ec421 Bump to a real Roslyn build 2024-07-31 08:29:56 +10:00
Rikki Gibson db8eade83b
Remove 17.5 from servicing (#10686) 2024-07-30 11:25:45 -07:00