Change text buffer code document provider to follow our public API MEF rules.

This commit is contained in:
N. Taylor Mullen 2017-11-27 17:28:18 -08:00
parent 345eb29c62
commit df1d0bbcd4
4 changed files with 40 additions and 6 deletions

View File

@ -2,10 +2,10 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Razor;
namespace Microsoft.VisualStudio.Editor.Razor
{
@ -18,7 +18,26 @@ namespace Microsoft.VisualStudio.Editor.Razor
[ImportingConstructor]
public DefaultCodeDocumentProvider(
RazorTextBufferProvider bufferProvider,
RazorTextBufferProvider bufferProvider,
VisualStudioWorkspaceAccessor workspaceAccessor)
{
if (bufferProvider == null)
{
throw new ArgumentNullException(nameof(bufferProvider));
}
if (workspaceAccessor == null)
{
throw new ArgumentNullException(nameof(workspaceAccessor));
}
_bufferProvider = bufferProvider;
_codeDocumentProvider = workspaceAccessor.Workspace.Services.GetLanguageServices(RazorLanguage.Name).GetRequiredService<TextBufferCodeDocumentProvider>();
}
// Internal for testing
internal DefaultCodeDocumentProvider(
RazorTextBufferProvider bufferProvider,
TextBufferCodeDocumentProvider codeDocumentProvider)
{
if (bufferProvider == null)

View File

@ -2,14 +2,11 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.ComponentModel.Composition;
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.VisualStudio.Text;
namespace Microsoft.VisualStudio.Editor.Razor
{
[System.Composition.Shared]
[Export(typeof(TextBufferCodeDocumentProvider))]
internal class DefaultTextBufferCodeDocumentProvider : TextBufferCodeDocumentProvider
{
public override bool TryGetFromBuffer(ITextBuffer textBuffer, out RazorCodeDocument codeDocument)

View File

@ -0,0 +1,18 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.Host;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Razor;
namespace Microsoft.VisualStudio.Editor.Razor
{
[ExportLanguageServiceFactory(typeof(TextBufferCodeDocumentProvider), RazorLanguage.Name, ServiceLayer.Default)]
internal class DefaultTextBufferCodeDocumentProviderFactory : ILanguageServiceFactory
{
public ILanguageService CreateLanguageService(HostLanguageServices languageServices)
{
return new DefaultTextBufferCodeDocumentProvider();
}
}
}

View File

@ -7,7 +7,7 @@ using Microsoft.VisualStudio.Text;
namespace Microsoft.VisualStudio.Editor.Razor
{
internal abstract class TextBufferCodeDocumentProvider
internal abstract class TextBufferCodeDocumentProvider : ILanguageService
{
public abstract bool TryGetFromBuffer(ITextBuffer textBuffer, out RazorCodeDocument codeDocument);
}