Skip to content

Commit

Permalink
Fix Mac composition error
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredpar committed Jul 12, 2021
1 parent fdb81f4 commit 81ebfb1
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 6 deletions.
13 changes: 8 additions & 5 deletions Src/VimCore/MefComponents.fs
Expand Up @@ -487,17 +487,20 @@ type internal ProtectedOperations =
type internal VimWordCompletionSessionFactoryService
[<ImportingConstructor>]
(
_wordCompletionSessionFactory: IWordCompletionSessionFactory
[<Import(AllowDefault=true)>] _wordCompletionSessionFactory: IWordCompletionSessionFactory
) =

let _created = StandardEvent<WordCompletionSessionEventArgs>()

member x.CreateWordCompletionSession textView wordSpan words isForward =
match _wordCompletionSessionFactory.CreateWordCompletionSession textView wordSpan words isForward with
match OptionUtil.nullToOption _wordCompletionSessionFactory with
| None -> None
| Some session ->
_created.Trigger x (WordCompletionSessionEventArgs(session))
Some session
| Some factory ->
match factory.CreateWordCompletionSession textView wordSpan words isForward with
| None -> None
| Some session ->
_created.Trigger x (WordCompletionSessionEventArgs(session))
Some session

interface IWordCompletionSessionFactoryService with
member x.CreateWordCompletionSession textView wordSpan words isForward = x.CreateWordCompletionSession textView wordSpan words isForward
Expand Down
2 changes: 1 addition & 1 deletion Src/VimEditorHost/VimEditorHost.cs
Expand Up @@ -69,8 +69,8 @@ public VimEditorHost(CompositionContainer compositionContainer)
ContentTypeRegistryService = CompositionContainer.GetExportedValue<IContentTypeRegistryService>();
ClassificationTypeRegistryService = CompositionContainer.GetExportedValue<IClassificationTypeRegistryService>();
BasicUndoHistoryRegistry = CompositionContainer.GetExportedValue<IBasicUndoHistoryRegistry>();
Vim = CompositionContainer.GetExportedValue<IVim>();
VimBufferFactory = CompositionContainer.GetExportedValue<IVimBufferFactory>();
Vim = CompositionContainer.GetExportedValue<IVim>();
VimErrorDetector = CompositionContainer.GetExportedValue<IVimErrorDetector>();
CommonOperationsFactory = CompositionContainer.GetExportedValue<ICommonOperationsFactory>();
BufferTrackingService = CompositionContainer.GetExportedValue<IBufferTrackingService>();
Expand Down
53 changes: 53 additions & 0 deletions Test/VimCoreTest/MacTest.cs
@@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Text;
using Vim.EditorHost;
using Vim.UI.Wpf.Implementation.Misc;
using Vim.UnitTest;
using Xunit;

namespace VimCoreTest
{
/// <summary>
/// Test that we don't break the Vim Mac implementation as much as possible until we can get
/// full Mac testing support https://github.com/VsVim/VsVim/issues/2907
/// </summary>
public sealed class MacTest
{
[WpfFact]
public void Composition()
{
var baseTypeFilter = VimTestBase.GetVimEditorHostTypeFilter(typeof(TestableVimHost));
Func<Type, bool> typeFilter = (type) =>
{
if (type.GetCustomAttributes(typeof(ExportAttribute), inherit: false).Length > 0)
{
if (!baseTypeFilter(type))
{
return false;
}
if (type.FullName.StartsWith("Vim.UI.Wpf"))
{
if (type != typeof(DisplayWindowBrokerFactoryService) &&
type != typeof(AlternateKeyUtil))
{
return false;
}
}
}
return true;
};

var factory = new VimEditorHostFactory(typeFilter);
var host = factory.CreateVimEditorHost();
var textView = host.CreateTextView("");
host.Vim.AutoLoadVimRc = false;
var vimBuffer = host.Vim.CreateVimBuffer(textView);
vimBuffer.Process("ihello Mac");
Assert.Equal("hello Mac", textView.TextBuffer.GetLineText(0));
}
}
}
1 change: 1 addition & 0 deletions Test/VimCoreTest/VimCoreTest.projitems
Expand Up @@ -65,6 +65,7 @@
<Compile Include="$(MSBuildThisFileDirectory)LineRangeTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)LocalSettingsTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MacroIntegrationTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MacTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MarkMapTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MatchingTokenUtilTest.cs" />
<Compile Include="$(MSBuildThisFileDirectory)MatchUtil.cs" />
Expand Down

0 comments on commit 81ebfb1

Please sign in to comment.