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);
        }
Esempio n. 2
0
        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);
 }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 11
0
 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;
 }