public NavigationBarClient( IVsDropdownBarManager manager, IVsCodeWindow codeWindow, IServiceProvider serviceProvider, VisualStudioWorkspaceImpl workspace) { _manager = manager; _codeWindow = codeWindow; _workspace = workspace; _imageService = (IVsImageService2)serviceProvider.GetService(typeof(SVsImageService)); _projectItems = SpecializedCollections.EmptyList <NavigationBarProjectItem>(); _currentTypeItems = SpecializedCollections.EmptyList <NavigationBarItem>(); var vsShell = serviceProvider.GetService(typeof(SVsShell)) as IVsShell; vsShell?.TryGetPropertyValue(__VSSPROPID.VSSPROPID_ObjectMgrTypesImgList, out _imageList); _codeWindowEventsSink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); _editorAdaptersFactoryService = serviceProvider.GetMefService <IVsEditorAdaptersFactoryService>(); codeWindow.GetPrimaryView(out var pTextView); StartTrackingView(pTextView); pTextView = null; codeWindow.GetSecondaryView(out pTextView); StartTrackingView(pTextView); }
public LanguageSettingsPersister( [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, IGlobalOptionService optionService) : base(assertIsForeground: true) { _textManager = (IVsTextManager4)serviceProvider.GetService(typeof(SVsTextManager)); _optionService = optionService; // TODO: make this configurable _languageMap = BidirectionalMap <string, Tuple <Guid> > .Empty.Add(LanguageNames.Hlsl, Tuple.Create(Guids.HlslLanguageServiceId)) .Add(LanguageNames.ShaderLab, Tuple.Create(Guids.ShaderLabLanguageServiceId)); foreach (var languageGuid in _languageMap.Values) { var languagePreferences = new LANGPREFERENCES3[1]; languagePreferences[0].guidLang = languageGuid.Item1; // The function can potentially fail if that language service isn't installed if (ErrorHandler.Succeeded(_textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null))) { RefreshLanguageSettings(languagePreferences); } } _textManagerEvents2Sink = ComEventSink.Advise <IVsTextManagerEvents4>(_textManager, this); }
public NavigationBarClient( IVsDropdownBarManager manager, IVsCodeWindow codeWindow, IServiceProvider serviceProvider) { _manager = manager; _codeWindow = codeWindow; _currentTypeItems = SpecializedCollections.EmptyList <NavigationBarItem>(); var vsShell = serviceProvider.GetService(typeof(SVsShell)) as IVsShell; if (vsShell != null) { int hresult = vsShell.GetProperty((int)__VSSPROPID.VSSPROPID_ObjectMgrTypesImgList, out var varImageList); if (ErrorHandler.Succeeded(hresult) && varImageList != null) { _imageList = (IntPtr)(int)varImageList; } } _codeWindowEventsSink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); _editorAdaptersFactoryService = serviceProvider.GetMefService <IVsEditorAdaptersFactoryService>(); codeWindow.GetPrimaryView(out var pTextView); StartTrackingView(pTextView); pTextView = null; codeWindow.GetSecondaryView(out pTextView); StartTrackingView(pTextView); }
public LanguageSettingsPersister( [Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider, IGlobalOptionService optionService) : base(assertIsForeground: true) { _textManager = (IVsTextManager4)serviceProvider.GetService(typeof(SVsTextManager)); _optionService = optionService; // TODO: make this configurable _languageMap = BidirectionalMap <string, Tuple <Guid> > .Empty.Add(LanguageNames.CSharp, Tuple.Create(Guids.CSharpLanguageServiceId)) .Add(LanguageNames.VisualBasic, Tuple.Create(Guids.VisualBasicLanguageServiceId)) .Add("TypeScript", Tuple.Create(new Guid("4a0dddb5-7a95-4fbf-97cc-616d07737a77"))) .Add("F#", Tuple.Create(new Guid("BC6DD5A5-D4D6-4dab-A00D-A51242DBAF1B"))) .Add("Xaml", Tuple.Create(new Guid("CD53C9A1-6BC2-412B-BE36-CC715ED8DD41"))); foreach (var languageGuid in _languageMap.Values) { var languagePreferences = new LANGPREFERENCES3[1]; languagePreferences[0].guidLang = languageGuid.Item1; // The function can potentially fail if that language service isn't installed if (ErrorHandler.Succeeded(_textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null))) { RefreshLanguageSettings(languagePreferences); } } _textManagerEvents2Sink = ComEventSink.Advise <IVsTextManagerEvents4>(_textManager, this); }
public VsCodeWindowManager(TLanguageService languageService, IVsCodeWindow codeWindow) { _languageService = languageService; _codeWindow = codeWindow; _globalOptions = languageService.Package.ComponentModel.GetService <IGlobalOptionService>(); _sink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); _globalOptions.OptionChanged += GlobalOptionChanged; }
public VsCodeWindowManager(TLanguageService languageService, IVsCodeWindow codeWindow) { _languageService = languageService; _codeWindow = codeWindow; var workspace = languageService.Package.ComponentModel.GetService <VisualStudioWorkspace>(); _optionService = workspace.Services.GetService <IOptionService>(); _sink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); _optionService.OptionChanged += OnOptionChanged; }
public VsCodeWindowManager(TLanguageService languageService, IVsCodeWindow codeWindow) { _languageService = languageService; _codeWindow = codeWindow; _threadingContext = languageService.Package.ComponentModel.GetService <IThreadingContext>(); var listenerProvider = languageService.Package.ComponentModel.GetService <IAsynchronousOperationListenerProvider>(); _asynchronousOperationListener = listenerProvider.GetListener(FeatureAttribute.NavigationBar); _sink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); }
private async Task InitializeAndPopulateSnippetsCacheAsync(Shell.IAsyncServiceProvider asyncServiceProvider) { await _threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(); var textManager = (IVsTextManager2?)await asyncServiceProvider.GetServiceAsync(typeof(SVsTextManager)).ConfigureAwait(true); Assumes.Present(textManager); if (textManager.GetExpansionManager(out _expansionManager) == VSConstants.S_OK) { ComEventSink.Advise <IVsExpansionEvents>(_expansionManager, this); await PopulateSnippetCacheAsync().ConfigureAwait(false); } }
// We make sure this code is from the UI by asking for the optionservice in the initialize() in AbstractPackage`2 public AbstractLanguageSettingsSerializer(Guid languageServiceguid, string languageName, IServiceProvider serviceProvider) : base(assertIsForeground: true) { _serviceProvider = serviceProvider; _languageName = languageName; _textManager = (IVsTextManager4)serviceProvider.GetService(typeof(SVsTextManager)); var langPrefs = new LANGPREFERENCES3[1]; langPrefs[0].guidLang = languageServiceguid; Marshal.ThrowExceptionForHR(_textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: langPrefs, pColorPrefs: null)); _languageSetting = langPrefs[0]; _textManagerEvents2Sink = ComEventSink.Advise <IVsTextManagerEvents4>(_textManager, this); }
public AbstractSnippetInfoService( Shell.SVsServiceProvider serviceProvider, Guid languageGuidForSnippets, IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners) { AssertIsForeground(); if (serviceProvider != null) { var textManager = (IVsTextManager2)serviceProvider.GetService(typeof(SVsTextManager)); if (textManager.GetExpansionManager(out _expansionManager) == VSConstants.S_OK) { ComEventSink.Advise <IVsExpansionEvents>(_expansionManager, this); _waiter = new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.Snippets); _languageGuidForSnippets = languageGuidForSnippets; PopulateSnippetCaches(); } } }
public AbstractSnippetInfoService( IThreadingContext threadingContext, Shell.SVsServiceProvider serviceProvider, Guid languageGuidForSnippets, IAsynchronousOperationListenerProvider listenerProvider) : base(threadingContext) { AssertIsForeground(); if (serviceProvider != null) { var textManager = (IVsTextManager2)serviceProvider.GetService(typeof(SVsTextManager)); if (textManager.GetExpansionManager(out _expansionManager) == VSConstants.S_OK) { ComEventSink.Advise <IVsExpansionEvents>(_expansionManager, this); _waiter = listenerProvider.GetListener(FeatureAttribute.Snippets); _languageGuidForSnippets = languageGuidForSnippets; PopulateSnippetCaches(); } } }
public LanguageSettingsPersister( IThreadingContext threadingContext, IVsTextManager4 textManager, IGlobalOptionService globalOptions) : base(threadingContext, assertIsForeground: true) { _textManager = textManager; _globalOptions = globalOptions; var languageMap = BidirectionalMap <string, Tuple <Guid> > .Empty; InitializeSettingsForLanguage(LanguageNames.CSharp, Guids.CSharpLanguageServiceId); InitializeSettingsForLanguage(LanguageNames.VisualBasic, Guids.VisualBasicLanguageServiceId); InitializeSettingsForLanguage(InternalLanguageNames.TypeScript, new Guid("4a0dddb5-7a95-4fbf-97cc-616d07737a77")); InitializeSettingsForLanguage("F#", new Guid("BC6DD5A5-D4D6-4dab-A00D-A51242DBAF1B")); InitializeSettingsForLanguage("Xaml", new Guid("CD53C9A1-6BC2-412B-BE36-CC715ED8DD41")); void InitializeSettingsForLanguage(string languageName, Guid languageGuid) { var languagePreferences = new LANGPREFERENCES3[1]; languagePreferences[0].guidLang = languageGuid; // The function can potentially fail if that language service isn't installed if (ErrorHandler.Succeeded(_textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null))) { RefreshLanguageSettings(languagePreferences, languageName); languageMap = languageMap.Add(languageName, Tuple.Create(languageGuid)); } else { FatalError.ReportWithDumpAndCatch(new InvalidOperationException("GetUserPreferences4 failed"), ErrorSeverity.Diagnostic); } } _languageMap = languageMap; _textManagerEvents2Sink = ComEventSink.Advise <IVsTextManagerEvents4>(_textManager, this); }
public NavigationBar( ITextBuffer textBuffer, IVsDropdownBarManager manager, IVsCodeWindow codeWindow, IServiceProvider serviceProvider) : base(textBuffer) { ThreadHelper.ThrowIfNotOnUIThread(); Logger.Trace($"{nameof(NavigationBar)}:Ctor"); _manager = manager; _codeWindow = codeWindow; _projectItems = ImmutableList <NavigationBarItem> .Empty; _taskItems = ImmutableList <NavigationBarItem> .Empty; _activeSelections = new Dictionary <int, int>(); _focusedCombo = -1; _trackedViews = new Dictionary <IVsTextView, IWpfTextView>(); _workspaceRegistration = Workspace.GetWorkspaceRegistration(TextBuffer.AsTextContainer()); _workspaceRegistration.WorkspaceChanged += OnWorkspaceRegistrationChanged; VSColorTheme.ThemeChanged += OnThemeChanged; #pragma warning disable VSSDK006 // Check services exist var componentModel = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel)); #pragma warning restore VSSDK006 // Check services exist _editorAdaptersFactoryService = componentModel.GetService <IVsEditorAdaptersFactoryService>(); _comEventSink = ComEventSink.Advise <IVsCodeWindowEvents>(codeWindow, this); codeWindow.GetPrimaryView(out var pTextView); ConnectView(pTextView); codeWindow.GetSecondaryView(out pTextView); ConnectView(pTextView); ConnectToWorkspace(_workspaceRegistration.Workspace); }
public AbstractSnippetInfoService( Shell.SVsServiceProvider serviceProvider, Guid languageGuidForSnippets, IEnumerable <Lazy <IAsynchronousOperationListener, FeatureMetadata> > asyncListeners) { _languageGuidForSnippets = languageGuidForSnippets; if (serviceProvider != null) { var textManager = (IVsTextManager2)serviceProvider.GetService(typeof(SVsTextManager)); if (textManager.GetExpansionManager(out _expansionManager) == VSConstants.S_OK) { ComEventSink.Advise <IVsExpansionEvents>(_expansionManager, this); } } IAsynchronousOperationListener waiter = new AggregateAsynchronousOperationListener(asyncListeners, FeatureAttribute.Snippets); var token = waiter.BeginAsyncOperation(GetType().Name + ".Start"); InitialCachePopulationTask = Task.Factory.StartNew(() => PopulateSnippetCaches(), CancellationToken.None, TaskCreationOptions.None, ForegroundTaskScheduler).CompletesAsyncOperation(token); }