private async Task <(HierarchyId itemid, IVsHierarchy hierarchy, IVsContainedLanguageFactory containedLanguageFactory)> GetContainedLanguageFactoryForFileAsync(string filePath) { await _projectContextHost.PublishAsync(); await _projectVsServices.ThreadingService.SwitchToUIThread(); var priority = new VSDOCUMENTPRIORITY[1]; HResult result = _projectVsServices.VsProject.IsDocumentInProject(filePath, out int isFound, priority, out uint itemid); if (result.Failed || isFound == 0) { return(HierarchyId.Nil, null, null); } Assumes.False(itemid == HierarchyId.Nil); IVsContainedLanguageFactory containedLanguageFactory = await _containedLanguageFactory.GetValueAsync(); if (containedLanguageFactory == null) { return(HierarchyId.Nil, null, null); } return(itemid, _projectVsServices.VsHierarchy, containedLanguageFactory); }
private async Task <(HierarchyId itemid, IVsHierarchy hierarchy, IVsContainedLanguageFactory containedLanguageFactory)> GetContainedLanguageFactoryForFileAsync(string filePath) { await _languageServiceHost.InitializeAsync(); await _projectVsServices.ThreadingService.SwitchToUIThread(); var priority = new VSDOCUMENTPRIORITY[1]; HResult result = _projectVsServices.VsProject.IsDocumentInProject(filePath, out int isFound, priority, out uint itemid); if (result.Failed || isFound == 0) { return(HierarchyId.Nil, null, null); } Assumes.False(itemid == HierarchyId.Nil); IVsContainedLanguageFactory containedLanguageFactory = await _containedLanguageFactory.GetValueAsync(); if (containedLanguageFactory == null) { return(HierarchyId.Nil, null, null); } var hierarchy = (IVsHierarchy)_projectHostProvider.UnconfiguredProjectHostObject.ActiveIntellisenseProjectHostObject; if (hierarchy == null) { return(HierarchyId.Nil, null, null); } return(itemid, hierarchy, containedLanguageFactory); }
public LanguageBridge(ContainedLanguageAdapter owner, LanguageProjectionBuffer projectionBuffer, IVsContainedLanguageFactory languageFactory, IVsHierarchy hierarchy) { this.owner = owner; this.languageFactory = languageFactory; ProjectionBuffer = projectionBuffer; this.hierarchy = hierarchy; InitContainedLanguage(); }
public LanguageBridge(ContainedLanguageAdapter owner, LanguageProjectionBuffer projectionBuffer, IVsContainedLanguageFactory languageFactory, IVsHierarchy hierarchy) { this.owner = owner; this.languageFactory = languageFactory; ProjectionBuffer = projectionBuffer; this.hierarchy = hierarchy; InitContainedLanguage(); }
public int GetContainedLanguageFactory(out IVsContainedLanguageFactory ppContainedLanguageFactory) { if (null == languageFactory) { languageFactory = new FoxProContainedLanguageFactory(this); } ppContainedLanguageFactory = languageFactory; return(VSConstants.S_OK); }
public int GetContainedLanguageFactoryForFile(string filePath, out IVsHierarchy hierarchy, out uint itemid, out IVsContainedLanguageFactory containedLanguageFactory) { (itemid, hierarchy, containedLanguageFactory) = _projectVsServices.ThreadingService.ExecuteSynchronously(() => { return(GetContainedLanguageFactoryForFileAsync(filePath)); }); return((hierarchy == null || containedLanguageFactory == null) ? HResult.Fail : HResult.OK); }
/// <summary> /// Gets an object that represents a host-specific IVsContainedLanguageFactory implementation and /// IVsHierarchy and itemId specific to currently active target framework. /// </summary> /// <param name="filePath">Path to a file</param> /// <param name="hierarchy">Project hierarchy containing given file for current language service</param> /// <param name="itemid">item id of the given file</param> /// <param name="containedLanguageFactory">an instance of IVsContainedLanguageFactory specific for current language service</param> /// <returns></returns> public int GetContainedLanguageFactoryForFile(string filePath, out IVsHierarchy hierarchy, out uint itemid, out IVsContainedLanguageFactory containedLanguageFactory) { uint myItemId = 0; IVsHierarchy myHierarchy = null; IVsContainedLanguageFactory myContainedLanguageFactory = null; _projectVsServices.ThreadingService.JoinableTaskFactory.Run(async() => { await InitializeAsync().ConfigureAwait(false); Guid?languageServiceId = await GetLanguageServiceId().ConfigureAwait(false); if (languageServiceId == null) { return; } await _projectVsServices.ThreadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var priority = new VSDOCUMENTPRIORITY[1]; HResult result = _projectVsServices.VsProject.IsDocumentInProject(filePath, out int isFound, priority, out myItemId); if (result.Failed || isFound == 0) { return; } myHierarchy = (IVsHierarchy)_projectHostProvider.UnconfiguredProjectHostObject.ActiveIntellisenseProjectHostObject; var oleServiceProvider = _serviceProvider.GetService(typeof(IOLEServiceProvider)) as IOLEServiceProvider; if (oleServiceProvider == null) { return; } myContainedLanguageFactory = (IVsContainedLanguageFactory)PackageUtilities.QueryService( oleServiceProvider, languageServiceId.Value); }); hierarchy = myHierarchy; itemid = myItemId; containedLanguageFactory = myContainedLanguageFactory; return((myHierarchy == null || containedLanguageFactory == null) ? VSConstants.E_FAIL : VSConstants.S_OK); }
private static VsContainedLanguageComponentsFactory CreateInstance(IVsContainedLanguageFactory containedLanguageFactory = null, IVsHierarchy hierarchy = null, IVsProject4 project = null, ProjectProperties properties = null, IActiveWorkspaceProjectContextHost projectContextHost = null) { var serviceProvider = IOleAsyncServiceProviderFactory.ImplementQueryServiceAsync(containedLanguageFactory, new Guid(LanguageServiceId)); var projectVsServices = new IUnconfiguredProjectVsServicesMock(); projectVsServices.ImplementVsHierarchy(hierarchy); projectVsServices.ImplementVsProject(project); projectVsServices.ImplementThreadingService(IProjectThreadingServiceFactory.Create()); projectVsServices.ImplementActiveConfiguredProjectProperties(properties); return(CreateInstance(serviceProvider, projectVsServices.Object, projectContextHost)); }
private static VsContainedLanguageComponentsFactory CreateInstance(IVsContainedLanguageFactory containedLanguageFactory = null, IVsProject4 project = null, ProjectProperties properties = null, IConfiguredProjectHostObject hostObject = null, ILanguageServiceHost languageServiceHost = null) { var hostProvider = IProjectHostProviderFactory.ImplementActiveIntellisenseProjectHostObject(hostObject); var serviceProvider = IOleAsyncServiceProviderFactory.ImplementQueryServiceAsync(containedLanguageFactory, new Guid(LanguageServiceId)); var projectVsServices = new IUnconfiguredProjectVsServicesMock(); projectVsServices.ImplementVsProject(project); projectVsServices.ImplementThreadingService(IProjectThreadingServiceFactory.Create()); projectVsServices.ImplementActiveConfiguredProjectProperties(properties); return(CreateInstance(serviceProvider, projectVsServices.Object, hostProvider, languageServiceHost)); }
/// <summary> /// Gets an object that represents a host-specific IVsContainedLanguageFactory implementation. /// Note: currently we have only one target framework and IVsHierarchy and itemId is returned as /// they are from the unconfigured project. Later when combined intellisense is implemented, depending /// on implementation we might need to have a logic that returns IVsHierarchy and itemId specific to /// currently active target framework (thats how it was in Dev14's dnx/dotnet project system) /// </summary> /// <param name="filePath">Path to a file</param> /// <param name="hierarchy">Project hierarchy containing given file for current language service</param> /// <param name="itemid">item id of the given file</param> /// <param name="containedLanguageFactory">an instance of IVsContainedLanguageFactory specific for current language service</param> /// <returns></returns> public int GetContainedLanguageFactoryForFile(string filePath, out IVsHierarchy hierarchy, out uint itemid, out IVsContainedLanguageFactory containedLanguageFactory) { uint myItemId = 0; IVsHierarchy myHierarchy = null; IVsContainedLanguageFactory myContainedLanguageFactory = null; ProjectServices.ThreadingService.JoinableTaskFactory.Run(async() => { await ProjectServices.ThreadingService.JoinableTaskFactory.SwitchToMainThreadAsync(); var priority = new VSDOCUMENTPRIORITY[1]; int isFound; HResult result = ProjectServices.VsProject.IsDocumentInProject(filePath, out isFound, priority, out myItemId); if (result.Failed || isFound == 0) { return; } myHierarchy = ProjectServices.VsHierarchy; var oleServiceProvider = ServiceProvider.GetService(typeof(IOLEServiceProvider)) as IOLEServiceProvider; if (oleServiceProvider == null) { return; } myContainedLanguageFactory = (IVsContainedLanguageFactory)PackageUtilities.QueryService( oleServiceProvider, LanguageServiceGuid); }); hierarchy = myHierarchy; itemid = myItemId; containedLanguageFactory = myContainedLanguageFactory; return((myHierarchy == null || containedLanguageFactory == null) ? VSConstants.E_FAIL : VSConstants.S_OK); }
private static void AssertFailed(int result, IVsHierarchy hierarchy, uint itemid, IVsContainedLanguageFactory containedLanguageFactory) { Assert.Equal(VSConstants.E_FAIL, result); Assert.Null(hierarchy); Assert.Null(containedLanguageFactory); Assert.Equal((uint)VSConstants.VSITEMID.Nil, itemid); }
public int GetContainedLanguageFactory(out IVsContainedLanguageFactory ppContainedLanguageFactory) { if (null == languageFactory) { languageFactory = new NemerleContainedLanguageFactory(this); } ppContainedLanguageFactory = languageFactory; return VSConstants.S_OK; }