提交 db62c6f7 编写于 作者: B Brett V. Forsgren

switch VB styles to use new grid UI and serialize notifications properly

上级 923fffcd
......@@ -663,15 +663,6 @@ internal class CSharpVSResources {
}
}
/// <summary>
/// Looks up a localized string similar to Prefer framework type.
/// </summary>
internal static string PreferFrameworkType {
get {
return ResourceManager.GetString("PreferFrameworkType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to For locals, parameters and members.
/// </summary>
......@@ -690,15 +681,6 @@ internal class CSharpVSResources {
}
}
/// <summary>
/// Looks up a localized string similar to Prefer predefined type.
/// </summary>
internal static string PreferPredefinedType {
get {
return ResourceManager.GetString("PreferPredefinedType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Prefer &apos;this.&apos;.
/// </summary>
......
......@@ -438,12 +438,6 @@
<data name="PreferExplicitType" xml:space="preserve">
<value>Prefer explicit type</value>
</data>
<data name="PreferFrameworkType" xml:space="preserve">
<value>Prefer framework type</value>
</data>
<data name="PreferPredefinedType" xml:space="preserve">
<value>Prefer predefined type</value>
</data>
<data name="PreferThis" xml:space="preserve">
<value>Prefer 'this.'</value>
</data>
......
......@@ -251,8 +251,8 @@ internal StyleViewModel(OptionSet optionSet, IServiceProvider serviceProvider) :
var predefinedTypesPreferences = new List<CodeStylePreference>
{
new CodeStylePreference(CSharpVSResources.PreferPredefinedType, isChecked: true),
new CodeStylePreference(CSharpVSResources.PreferFrameworkType, isChecked: false),
new CodeStylePreference(ServicesVSResources.PreferPredefinedType, isChecked: true),
new CodeStylePreference(ServicesVSResources.PreferFrameworkType, isChecked: false),
};
var typeStylePreferences = new List<CodeStylePreference>
......
......@@ -1188,6 +1188,24 @@ internal class ServicesVSResources {
}
}
/// <summary>
/// Looks up a localized string similar to Prefer framework type.
/// </summary>
internal static string PreferFrameworkType {
get {
return ResourceManager.GetString("PreferFrameworkType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Prefer predefined type.
/// </summary>
internal static string PreferPredefinedType {
get {
return ResourceManager.GetString("PreferPredefinedType", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [+] .
/// </summary>
......
......@@ -693,4 +693,10 @@ Additional information: {1}</value>
<data name="LearnMore" xml:space="preserve">
<value>Learn more</value>
</data>
<data name="PreferFrameworkType" xml:space="preserve">
<value>Prefer framework type</value>
</data>
<data name="PreferPredefinedType" xml:space="preserve">
<value>Prefer predefined type</value>
</data>
</root>
\ No newline at end of file
......@@ -64,6 +64,15 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic
End Set
End Property
'''<summary>
''' Looks up a localized string similar to Do not prefer &apos;Me.&apos;.
'''</summary>
Friend Shared ReadOnly Property DoNotPreferMe() As String
Get
Return ResourceManager.GetString("DoNotPreferMe", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Insert Snippet.
'''</summary>
......@@ -333,6 +342,15 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic
Return ResourceManager.GetString("Option_Suggest_imports_for_types_in_reference_assemblies", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to predefined type preferences:.
'''</summary>
Friend Shared ReadOnly Property PredefinedTypesGroupTitle() As String
Get
Return ResourceManager.GetString("PredefinedTypesGroupTitle", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Prefer intrinsic predefined type keyword when declaring locals, parameters and members.
......@@ -352,6 +370,15 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Prefer &apos;Me.&apos;.
'''</summary>
Friend Shared ReadOnly Property PreferMe() As String
Get
Return ResourceManager.GetString("PreferMe", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Qualify event access with &apos;Me&apos;.
'''</summary>
......@@ -370,6 +397,15 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &apos;Me.&apos; preferences.
'''</summary>
Friend Shared ReadOnly Property QualifyGroupTitle() As String
Get
Return ResourceManager.GetString("QualifyGroupTitle", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Qualify method access with &apos;Me&apos;.
'''</summary>
......
......@@ -225,4 +225,16 @@
<data name="QualifyPropertyAccessWithMe" xml:space="preserve">
<value>Qualify property access with 'Me'</value>
</data>
<data name="DoNotPreferMe" xml:space="preserve">
<value>Do not prefer 'Me.'</value>
</data>
<data name="PreferMe" xml:space="preserve">
<value>Prefer 'Me.'</value>
</data>
<data name="QualifyGroupTitle" xml:space="preserve">
<value>'Me.' preferences</value>
</data>
<data name="PredefinedTypesGroupTitle" xml:space="preserve">
<value>predefined type preferences:</value>
</data>
</root>
\ No newline at end of file
......@@ -131,6 +131,7 @@
<Compile Include="ObjectBrowser\VisualBasicSyncClassViewCommandHandler.vb" />
<Compile Include="Options\AdvancedOptionPageStrings.vb" />
<Compile Include="Options\AutomationObject.vb" />
<Compile Include="Options\Formatting\CodeStylePage.vb" />
<Compile Include="Options\NamingStylesOptionPage.vb" />
<Compile Include="Options\VisualBasicLanguageSettingsSerializer.vb" />
<Compile Include="Options\VisualBasicSettingsManagerOptionSerializer.vb" />
......
......@@ -5,6 +5,7 @@ Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.ErrorReporting
Imports Microsoft.CodeAnalysis.Options
Imports Microsoft.CodeAnalysis.VisualBasic
Imports Microsoft.VisualStudio.LanguageServices.CSharp.Options.Formatting
Imports Microsoft.VisualStudio.LanguageServices.Implementation
Imports Microsoft.VisualStudio.LanguageServices.Implementation.LanguageService
Imports Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem
......@@ -47,7 +48,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic
<ProvideLanguageExtension(GetType(VisualBasicLanguageService), ".vb")>
<ProvideLanguageEditorOptionPage(GetType(AdvancedOptionPage), "Basic", Nothing, "Advanced", "#102", 10160)>
<ProvideLanguageEditorToolsOptionCategory("Basic", "Code Style", "#109")>
<ProvideLanguageEditorOptionPage(GetType(StyleOptionPage), "Basic", "Code Style", "General", "#111", 10161)>
<ProvideLanguageEditorOptionPage(GetType(CodeStylePage), "Basic", "Code Style", "General", "#111", 10161)>
<ProvideLanguageEditorOptionPage(GetType(NamingStylesOptionPage), "Basic", "Code Style", "Naming", "#110", 10162)>
<ProvideAutomationProperties("TextEditor", "Basic", Guids.TextManagerPackageString, 103, 105, Guids.VisualBasicPackageIdString)>
<ProvideAutomationProperties("TextEditor", "Basic-Specific", Guids.VisualBasicPackageIdString, 104, 106)>
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Runtime.InteropServices
Imports System.Xml.Linq
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.CodeStyle
Imports Microsoft.CodeAnalysis.Editor.Shared.Options
......@@ -158,39 +159,39 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
End Set
End Property
Public Property Style_QualifyFieldAccess As Boolean
Public Property Style_QualifyFieldAccess As String
Get
Return GetBooleanOption(CodeStyleOptions.QualifyFieldAccess)
Return GetXmlOption(CodeStyleOptions.QualifyFieldAccess)
End Get
Set(value As Boolean)
SetBooleanOption(CodeStyleOptions.QualifyFieldAccess, value)
Set(value As String)
SetXmlOption(CodeStyleOptions.QualifyFieldAccess, value)
End Set
End Property
Public Property Style_QualifyPropertyAccess As Boolean
Public Property Style_QualifyPropertyAccess As String
Get
Return GetBooleanOption(CodeStyleOptions.QualifyPropertyAccess)
Return GetXmlOption(CodeStyleOptions.QualifyPropertyAccess)
End Get
Set(value As Boolean)
SetBooleanOption(CodeStyleOptions.QualifyPropertyAccess, value)
Set(value As String)
SetXmlOption(CodeStyleOptions.QualifyPropertyAccess, value)
End Set
End Property
Public Property Style_QualifyMethodAccess As Boolean
Public Property Style_QualifyMethodAccess As String
Get
Return GetBooleanOption(CodeStyleOptions.QualifyMethodAccess)
Return GetXmlOption(CodeStyleOptions.QualifyMethodAccess)
End Get
Set(value As Boolean)
SetBooleanOption(CodeStyleOptions.QualifyMethodAccess, value)
Set(value As String)
SetXmlOption(CodeStyleOptions.QualifyMethodAccess, value)
End Set
End Property
Public Property Style_QualifyEventAccess As Boolean
Public Property Style_QualifyEventAccess As String
Get
Return GetBooleanOption(CodeStyleOptions.QualifyEventAccess)
Return GetXmlOption(CodeStyleOptions.QualifyEventAccess)
End Get
Set(value As Boolean)
SetBooleanOption(CodeStyleOptions.QualifyEventAccess, value)
Set(value As String)
SetXmlOption(CodeStyleOptions.QualifyEventAccess, value)
End Set
End Property
......@@ -225,6 +226,10 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
Return _workspace.Options.GetOption(key, LanguageNames.VisualBasic)
End Function
Private Function GetXmlOption(key As PerLanguageOption(Of CodeStyleOption(Of Boolean))) As String
Return _workspace.Options.GetOption(key, LanguageNames.VisualBasic).ToXElement().ToString()
End Function
Private Sub SetBooleanOption(key As [PerLanguageOption](Of Boolean), value As Boolean)
_workspace.Options = _workspace.Options.WithChangedOption(key, LanguageNames.VisualBasic, value)
End Sub
......@@ -243,14 +248,10 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
_workspace.Options = _workspace.Options.WithChangedOption(key, LanguageNames.VisualBasic, boolValue)
End Sub
Private Function GetBooleanOption(key As [PerLanguageOption](Of CodeStyleOption(Of Boolean))) As Boolean
Return _workspace.Options.GetOption(key, LanguageNames.VisualBasic).Value
End Function
Private Sub SetBooleanOption(key As [PerLanguageOption](Of CodeStyleOption(Of Boolean)), value As Boolean)
Dim opt = _workspace.Options.GetOption(key, LanguageNames.VisualBasic)
opt.Value = value
_workspace.Options = _workspace.Options.WithChangedOption(key, LanguageNames.VisualBasic, opt)
Private Sub SetXmlOption(key As PerLanguageOption(Of CodeStyleOption(Of Boolean)), value As String)
Dim convertedValue = CodeStyleOption(Of Boolean).FromXElement(XElement.Parse(value))
_workspace.Options = _workspace.Options.WithChangedOption(key, LanguageNames.VisualBasic, convertedValue)
End Sub
End Class
End Namespace
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports System.Runtime.InteropServices
Imports Microsoft.VisualStudio.LanguageServices.Implementation.Options
Imports Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
Namespace Microsoft.VisualStudio.LanguageServices.CSharp.Options.Formatting
<Guid(Guids.VisualBasicOptionPageCodeStyleIdString)>
Friend Class CodeStylePage
Inherits AbstractOptionPage
Protected Overrides Function CreateOptionPage(serviceProvider As IServiceProvider) As AbstractOptionPageControl
Return New GridOptionPreviewControl(serviceProvider, Function(o, s) New StyleViewModel(o, s))
End Function
End Class
End Namespace
......@@ -11,28 +11,97 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
Inherits AbstractOptionPreviewViewModel
Friend Overrides Function ShouldPersistOption(key As OptionKey) As Boolean
Return key.Option.Feature = SimplificationOptions.PerLanguageFeatureName
Return key.Option.Feature = SimplificationOptions.PerLanguageFeatureName OrElse
key.Option.Feature = CodeStyleOptions.PerLanguageCodeStyleOption
End Function
Private _mePreviewTrue As String = <a><![CDATA[
Private Shared s_fieldDeclarationPreviewTrue As String = "
Class C
Private x as Integer
Private Sub S()
'//[
Me.x = 3
'//]
Private capacity As Integer
Sub Method()
'//[
Me.capacity = 0
'//]
End Sub
]]></a>.Value
End Class
"
Private _mePreviewFalse As String = <a><![CDATA[
Private Shared s_fieldDeclarationPreviewFalse As String = "
Class C
Private x as Integer
Private Sub S()
'//[
x = 3
'//]
Private capacity As Integer
Sub Method()
'//[
capacity = 0
'//]
End Sub
]]></a>.Value
End Class
"
Private Shared s_propertyDeclarationPreviewTrue As String = "
Class C
Public Property Id As Integer
Sub Method()
'//[
Me.Id = 0
'//]
End Sub
End Class
"
Private Shared s_propertyDeclarationPreviewFalse As String = "
Class C
Public Property Id As Integer
Sub Method()
'//[
Id = 0
'//]
End Sub
End Class
"
Private Shared s_methodDeclarationPreviewTrue As String = "
Class C
Sub Display()
'//[
Me.Display()
'//]
End Sub
End Class
"
Private Shared s_methodDeclarationPreviewFalse As String = "
Class C
Sub Display()
'//[
Display()
'//]
End Sub
End Class
"
Private Shared s_eventDeclarationPreviewTrue As String = "
Imports System
Class C
Public Event Elapsed As EventHandler
Sub Handler(sender As Object, args As EventArgs)
'//[
AddHandler Me.Elapsed, AddressOf Handler
'//]
End Sub
End Class
"
Private Shared s_eventDeclarationPreviewFalse As String = "
Imports System
Class C
Public Event Elapsed As EventHandler
Sub Handler(sender As Object, args As EventArgs)
'//[
AddHandler Elapsed, AddressOf Handler
'//]
End Sub
End Class
"
Private _intrinsicDeclarationPreviewTrue As String = <a><![CDATA[
Class Program
......@@ -81,12 +150,26 @@ End Class
Public Sub New(optionSet As OptionSet, serviceProvider As IServiceProvider)
MyBase.New(optionSet, serviceProvider, LanguageNames.VisualBasic)
Me.Items.Add(New CheckBoxOptionViewModel(CodeStyleOptions.QualifyFieldAccess, BasicVSResources.QualifyFieldAccessWithMe, _mePreviewTrue, _mePreviewFalse, Me, optionSet))
Me.Items.Add(New CheckBoxOptionViewModel(CodeStyleOptions.QualifyPropertyAccess, BasicVSResources.QualifyPropertyAccessWithMe, _mePreviewTrue, _mePreviewFalse, Me, optionSet))
Me.Items.Add(New CheckBoxOptionViewModel(CodeStyleOptions.QualifyMethodAccess, BasicVSResources.QualifyMethodAccessWithMe, _mePreviewTrue, _mePreviewFalse, Me, optionSet))
Me.Items.Add(New CheckBoxOptionViewModel(CodeStyleOptions.QualifyEventAccess, BasicVSResources.QualifyEventAccessWithMe, _mePreviewTrue, _mePreviewFalse, Me, optionSet))
Me.Items.Add(New CheckBoxOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, BasicVSResources.PreferIntrinsicPredefinedTypeKeywordInDeclaration, _intrinsicDeclarationPreviewTrue, _intrinsicDeclarationPreviewFalse, Me, optionSet))
Me.Items.Add(New CheckBoxOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, BasicVSResources.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, _intrinsicMemberAccessPreviewTrue, _intrinsicMemberAccessPreviewFalse, Me, optionSet))
Dim qualifyGroupTitle = BasicVSResources.QualifyGroupTitle
Dim qualifyMemberAccessPreferences = New List(Of CodeStylePreference) From
{
New CodeStylePreference(BasicVSResources.PreferMe, isChecked:=True),
New CodeStylePreference(BasicVSResources.DoNotPreferMe, isChecked:=False)
}
Dim predefinedTypesGroupTitle = BasicVSResources.PredefinedTypesGroupTitle
Dim predefinedTypesPreferences = New List(Of CodeStylePreference) From
{
New CodeStylePreference(ServicesVSResources.PreferPredefinedType, isChecked:=True),
New CodeStylePreference(ServicesVSResources.PreferFrameworkType, isChecked:=False)
}
Me.CodeStyleItems.Add(New SimpleCodeStyleOptionViewModel(CodeStyleOptions.QualifyFieldAccess, BasicVSResources.QualifyFieldAccessWithMe, s_fieldDeclarationPreviewTrue, s_fieldDeclarationPreviewFalse, Me, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences))
Me.CodeStyleItems.Add(New SimpleCodeStyleOptionViewModel(CodeStyleOptions.QualifyPropertyAccess, BasicVSResources.QualifyPropertyAccessWithMe, s_propertyDeclarationPreviewTrue, s_propertyDeclarationPreviewFalse, Me, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences))
Me.CodeStyleItems.Add(New SimpleCodeStyleOptionViewModel(CodeStyleOptions.QualifyMethodAccess, BasicVSResources.QualifyMethodAccessWithMe, s_methodDeclarationPreviewTrue, s_methodDeclarationPreviewFalse, Me, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences))
Me.CodeStyleItems.Add(New SimpleCodeStyleOptionViewModel(CodeStyleOptions.QualifyEventAccess, BasicVSResources.QualifyEventAccessWithMe, s_eventDeclarationPreviewTrue, s_eventDeclarationPreviewFalse, Me, optionSet, qualifyGroupTitle, qualifyMemberAccessPreferences))
Me.CodeStyleItems.Add(New BooleanCodeStyleOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInDeclaration, BasicVSResources.PreferIntrinsicPredefinedTypeKeywordInDeclaration, _intrinsicDeclarationPreviewTrue, _intrinsicDeclarationPreviewFalse, Me, optionSet, predefinedTypesGroupTitle))
Me.CodeStyleItems.Add(New BooleanCodeStyleOptionViewModel(SimplificationOptions.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, BasicVSResources.PreferIntrinsicPredefinedTypeKeywordInMemberAccess, _intrinsicMemberAccessPreviewTrue, _intrinsicMemberAccessPreviewFalse, Me, optionSet, predefinedTypesGroupTitle))
End Sub
End Class
End Namespace
......@@ -3,7 +3,9 @@
Imports System.Collections.Immutable
Imports System.Composition
Imports System.Reflection
Imports System.Xml.Linq
Imports Microsoft.CodeAnalysis
Imports Microsoft.CodeAnalysis.CodeStyle
Imports Microsoft.CodeAnalysis.Editor.Shared.Options
Imports Microsoft.CodeAnalysis.ExtractMethod
Imports Microsoft.CodeAnalysis.Formatting
......@@ -18,6 +20,7 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
<ExportLanguageSpecificOptionSerializer(
LanguageNames.VisualBasic,
AddImportOptions.FeatureName,
CodeStyleOptions.PerLanguageCodeStyleOption,
SimplificationOptions.PerLanguageFeatureName,
ExtractMethodOptions.FeatureName,
FeatureOnOffOptions.OptionName,
......@@ -32,6 +35,11 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
MyBase.New(serviceProvider, importedOptionService)
End Sub
Private Const Style_QualifyFieldAccess As String = NameOf(AutomationObject.Style_QualifyFieldAccess)
Private Const Style_QualifyPropertyAccess As String = NameOf(AutomationObject.Style_QualifyPropertyAccess)
Private Const Style_QualifyMethodAccess As String = NameOf(AutomationObject.Style_QualifyMethodAccess)
Private Const Style_QualifyEventAccess As String = NameOf(AutomationObject.Style_QualifyEventAccess)
Protected Overrides Function CreateStorageKeyToOptionMap() As ImmutableDictionary(Of String, IOption)
Dim Result As ImmutableDictionary(Of String, IOption).Builder = ImmutableDictionary.Create(Of String, IOption)(StringComparer.OrdinalIgnoreCase).ToBuilder()
......@@ -52,7 +60,8 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
GetType(ExtractMethodOptions),
GetType(SimplificationOptions),
GetType(ServiceFeatureOnOffOptions),
GetType(VisualStudioNavigationOptions)}
GetType(VisualStudioNavigationOptions),
GetType(CodeStyleOptions)}
Dim Flags As BindingFlags = BindingFlags.Public Or BindingFlags.Static
Result.AddRange(AbstractSettingsManagerOptionSerializer.GetOptionInfoFromTypeFields(Types, Flags, AddressOf GetOptionInfo))
......@@ -75,23 +84,24 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
Protected Overrides Function SupportsOption([option] As IOption, languageName As String) As Boolean
If languageName = LanguageNames.VisualBasic Then
If [option].Feature = FeatureOnOffOptions.OptionName Then
Return [option].Name = FeatureOnOffOptions.PrettyListing.Name Or
[option].Name = FeatureOnOffOptions.LineSeparator.Name Or
[option].Name = FeatureOnOffOptions.Outlining.Name Or
[option].Name = FeatureOnOffOptions.ReferenceHighlighting.Name Or
[option].Name = FeatureOnOffOptions.KeywordHighlighting.Name Or
[option].Name = FeatureOnOffOptions.RenameTrackingPreview.Name Or
[option].Name = FeatureOnOffOptions.EndConstruct.Name Or
[option].Name = FeatureOnOffOptions.AutoXmlDocCommentGeneration.Name Or
Return [option].Name = FeatureOnOffOptions.PrettyListing.Name OrElse
[option].Name = FeatureOnOffOptions.LineSeparator.Name OrElse
[option].Name = FeatureOnOffOptions.Outlining.Name OrElse
[option].Name = FeatureOnOffOptions.ReferenceHighlighting.Name OrElse
[option].Name = FeatureOnOffOptions.KeywordHighlighting.Name OrElse
[option].Name = FeatureOnOffOptions.RenameTrackingPreview.Name OrElse
[option].Name = FeatureOnOffOptions.EndConstruct.Name OrElse
[option].Name = FeatureOnOffOptions.AutoXmlDocCommentGeneration.Name OrElse
[option].Name = FeatureOnOffOptions.AutomaticInsertionOfAbstractOrInterfaceMembers.Name
End If
Return [option].Feature = FormattingOptions.InternalTabFeatureName Or
[option].Feature = AddImportOptions.FeatureName Or
[option].Feature = ExtractMethodOptions.FeatureName Or
[option].Feature = SimplificationOptions.PerLanguageFeatureName Or
[option].Feature = ServiceFeatureOnOffOptions.OptionName Or
[option].Feature = VisualStudioNavigationOptions.FeatureName
Return [option].Feature = FormattingOptions.InternalTabFeatureName OrElse
[option].Feature = AddImportOptions.FeatureName OrElse
[option].Feature = ExtractMethodOptions.FeatureName OrElse
[option].Feature = SimplificationOptions.PerLanguageFeatureName OrElse
[option].Feature = ServiceFeatureOnOffOptions.OptionName OrElse
[option].Feature = VisualStudioNavigationOptions.FeatureName OrElse
[option].Feature = CodeStyleOptions.PerLanguageCodeStyleOption
End If
Return False
......@@ -125,5 +135,67 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.Options
Return MyBase.GetStorageKeyForOption(key)
End Function
Public Overrides Function TryFetch(optionKey As OptionKey, ByRef value As Object) As Boolean
If Me.Manager Is Nothing Then
Debug.Fail("Manager is unexpectedly Nothing")
Return False
End If
' code style use Me.
If optionKey.Option Is CodeStyleOptions.QualifyFieldAccess Then
Return FetchStyleBool(Style_QualifyFieldAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyPropertyAccess Then
Return FetchStyleBool(Style_QualifyPropertyAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyMethodAccess Then
Return FetchStyleBool(Style_QualifyMethodAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyEventAccess Then
Return FetchStyleBool(Style_QualifyEventAccess, value)
End If
Return MyBase.TryFetch(optionKey, value)
End Function
Public Overrides Function TryPersist(optionKey As OptionKey, value As Object) As Boolean
If Me.Manager Is Nothing Then
Debug.Fail("Manager is unexpectedly Nothing")
Return False
End If
' code style use Me.
If optionKey.Option Is CodeStyleOptions.QualifyFieldAccess Then
Return PersistStyleOption(Of Boolean)(Style_QualifyFieldAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyPropertyAccess Then
Return PersistStyleOption(Of Boolean)(Style_QualifyPropertyAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyMethodAccess Then
Return PersistStyleOption(Of Boolean)(Style_QualifyMethodAccess, value)
ElseIf optionKey.Option Is CodeStyleOptions.QualifyEventAccess Then
Return PersistStyleOption(Of Boolean)(Style_QualifyEventAccess, value)
End If
Return MyBase.TryPersist(optionKey, value)
End Function
Private Function FetchStyleBool(settingName As String, ByRef value As Object) As Boolean
Dim typeStyleValue = Manager.GetValueOrDefault(Of String)(settingName)
Return FetchStyleOption(Of Boolean)(typeStyleValue, value)
End Function
Private Shared Function FetchStyleOption(Of T)(typeStyleOptionValue As String, ByRef value As Object) As Boolean
If String.IsNullOrEmpty(typeStyleOptionValue) Then
value = CodeStyleOption(Of T).Default
Else
value = CodeStyleOption(Of T).FromXElement(XElement.Parse(typeStyleOptionValue))
End If
Return True
End Function
Private Function PersistStyleOption(Of T)([option] As String, value As Object) As Boolean
Dim serializedValue = CType(value, CodeStyleOption(Of T)).ToXElement().ToString()
Me.Manager.SetValueAsync([option], value:=serializedValue, isMachineLocal:=False)
Return True
End Function
End Class
End Namespace
\ No newline at end of file
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册