提交 d534f4a8 编写于 作者: D David Barbet

Address feedback + fix liveshare dll load

上级 4037e5f4
......@@ -23,7 +23,8 @@ internal class ClassificationsHandler : ILspRequestHandler<ClassificationParams,
{
public async Task<ClassificationSpan[]> HandleAsync(ClassificationParams request, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
var document = requestContext.Context.GetDocumentFromURI(request.TextDocument.Uri);
var actualDocumentURI = requestContext.ProtocolConverter.FromProtocolUri(request.TextDocument.Uri);
var document = requestContext.Context.GetDocumentFromURI(actualDocumentURI);
var classificationService = document?.Project.LanguageServices.GetService<IClassificationService>();
if (document == null || classificationService == null)
......
......@@ -7,6 +7,7 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.ErrorReporting;
using Microsoft.CodeAnalysis.LanguageServer;
using Microsoft.VisualStudio.LanguageServices.LiveShare.CustomProtocol;
using Microsoft.VisualStudio.LiveShare.LanguageServices;
......@@ -54,9 +55,8 @@ private async void DiagnosticService_DiagnosticsUpdated(object sender, Diagnosti
await (NotifyAsync?.InvokeAsync(this, eventArgs)).ConfigureAwait(false);
}
}
catch (Exception ex)
catch (Exception ex) when (FatalError.ReportWithoutCrash(ex))
{
// TODO - Replace trace
}
}
......
......@@ -6,6 +6,7 @@
<RootNamespace>Microsoft.VisualStudio.LanguageServices.LiveShare</RootNamespace>
<AssemblyName>Microsoft.VisualStudio.LanguageServices.LiveShare</AssemblyName>
<TargetFramework>net472</TargetFramework>
<CreateVsixContainer>false</CreateVsixContainer>
<IsPackable>true</IsPackable>
<PackageDescription>
A private package for the liveshare team to grant access to LSP implementations.
......
......@@ -43,7 +43,6 @@ public async Task<object> HandleAsync(LSP.ExecuteCommandParams request, RequestC
if (request.Command == RunCodeActionCommandName)
{
var runRequest = ((JToken)request.Arguments.Single()).ToObject<RunCodeActionParams>();
var codeActions = await GetCodeActionsAsync(solution,
runRequest.TextDocument.Uri,
runRequest.Range,
......
......@@ -16,21 +16,21 @@ namespace Microsoft.VisualStudio.LanguageServices.LiveShare
/// </summary>
internal abstract class AbstractLiveShareHandlerShim<RequestType, ResponseType> : ILspRequestHandler<RequestType, ResponseType, Solution>
{
private readonly IRequestHandler<RequestType, ResponseType> _requestHandler;
private readonly Lazy<IRequestHandler, IRequestHandlerMetadata> _lazyRequestHandler;
public AbstractLiveShareHandlerShim(IEnumerable<Lazy<IRequestHandler, IRequestHandlerMetadata>> requestHandlers, string methodName)
{
_requestHandler = GetRequestHandler(requestHandlers, methodName);
_lazyRequestHandler = GetRequestHandler(requestHandlers, methodName);
}
public virtual Task<ResponseType> HandleAsync(RequestType param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
return _requestHandler.HandleRequestAsync(requestContext.Context, param, requestContext.ClientCapabilities, cancellationToken);
return ((IRequestHandler<RequestType, ResponseType>)_lazyRequestHandler.Value).HandleRequestAsync(requestContext.Context, param, requestContext.ClientCapabilities, cancellationToken);
}
protected IRequestHandler<RequestType, ResponseType> GetRequestHandler(IEnumerable<Lazy<IRequestHandler, IRequestHandlerMetadata>> requestHandlers, string methodName)
protected Lazy<IRequestHandler, IRequestHandlerMetadata> GetRequestHandler(IEnumerable<Lazy<IRequestHandler, IRequestHandlerMetadata>> requestHandlers, string methodName)
{
return (IRequestHandler<RequestType, ResponseType>)requestHandlers.First(handler => handler.Metadata.MethodName == methodName).Value;
return requestHandlers.First(handler => handler.Metadata.MethodName == methodName);
}
}
}
......@@ -3,9 +3,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.LanguageServer.Handler;
using Microsoft.VisualStudio.LanguageServer.Protocol;
using Microsoft.VisualStudio.LiveShare.LanguageServices;
......@@ -20,10 +17,5 @@ public DocumentSymbolsHandlerShim([ImportMany] IEnumerable<Lazy<IRequestHandler,
: base(requestHandlers, Methods.TextDocumentDocumentSymbolName)
{
}
public override Task<object[]> HandleAsync(DocumentSymbolParams param, RequestContext<Solution> requestContext, CancellationToken cancellationToken)
{
return base.HandleAsync(param, requestContext, cancellationToken);
}
}
}
......@@ -57,6 +57,9 @@
[assembly: ProvideCodeBase(CodeBase = @"$PackageFolder$\System.Composition.TypedParts.dll")]
[assembly: ProvideCodeBase(CodeBase = @"$PackageFolder$\Humanizer.dll")]
[assembly: ProvideRoslynBindingRedirection("Microsoft.VisualStudio.LanguageServer.Protocol.dll")]
[assembly: ProvideRoslynBindingRedirection("Microsoft.VisualStudio.LanguageServer.Protocol.Extensions.dll")]
[assembly: ProvideCodeBase(CodeBase = @"$PackageFolder$\ICSharpCode.Decompiler.dll")]
[assembly: ProvideBindingRedirection(
......
......@@ -242,6 +242,8 @@
<NuGetPackageToIncludeInVsix Include="System.Composition.Convention" />
<NuGetPackageToIncludeInVsix Include="System.Composition.Hosting" />
<NuGetPackageToIncludeInVsix Include="ICSharpCode.Decompiler" />
<NuGetPackageToIncludeInVsix Include="Microsoft.VisualStudio.LanguageServer.Protocol" />
<NuGetPackageToIncludeInVsix Include="Microsoft.VisualStudio.LanguageServer.Protocol.Extensions" />
</ItemGroup>
<ItemGroup>
<VSIXSourceItem Include="$(NuGetPackageRoot)\SQLitePCLRaw.bundle_green\1.1.2\lib\net45\SQLitePCLRaw.batteries_green.dll" />
......
......@@ -60,6 +60,8 @@
<Asset Type="Microsoft.VisualStudio.Analyzer" d:Source="Project" d:ProjectName="XamlVisualStudio" Path="|XamlVisualStudio|" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.ExternalAccess.Debugger.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.VisualStudio.LanguageServices.LiveShare.dll" />
<Asset Type="Microsoft.VisualStudio.MefComponent" Path="Microsoft.CodeAnalysis.LanguageServer.Protocol.dll" />
</Assets>
<Prerequisites>
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,17.0)" DisplayName="Visual Studio core editor" />
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册