提交 e6be54bb 编写于 作者: D Dustin Campbell

Move FileSystem completion utilities to the editor features layer

At the moment, these aren't used by any completion providers in the features layer. Until we decide that this is ready to support cross-platform, let's keep them in the editor features layer closer to the providers that actually use them.
上级 56a6920d
......@@ -94,13 +94,13 @@
<Compile Include="ChangeSignature\ChangeSignatureCommandHandler.cs" />
<Compile Include="Classification\CSharpEditorClassificationService.cs" />
<Compile Include="CommentSelection\CSharpCommentUncommentService.cs" />
<Compile Include="Completion\CompletionProviders\GlobalAssemblyCacheCompletionHelper.cs" />
<Compile Include="Completion\CompletionProviders\OverrideCompletionProvider.cs" />
<Compile Include="Completion\CompletionProviders\PartialCompletionProvider.cs" />
<Compile Include="Completion\CompletionProviders\ReferenceDirectiveCompletionProvider.ItemRules.cs" />
<Compile Include="Completion\CompletionProviders\ReferenceDirectiveCompletionProvider.cs" />
<Compile Include="Completion\CompletionProviders\XmlDocCommentCompletion\XmlDocCommentCompletionItemRules.cs" />
<Compile Include="Completion\CompletionProviders\XmlDocCommentCompletion\XmlDocCommentCompletionProvider.cs" />
<Compile Include="Completion\FileSystem\GlobalAssemblyCacheCompletionHelper.cs" />
<Compile Include="Completion\FileSystem\ReferenceDirectiveCompletionProvider.cs" />
<Compile Include="Completion\FileSystem\ReferenceDirectiveCompletionProvider.ItemRules.cs" />
<Compile Include="ContentType\ContentTypeDefinitions.cs" />
<Compile Include="CSharpEditorResources.Designer.cs">
<AutoGen>True</AutoGen>
......@@ -286,6 +286,7 @@
<None Include="packages.config" />
<PublicAPI Include="PublicAPI.txt" />
</ItemGroup>
<ItemGroup />
<ImportGroup Label="Targets">
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
......
......@@ -5,12 +5,12 @@
using System.Linq;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.CompletionProviders
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.FileSystem
{
internal sealed class GlobalAssemblyCacheCompletionHelper
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
using Microsoft.CodeAnalysis.Options;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.CompletionProviders
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.FileSystem
{
internal partial class ReferenceDirectiveCompletionProvider
{
......
......@@ -9,13 +9,13 @@
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.CompletionProviders
namespace Microsoft.CodeAnalysis.Editor.CSharp.Completion.FileSystem
{
// TODO(cyrusn): Use a predefined name here.
[ExportCompletionProvider("ReferenceDirectiveCompletionProvider", LanguageNames.CSharp)]
......@@ -28,7 +28,7 @@ public override bool IsTriggerCharacter(SourceText text, int characterPosition,
private ICurrentWorkingDirectoryDiscoveryService GetFileSystemDiscoveryService(ITextSnapshot textSnapshot)
{
return PathCompletionUtilities.GetCurrentWorkingDirectoryDiscoveryService(textSnapshot);
return CurrentWorkingDirectoryDiscoveryService.GetService(textSnapshot);
}
private TextSpan GetTextChangeSpan(SyntaxToken stringLiteral, int position)
......
......@@ -4,12 +4,9 @@
using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.Editor.CSharp.Completion.CompletionProviders;
using Microsoft.CodeAnalysis.Editor.CSharp.Completion.FileSystem;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Language.Intellisense;
using Moq;
using Roslyn.Test.Utilities;
using Xunit;
......
......@@ -4,7 +4,7 @@
using System.IO;
using System.Linq;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Editor.CSharp.Completion.CompletionProviders;
using Microsoft.CodeAnalysis.Editor.CSharp.Completion.FileSystem;
using Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.Completion.CompletionProviders;
using Roslyn.Test.Utilities;
using Xunit;
......
......@@ -413,6 +413,11 @@
<Compile Include="Implementation\GoToDefinition\IGoToDefinitionService.cs" />
<Compile Include="Implementation\Intellisense\Completion\CompletionProviders\MemberInsertingCompletionItemRules.cs" />
<Compile Include="Implementation\Intellisense\Completion\CompletionProviders\XmlDocCommentCompletion\AbstractXmlDocCommentCompletionItemRules.cs" />
<Compile Include="Implementation\Intellisense\Completion\FileSystem\CurrentWorkingDirectoryDiscoveryService.cs" />
<Compile Include="Implementation\Intellisense\Completion\FileSystem\FileSystemCompletionHelper.cs" />
<Compile Include="Implementation\Intellisense\Completion\FileSystem\ICurrentWorkingDirectoryDiscoveryService.cs" />
<Compile Include="Implementation\Intellisense\Completion\FileSystem\IOUtilities.cs" />
<Compile Include="Implementation\Intellisense\Completion\FileSystem\PathCompletionUtilities.cs" />
<Compile Include="Implementation\KeywordHighlighting\AbstractKeywordHighlighter.cs" />
<Compile Include="Implementation\KeywordHighlighting\HighlighterTagProducer.cs" />
<Compile Include="Implementation\KeywordHighlighting\HighlighterViewTaggerProvider.cs" />
......@@ -501,7 +506,6 @@
<Compile Include="Implementation\Intellisense\Completion\Controller_TypeChar.cs" />
<Compile Include="Implementation\Intellisense\Completion\DescriptionModifyingCompletionItem.cs" />
<Compile Include="Implementation\Intellisense\Completion\Model.cs" />
<Compile Include="Implementation\Intellisense\Completion\PathCompletionUtilities.cs" />
<Compile Include="Implementation\Intellisense\Completion\Presentation\CompletionPresenter.cs" />
<Compile Include="Implementation\Intellisense\Completion\Presentation\CompletionPresenterSession.cs" />
<Compile Include="Implementation\Intellisense\Completion\Presentation\CompletionSet2.cs" />
......@@ -834,6 +838,7 @@
</None>
<PublicAPI Include="PublicAPI.txt" />
</ItemGroup>
<ItemGroup />
<ImportGroup Label="Targets">
<Import Project="..\..\..\build\Targets\VSL.Imports.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.IO;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Text;
namespace Microsoft.CodeAnalysis.Completion.Providers
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem
{
internal class CurrentWorkingDirectoryDiscoveryService : ICurrentWorkingDirectoryDiscoveryService
{
......@@ -17,5 +17,13 @@ public string CurrentDirectory
{
get { return Directory.GetCurrentDirectory(); }
}
public static ICurrentWorkingDirectoryDiscoveryService GetService(ITextSnapshot textSnapshot)
{
ICurrentWorkingDirectoryDiscoveryService result;
return textSnapshot.TextBuffer.Properties.TryGetProperty(typeof(ICurrentWorkingDirectoryDiscoveryService), out result)
? result
: Instance;
}
}
}
......@@ -7,11 +7,12 @@
using System.IO;
using System.Linq;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Completion.Providers
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem
{
internal sealed class FileSystemCompletionHelper
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.CodeAnalysis.Completion.Providers
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem
{
internal interface ICurrentWorkingDirectoryDiscoveryService
{
......
......@@ -4,7 +4,7 @@
using System.IO;
using System.Security;
namespace Microsoft.CodeAnalysis.Completion.Providers
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem
{
internal static class IOUtilities
{
......
......@@ -2,13 +2,10 @@
using System;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.Shared.Utilities;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Text;
using Roslyn.Utilities;
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion
namespace Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem
{
internal static class PathCompletionUtilities
{
......@@ -107,13 +104,5 @@ private static int AfterLastSlashIndex(string text, int position)
return -1;
}
internal static ICurrentWorkingDirectoryDiscoveryService GetCurrentWorkingDirectoryDiscoveryService(ITextSnapshot textSnapshot)
{
ICurrentWorkingDirectoryDiscoveryService result;
return textSnapshot.TextBuffer.Properties.TryGetProperty(typeof(ICurrentWorkingDirectoryDiscoveryService), out result)
? result
: CurrentWorkingDirectoryDiscoveryService.Instance;
}
}
}
......@@ -170,12 +170,8 @@
<Compile Include="Completion\Providers\AbstractObjectCreationCompletionProvider.cs" />
<Compile Include="Completion\Providers\AbstractObjectInitializerCompletionProvider.cs" />
<Compile Include="Completion\Providers\AbstractSymbolCompletionProvider.cs" />
<Compile Include="Completion\Providers\CurrentWorkingDirectoryDiscoveryService.cs" />
<Compile Include="Completion\Providers\FileSystemCompletionHelper.cs" />
<Compile Include="Completion\CompletionListProvider.cs" />
<Compile Include="Completion\Providers\ICurrentWorkingDirectoryDiscoveryService.cs" />
<Compile Include="Completion\Providers\IKeywordRecommender.cs" />
<Compile Include="Completion\Providers\IOUtilities.cs" />
<Compile Include="Completion\Providers\ISnippetCompletionProvider.cs" />
<Compile Include="Completion\Providers\KeywordCompletionItemRules.cs" />
<Compile Include="Completion\Providers\ObjectInitializerCompletionItemRules.cs" />
......
......@@ -13,7 +13,6 @@
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.Editor.Implementation.Interactive;
using Microsoft.CodeAnalysis.ErrorReporting;
using Microsoft.CodeAnalysis.Host;
......@@ -28,6 +27,7 @@
using Microsoft.CodeAnalysis.Scripting;
using Roslyn.Utilities;
using GacFileResolver = WORKSPACES::Microsoft.CodeAnalysis.Scripting.GacFileResolver;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
namespace Microsoft.CodeAnalysis.Editor.Interactive
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
......
......@@ -8,7 +8,7 @@
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.Completion.Providers;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.Completion.FileSystem;
using Microsoft.CodeAnalysis.Interactive;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
......@@ -87,9 +87,9 @@ private ImmutableArray<CompletionItem> GetItems(SourceText text, int position, C
return ImmutableArray<CompletionItem>.Empty;
}
var fileSystem = PathCompletionUtilities.GetCurrentWorkingDirectoryDiscoveryService(snapshot);
var fileSystem = CurrentWorkingDirectoryDiscoveryService.GetService(snapshot);
var searchPaths = ImmutableArray.Create<string>(fileSystem.CurrentDirectory);
var searchPaths = ImmutableArray.Create(fileSystem.CurrentDirectory);
var helper = new FileSystemCompletionHelper(
this,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册