Пример #1
0
        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);
        }
        int IVsTextManagerEvents4.OnUserPreferencesChanged4(
            VIEWPREFERENCES3[] viewPrefs,
            LANGPREFERENCES3[] langPrefs,
            FONTCOLORPREFERENCES2[] colorPrefs)
        {
            this.AssertIsForeground();

            if (langPrefs != null && langPrefs[0].guidLang == _languageSetting.guidLang)
            {
                _languageSetting = langPrefs[0];

                // We need to go and refresh each option we know about, since the option service caches them.
                // TODO: should a serializer have an event to say the backing store changed?
                RefreshOption(FormattingOptions.UseTabs);
                RefreshOption(FormattingOptions.TabSize);
                RefreshOption(FormattingOptions.SmartIndent);
                RefreshOption(FormattingOptions.IndentationSize);
                RefreshOption(CompletionOptions.HideAdvancedMembers);
                RefreshOption(CompletionOptions.TriggerOnTyping);
                RefreshOption(SignatureHelpOptions.ShowSignatureHelp);
                RefreshOption(NavigationBarOptions.ShowNavigationBar);
                RefreshOption(BraceCompletionOptions.EnableBraceCompletion);
            }

            return(VSConstants.S_OK);
        }
Пример #3
0
        protected async Task <int> GetXamlIndentAsync(IAsyncServiceProvider serviceProvider)
        {
            try
            {
                var xamlLanguageGuid    = new Guid("CD53C9A1-6BC2-412B-BE36-CC715ED8DD41");
                var languagePreferences = new LANGPREFERENCES3[1];

                languagePreferences[0].guidLang = xamlLanguageGuid;

                if (await serviceProvider.GetServiceAsync(typeof(SVsTextManager)) is IVsTextManager4 textManager)
                {
                    textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null);

                    return((int)languagePreferences[0].uIndentSize);
                }
                else
                {
                    RapidXamlPackage.Logger?.RecordError("Failed to get IVsTextManager4 in BaseCommand.GetXamlIndentAsync");
                }
            }
            catch (Exception exc)
            {
                this.Logger.RecordException(exc);
            }

            var indent = new Microsoft.VisualStudio.Text.Editor.IndentSize();

            return(indent.Default);
        }
Пример #4
0
 private static void getEditorPreferences(ITextView textView)
 {
     if (!_optionsValid)
     {
         var package     = XSharp.Project.XSharpProjectPackage.Instance;
         var optionsPage = package.GetIntellisenseOptionsPage();
         var textManager = package.GetTextManager();
         //
         _alignDoCase      = optionsPage.AlignDoCase;
         _alignMethod      = optionsPage.AlignMethod;
         _keywordCase      = optionsPage.KeywordCase;
         _identifierCase   = optionsPage.IdentifierCase;
         _noGotoDefinition = optionsPage.DisableGotoDefinition;
         var languagePreferences = new LANGPREFERENCES3[1];
         languagePreferences[0].guidLang = GuidStrings.guidLanguageService;
         var result = textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null);
         if (result == VSConstants.S_OK)
         {
             _indentStyle = languagePreferences[0].IndentStyle;
         }
         _tabSize      = textView.Options.GetTabSize();
         _indentSize   = textView.Options.GetIndentSize();
         _optionsValid = true;
     }
 }
 private LANGPREFERENCES3 GetLanguagePreferences(Guid langServiceGuid)
 {
     LANGPREFERENCES3[] langPrefs = new LANGPREFERENCES3[] { new LANGPREFERENCES3() };
     langPrefs[0].guidLang = langServiceGuid;
     Marshal.ThrowExceptionForHR(TextManager.GetUserPreferences6(null, langPrefs, null));
     return(langPrefs[0]);
 }
 private void SetLineNumbersEnabled(LANGPREFERENCES3 langPrefs, bool enabled)
 {
     // Update the Line Numbers state
     langPrefs.fLineNumbers = (uint)(enabled ? 1 : 0);
     // Save the update to the langPrefs
     SetLangPrefererences(langPrefs);
 }
Пример #7
0
        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);
        }
 private void HideAllEditorMargins(VIEWPREFERENCES5 viewPrefs, LANGPREFERENCES3 langPrefs)
 {
     // Mark all editor margins as hidden
     viewPrefs.fWidgetMargin    = 0;
     langPrefs.fLineNumbers     = 0;
     viewPrefs.fSelectionMargin = 0;
     SaveAllUserPreferences(viewPrefs, langPrefs);
 }
        public void ExecToggleLineNumbers(Guid langServiceGuid)
        {
            // Get the language preferences
            LANGPREFERENCES3 langPrefs = GetLanguagePreferences(langServiceGuid);
            bool             enabled   = IsLineNumbersEnabled(langPrefs);

            SetLineNumbersEnabled(langPrefs, !enabled);
        }
 private void GetAllUserPreferences(Guid langServiceGuid, out VIEWPREFERENCES5 viewPrefs, out LANGPREFERENCES3 langPrefs)
 {
     LANGPREFERENCES3[] langPrefsArr = new LANGPREFERENCES3[] { new LANGPREFERENCES3() };
     VIEWPREFERENCES5[] viewPrefsArr = new VIEWPREFERENCES5[] { new VIEWPREFERENCES5() };
     langPrefsArr[0].guidLang = langServiceGuid;
     Marshal.ThrowExceptionForHR(TextManager.GetUserPreferences6(viewPrefsArr, langPrefsArr, null));
     langPrefs = langPrefsArr[0];
     viewPrefs = viewPrefsArr[0];
 }
        public void ExecToggleNavigationBar(IWpfTextView textView, Guid langServiceGuid)
        {
            // Get the language preferences
            LANGPREFERENCES3 langPrefs = GetLanguagePreferences(langServiceGuid);
            bool             enabled   = IsNavBarEnabled(langPrefs);

            // Update the state (toggle)
            langPrefs.fDropdownBar = (uint)(enabled ? 0 : 1);
            // Save the update to the langPrefs
            SetLangPrefererences(langPrefs);
        }
Пример #12
0
        int IVsTextManagerEvents4.OnUserPreferencesChanged4(
            VIEWPREFERENCES3[] viewPrefs,
            LANGPREFERENCES3[] langPrefs,
            FONTCOLORPREFERENCES2[] colorPrefs)
        {
            if (langPrefs != null)
            {
                RefreshLanguageSettings(langPrefs);
            }

            return VSConstants.S_OK;
        }
        private void SaveCurrentViewAndLangPrefs(VIEWPREFERENCES5 viewPrefs, LANGPREFERENCES3 langPrefs)
        {
            // Create a Map of settings to restore to
            Dictionary <string, object> restoreSettings = new Dictionary <string, object>
            {
                // Save the viewPrefs and langPrefs
                ["ViewPrefs"] = viewPrefs,      // Holds Breakpoint, SelectionMargin
                ["LangPrefs"] = langPrefs       // Holds LineNumbers
            };

            // Save the RestoreActions to the global map against the given language type
            RestoreSettingsMap[languageServiceGuid] = restoreSettings;
        }
Пример #14
0
        private void LoadLanguagePreferences()
        {
            var langPrefs = new LANGPREFERENCES3[1];

            langPrefs[0].guidLang = _languageServiceId;

            var hr = _textManager.GetUserPreferences4(null, langPrefs, null);

            if (hr == VSConstants.S_OK)
            {
                _langPrefs = langPrefs[0];
            }
            Debug.Assert(_langPrefs != null);
        }
        public int OnUserPreferencesChanged4(VIEWPREFERENCES3[] pViewPrefs, LANGPREFERENCES3[] pLangPrefs, FONTCOLORPREFERENCES2[] pColorPrefs) {
            IVsTextManager4 textMgr = (IVsTextManager4)NodejsPackage.Instance.GetService(typeof(SVsTextManager));

           if (pLangPrefs != null && pLangPrefs.Length > 0 && pLangPrefs[0].guidLang == _preferences.guidLang) {
                _preferences.IndentStyle = pLangPrefs[0].IndentStyle;
                _preferences.fAutoListMembers = pLangPrefs[0].fAutoListMembers;
                _preferences.fAutoListParams = pLangPrefs[0].fAutoListParams;
                _preferences.fHideAdvancedAutoListMembers = pLangPrefs[0].fHideAdvancedAutoListMembers;

                // Synchronize settings back to TS language service
                pLangPrefs[0].guidLang = Guids.TypeScriptLanguageInfo;
                textMgr.SetUserPreferences4(null, pLangPrefs, null);
            }
            return VSConstants.S_OK;
        }
Пример #16
0
        private void getOptions()
        {
            _alignDoCase = _optionsPage.AlignDoCase;
            _alignMethod = _optionsPage.AlignMethod;
            var languagePreferences = new LANGPREFERENCES3[1];

            languagePreferences[0].guidLang = GuidStrings.guidLanguageService;
            var result = _textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null);

            if (result == VSConstants.S_OK)
            {
                _indentStyle = languagePreferences[0].IndentStyle;
                _tabSize     = (int)languagePreferences[0].uTabSize;
            }
        }
        private void SetUserPreferences()
        {
            var langPrefs = new LANGPREFERENCES3[1];

            langPrefs[0] = _languageSetting;

            if (IsForeground())
            {
                Marshal.ThrowExceptionForHR(_textManager.SetUserPreferences4(pViewPrefs: null, pLangPrefs: langPrefs, pColorPrefs: null));
            }
            else
            {
                Task.Factory.StartNew(this.SetUserPreferences, CancellationToken.None, TaskCreationOptions.None, ForegroundThreadAffinitizedObject.CurrentForegroundThreadData.TaskScheduler);
            }
        }
        // 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);
        }
        private void SetUserPreferences()
        {
            var langPrefs = new LANGPREFERENCES3[1];

            langPrefs[0] = _languageSetting;

            if (IsForeground())
            {
                Marshal.ThrowExceptionForHR(_textManager.SetUserPreferences4(pViewPrefs: null, pLangPrefs: langPrefs, pColorPrefs: null));
            }
            else
            {
                TaskFactory factory = new TaskFactory(ForegroundThreadAffinitizedObject.ForegroundTaskScheduler);
                factory.StartNew(this.SetUserPreferences);
            }
        }
Пример #20
0
        private void SetInteger(string name, int value)
        {
            LANGPREFERENCES3 langPrefs = LangPrefs;

            switch (name)
            {
            case EditorSettings.IndentStyleKey:
                if (langPrefs.IndentStyle != (vsIndentStyle)value)
                {
                    langPrefs.IndentStyle = (vsIndentStyle)value;
                    SetLangPrefs(langPrefs);
                }
                break;

            case EditorSettings.FormatterIndentSizeKey:
                if (langPrefs.uIndentSize != (uint)value)
                {
                    langPrefs.uIndentSize = (uint)value;
                    SetLangPrefs(langPrefs);
                }
                break;

            case EditorSettings.FormatterIndentTypeKey:
                if (langPrefs.fInsertTabs != (uint)value)
                {
                    langPrefs.fInsertTabs = (uint)value;
                    SetLangPrefs(langPrefs);
                }
                break;

            case EditorSettings.FormatterTabSizeKey:
                if (langPrefs.uTabSize != (uint)value)
                {
                    langPrefs.uTabSize = (uint)value;
                    SetLangPrefs(langPrefs);
                }
                break;

            default:
                if (!_integerSettings.ContainsKey(name) || value != _integerSettings[name])
                {
                    _integerSettings[name] = value;
                    SettingsChanged?.Invoke(this, EventArgs.Empty);
                }
                break;
            }
        }
 private bool AllMarginsAreHidden(VIEWPREFERENCES5 viewPrefs, LANGPREFERENCES3 langPrefs)
 {
     // Check for BreakPoint, LineNumbers, SelectionMargin, TrackChanges
     if (IsIndicatorMarginEnabled(viewPrefs))
     {
         return(false);
     }
     if (IsLineNumbersEnabled(langPrefs))
     {
         return(false);
     }
     if (IsSelectionMarginEnabled(viewPrefs))
     {
         return(false);
     }
     return(true);
 }
        private void RestoreMargins()
        {
            // Get old user settings
            RestoreSettingsMap.TryGetValue(languageServiceGuid, out Dictionary <string, object> restoreSettings);
            if (restoreSettings == null)
            {
                return;                          // No previous settings found. Exit out.
            }
            VIEWPREFERENCES5 oldViewPrefs = (VIEWPREFERENCES5)restoreSettings["ViewPrefs"];
            LANGPREFERENCES3 oldLangPrefs = (LANGPREFERENCES3)restoreSettings["LangPrefs"];

            // Fetch the latest settings
            GetAllUserPreferences(languageServiceGuid, out VIEWPREFERENCES5 viewPrefs, out LANGPREFERENCES3 langPrefs);
            // Update all the margins to be the same as the restore settings
            viewPrefs.fWidgetMargin    = oldViewPrefs.fWidgetMargin;
            viewPrefs.fSelectionMargin = oldViewPrefs.fSelectionMargin;
            langPrefs.fLineNumbers     = oldLangPrefs.fLineNumbers;
            // Save the new settings
            SaveAllUserPreferences(viewPrefs, langPrefs);
        }
Пример #23
0
        public async Task <int> GetXamlIndentAsync()
        {
            try
            {
                var xamlLanguageGuid    = new Guid("CD53C9A1-6BC2-412B-BE36-CC715ED8DD41");
                var languagePreferences = new LANGPREFERENCES3[1];

                languagePreferences[0].guidLang = xamlLanguageGuid;

                if (!(await this.serviceProvider.GetServiceAsync(typeof(SVsTextManager)) is IVsTextManager4 textManager))
                {
                    SharedRapidXamlPackage.Logger?.RecordGeneralError(StringRes.Error_FailedToGetIVsTextManager4InVisualStudioAbstraction_GetXamlIndentAsync);
                }
                else
                {
                    textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null);

                    return((int)languagePreferences[0].uIndentSize);
                }
            }
Пример #24
0
        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);
        }
Пример #25
0
        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, Guid>.Empty.Add(LanguageNames.CSharp, Guids.CSharpLanguageServiceId)
                                                               .Add(LanguageNames.VisualBasic, Guids.VisualBasicLanguageServiceId)
                                                               .Add("TypeScript", new Guid("4a0dddb5-7a95-4fbf-97cc-616d07737a77"));

            foreach (var languageGuid in _languageMap.Values)
            {
                var languagePreferences = new LANGPREFERENCES3[1];
                languagePreferences[0].guidLang = languageGuid;
                Marshal.ThrowExceptionForHR(_textManager.GetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null));

                RefreshLanguageSettings(languagePreferences);
            }

            _textManagerEvents2Sink = ComEventSink.Advise<IVsTextManagerEvents4>(_textManager, this);
        }
        public int OnUserPreferencesChanged4(
            VIEWPREFERENCES3[] viewPrefs,
            LANGPREFERENCES3[] langPrefs,
            FONTCOLORPREFERENCES2[] colorPrefs) {
            if (langPrefs != null && langPrefs[0].guidLang == _languageServiceId) {
                _langPrefs = langPrefs[0];
                FireSettingsChanged();
            }

            return VSConstants.S_OK;
        }
Пример #27
0
 private void SetUserPreferencesMaybeAsync(LANGPREFERENCES3[] languagePreferences)
 {
     if (IsForeground())
     {
         Marshal.ThrowExceptionForHR(_textManager.SetUserPreferences4(pViewPrefs: null, pLangPrefs: languagePreferences, pColorPrefs: null));
     }
     else
     {
         Task.Factory.StartNew(() => this.SetUserPreferencesMaybeAsync(languagePreferences), CancellationToken.None, TaskCreationOptions.None, ForegroundThreadAffinitizedObject.CurrentForegroundThreadData.TaskScheduler);
     }
 }
Пример #28
0
        public bool TryPersist(OptionKey optionKey, object value)
        {
            if (!_supportedOptions.Contains(optionKey.Option))
            {
                value = null;
                return false;
            }

            if (!_languageMap.TryGetValue(optionKey.Language, out var languageServiceGuid))
            {
                value = null;
                return false;
            }

            var languagePreferences = new LANGPREFERENCES3[1];
            languagePreferences[0].guidLang = languageServiceGuid.Item1;
            Marshal.ThrowExceptionForHR(_textManager.GetUserPreferences4(null, languagePreferences, null));

            SetValueForOption(optionKey.Option, ref languagePreferences[0], value);
            SetUserPreferencesMaybeAsync(languagePreferences);

            // Even if we didn't call back, say we completed the persist
            return true;
        }
Пример #29
0
 private static void SetValueForOption(IOption option, ref LANGPREFERENCES3 languagePreference, object value)
 {
     if (option == FormattingOptions.UseTabs)
     {
         languagePreference.fInsertTabs = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else if (option == FormattingOptions.TabSize)
     {
         languagePreference.uTabSize = Convert.ToUInt32(value);
     }
     else if (option == FormattingOptions.IndentationSize)
     {
         languagePreference.uIndentSize = Convert.ToUInt32(value);
     }
     else if (option == FormattingOptions.SmartIndent)
     {
         switch ((FormattingOptions.IndentStyle)value)
         {
             case FormattingOptions.IndentStyle.None:
                 languagePreference.IndentStyle = vsIndentStyle.vsIndentStyleNone;
                 break;
             case FormattingOptions.IndentStyle.Block:
                 languagePreference.IndentStyle = vsIndentStyle.vsIndentStyleDefault;
                 break;
             default:
                 languagePreference.IndentStyle = vsIndentStyle.vsIndentStyleSmart;
                 break;
         }
     }
     else if (option == CompletionOptions.HideAdvancedMembers)
     {
         languagePreference.fHideAdvancedAutoListMembers = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else if (option == CompletionOptions.TriggerOnTyping)
     {
         languagePreference.fAutoListMembers = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else if (option == SignatureHelpOptions.ShowSignatureHelp)
     {
         languagePreference.fAutoListParams = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else if (option == NavigationBarOptions.ShowNavigationBar)
     {
         languagePreference.fDropdownBar = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else if (option == BraceCompletionOptions.EnableBraceCompletion)
     {
         languagePreference.fBraceCompletion = Convert.ToUInt32((bool)value ? 1 : 0);
     }
     else
     {
         throw new ArgumentException("Unexpected option.", nameof(option));
     }
 }
Пример #30
0
 private static object GetValueForOption(IOption option, LANGPREFERENCES3 languagePreference)
 {
     if (option == FormattingOptions.UseTabs)
     {
         return languagePreference.fInsertTabs != 0;
     }
     else if (option == FormattingOptions.TabSize)
     {
         return Convert.ToInt32(languagePreference.uTabSize);
     }
     else if (option == FormattingOptions.IndentationSize)
     {
         return Convert.ToInt32(languagePreference.uIndentSize);
     }
     else if (option == FormattingOptions.SmartIndent)
     {
         switch (languagePreference.IndentStyle)
         {
             case vsIndentStyle.vsIndentStyleNone:
                 return FormattingOptions.IndentStyle.None;
             case vsIndentStyle.vsIndentStyleDefault:
                 return FormattingOptions.IndentStyle.Block;
             default:
                 return FormattingOptions.IndentStyle.Smart;
         }
     }
     else if (option == CompletionOptions.HideAdvancedMembers)
     {
         return languagePreference.fHideAdvancedAutoListMembers != 0;
     }
     else if (option == CompletionOptions.TriggerOnTyping)
     {
         return languagePreference.fAutoListMembers != 0;
     }
     else if (option == SignatureHelpOptions.ShowSignatureHelp)
     {
         return languagePreference.fAutoListParams != 0;
     }
     else if (option == NavigationBarOptions.ShowNavigationBar)
     {
         return languagePreference.fDropdownBar != 0;
     }
     else if (option == BraceCompletionOptions.EnableBraceCompletion)
     {
         return languagePreference.fBraceCompletion != 0;
     }
     else
     {
         throw new ArgumentException("Unexpected option.", nameof(option));
     }
 }
Пример #31
0
        private void RefreshLanguageSettings(LANGPREFERENCES3[] langPrefs)
        {
            this.AssertIsForeground();
            if (_languageMap.TryGetKey(Tuple.Create(langPrefs[0].guidLang), out var languageName))
            {
                foreach (var option in _supportedOptions)
                {
                    var keyWithLanguage = new OptionKey(option, languageName);
                    object newValue = GetValueForOption(option, langPrefs[0]);

                    _optionService.RefreshOption(keyWithLanguage, newValue);
                }
            }
        }
 public LanguagePreferences(LANGPREFERENCES3 preferences) {
     _preferences = preferences;
 }
Пример #33
0
 public static LANGPREFERENCES3[] GetNodejsLanguagePreferencesFromTypeScript(IVsTextManager4 textMgr) {
     var langPrefs = new LANGPREFERENCES3[1];
     langPrefs[0].guidLang = Guids.TypeScriptLanguageInfo;
     ErrorHandler.ThrowOnFailure(textMgr.GetUserPreferences4(null, langPrefs, null));
     langPrefs[0].guidLang = typeof(NodejsLanguageInfo).GUID;
     textMgr.SetUserPreferences4(null, langPrefs, null);
     return langPrefs;
 }
Пример #34
0
 public int SetUserPreferences4(VIEWPREFERENCES3[] pViewPrefs, LANGPREFERENCES3[] pLangPrefs, FONTCOLORPREFERENCES2[] pColorPrefs)
 {
     return VSConstants.S_OK;
 }
Пример #35
0
 public static LANGPREFERENCES3[] GetNodejsLanguagePreferencesFromTypeScript(IVsTextManager4 textMgr) {
     var langPrefs = new LANGPREFERENCES3[1];
     langPrefs[0].guidLang = Guids.TypeScriptLanguageInfo;
     int hr = textMgr.GetUserPreferences4(null, langPrefs, null);
     if (ErrorHandler.Failed(hr)) {
         MessageBox.Show(Project.SR.GetString(Project.SR.CouldNotGetTypeScriptLanguagePreferences), Project.SR.ProductName);
         ErrorHandler.ThrowOnFailure(hr);
     }
     langPrefs[0].guidLang = typeof(NodejsLanguageInfo).GUID;
     textMgr.SetUserPreferences4(null, langPrefs, null);
     return langPrefs;
 }
        private void SetLangPrefs(LANGPREFERENCES3 newPreferences) {
            IVsTextManager4 textManager = VsAppShell.Current.GetGlobalService<IVsTextManager4>(typeof(SVsTextManager));
            Debug.Assert(textManager != null);

            if (textManager != null) {
                // Set the language preferences, like "is intellisense turned on?"
                LANGPREFERENCES3[] langPrefs = { newPreferences };

                textManager.SetUserPreferences4(null, langPrefs, null);
            }
        }