From 9991b46d09c804808fc32f4cfdc4d888594df4a8 Mon Sep 17 00:00:00 2001 From: Willem Date: Thu, 14 Jun 2018 12:12:53 +0200 Subject: [PATCH 01/17] Fix another case of trailing whitespace, fixes #564 --- .../Formatting/XmlFormattingTests.cs | 32 ++++++++++++++++++- CodeMaid/Model/Comments/CommentFormatter.cs | 9 +++--- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs b/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs index 1876d812..5c426b39 100644 --- a/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs +++ b/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs @@ -52,6 +52,7 @@ public void XmlFormattingTests_AddSpaceToTagContentWithSelfClosingTag() Settings.Default.Formatting_CommentXmlSplitSummaryTagToMultipleLines = false; Settings.Default.Formatting_CommentXmlSpaceTags = true; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; CommentFormatHelper.AssertEqualAfterFormat(input, expected); } @@ -68,13 +69,14 @@ public void XmlFormattingTests_AddSpaceToTagContentWithSelfClosingTagMultiline() Settings.Default.Formatting_CommentXmlSplitSummaryTagToMultipleLines = true; Settings.Default.Formatting_CommentXmlSpaceTags = true; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; CommentFormatHelper.AssertEqualAfterFormat(input, expected); } [TestMethod] [TestCategory("Formatting UnitTests")] - public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespace() + public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespace1() { var input = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; var expected = @@ -90,6 +92,29 @@ public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespa CommentFormatHelper.AssertEqualAfterFormat(input, expected); } + + [TestMethod] + [TestCategory("Formatting UnitTests")] + public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespace2() + { + var input = + "" + Environment.NewLine + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + Environment.NewLine + + ""; + + var expected = + "" + Environment.NewLine + + " Lorem ipsum dolor sit amet, consectetur" + Environment.NewLine + + " adipiscing elit." + Environment.NewLine + + ""; + + Settings.Default.Formatting_CommentWrapColumn = 50; + Settings.Default.Formatting_CommentXmlValueIndent = 4; + Settings.Default.Formatting_CommentXmlSpaceTags = true; + + CommentFormatHelper.AssertEqualAfterFormat(input, expected); + } + [TestMethod] [TestCategory("Formatting UnitTests")] public void XmlFormattingTests_AllRootLevelTagsOnNewLine() @@ -185,6 +210,7 @@ public void XmlFormattingTests_DoesIndentAfterLiteralContent() Settings.Default.Formatting_CommentXmlValueIndent = 4; Settings.Default.Formatting_CommentXmlKeepTagsTogether = true; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; // First pass. var result = CommentFormatHelper.AssertEqualAfterFormat(input, expected); @@ -264,6 +290,7 @@ public void XmlFormattingTests_DoNotAutoExpandTags() var input = ""; Settings.Default.Formatting_CommentXmlSplitSummaryTagToMultipleLines = false; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; CommentFormatHelper.AssertEqualAfterFormat(input); } @@ -350,6 +377,8 @@ public void XmlFormattingTests_InterpunctionNoSpacing() { var input = "Line with ."; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; + CommentFormatHelper.AssertEqualAfterFormat(input); } @@ -405,6 +434,7 @@ public void XmlFormattingTests_RemoveSpaceFromInsideTags() var expected = ""; Settings.Default.Formatting_CommentXmlSplitSummaryTagToMultipleLines = false; + Settings.Default.Formatting_CommentXmlSpaceSingleTags = false; CommentFormatHelper.AssertEqualAfterFormat(input, expected); } diff --git a/CodeMaid/Model/Comments/CommentFormatter.cs b/CodeMaid/Model/Comments/CommentFormatter.cs index 68a98edb..0d388242 100644 --- a/CodeMaid/Model/Comments/CommentFormatter.cs +++ b/CodeMaid/Model/Comments/CommentFormatter.cs @@ -216,6 +216,10 @@ private bool Parse(ICommentLine line, int indentLevel = 0, int xmlTagLength = 0) { NewLine(); } + else if (Settings.Default.Formatting_CommentXmlSpaceTags) + { + Append(CodeCommentHelper.Spacer); + } // Always consider the word after the opening tag as the first word to prevent an // extra space before. @@ -361,11 +365,6 @@ private bool ParseXml(CommentLineXml line, int indentLevel = 0) // If true the tag should be alone on it's own line. tagOnOwnLine |= isLiteralContent; - if (!tagOnOwnLine && Settings.Default.Formatting_CommentXmlSpaceTags) - { - Append(CodeCommentHelper.Spacer); - } - // If the literal content of an XML tag is set, output that content without formatting. if (isLiteralContent) { From 23d16f144791de45f62b661121e3c3be4695305f Mon Sep 17 00:00:00 2001 From: zim Date: Fri, 17 Aug 2018 15:56:48 +0200 Subject: [PATCH 02/17] Spade: Option to Display Type Information, #263, disabled by default --- CodeMaid/Properties/Resources.Designer.cs | 9 +++++++++ CodeMaid/Properties/Resources.en-US.resx | 3 +++ CodeMaid/Properties/Resources.resx | 13 ++++++++----- CodeMaid/Properties/Settings.Designer.cs | 14 +++++++++++++- CodeMaid/Properties/Settings.settings | 3 +++ .../NameParametersToTextBlockConverter.cs | 16 ++++++++++++++++ .../Options/Digging/DiggingDataTemplate.xaml | 1 + .../Dialogs/Options/Digging/DiggingViewModel.cs | 10 ++++++++++ CodeMaid/app.config | 3 +++ 9 files changed, 66 insertions(+), 6 deletions(-) diff --git a/CodeMaid/Properties/Resources.Designer.cs b/CodeMaid/Properties/Resources.Designer.cs index 0cc8f7bf..f7fb4633 100644 --- a/CodeMaid/Properties/Resources.Designer.cs +++ b/CodeMaid/Properties/Resources.Designer.cs @@ -2041,6 +2041,15 @@ public static string ShowStartPageWhenASolutionIsClosed { } } + /// + /// Looks up a localized string similar to Show types. + /// + public static string ShowTypes { + get { + return ResourceManager.GetString("ShowTypes", resourceCulture); + } + } + /// /// Looks up a localized string similar to Skip during automatic cleanup on save. /// diff --git a/CodeMaid/Properties/Resources.en-US.resx b/CodeMaid/Properties/Resources.en-US.resx index c51b4215..79fb3a78 100644 --- a/CodeMaid/Properties/Resources.en-US.resx +++ b/CodeMaid/Properties/Resources.en-US.resx @@ -774,6 +774,9 @@ Show method parameters + + Show types + Show start page when a solution is closed diff --git a/CodeMaid/Properties/Resources.resx b/CodeMaid/Properties/Resources.resx index c51b4215..4de90d4b 100644 --- a/CodeMaid/Properties/Resources.resx +++ b/CodeMaid/Properties/Resources.resx @@ -20,13 +20,13 @@ this is my long stringthis is a comment Blue - [base64 mime encoded serialized .NET Framework object] - + [base64 mime encoded serialized .NET Framework object] + - [base64 mime encoded string representing a byte array form of the .NET Framework object] + [base64 mime encoded string representing a byte array form of the .NET Framework object] This is a comment - - + + There are any number of "resheader" rows that contain simple name/value pairs. @@ -777,6 +777,9 @@ Show start page when a solution is closed + + Show types + Skip during automatic cleanup on save diff --git a/CodeMaid/Properties/Settings.Designer.cs b/CodeMaid/Properties/Settings.Designer.cs index 050d9c48..92dfa8be 100644 --- a/CodeMaid/Properties/Settings.Designer.cs +++ b/CodeMaid/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace SteveCadwallader.CodeMaid.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.6.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -1343,6 +1343,18 @@ public bool Digging_ShowMethodParameters { } } + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Digging_ShowTypes { + get { + return ((bool)(this["Digging_ShowTypes"])); + } + set { + this["Digging_ShowTypes"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] diff --git a/CodeMaid/Properties/Settings.settings b/CodeMaid/Properties/Settings.settings index 5642b769..3f9f2735 100644 --- a/CodeMaid/Properties/Settings.settings +++ b/CodeMaid/Properties/Settings.settings @@ -332,6 +332,9 @@ True + + False + True diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index 6a3595e0..42a6ebc2 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -123,9 +123,25 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur } } + if (Properties.Settings.Default.Digging_ShowTypes) + { + string formattedTypeString = CreateFormattedTypeString(codeItem); + if (!string.IsNullOrWhiteSpace(formattedTypeString)) + { + textBlock.Inlines.Add(" : " + formattedTypeString); + } + } + return textBlock; } + private string CreateFormattedTypeString(ICodeItem codeItem) + { + return codeItem is BaseCodeItemElement bcie + ? TypeFormatHelper.Format(bcie.TypeString) + : string.Empty; + } + /// /// Converts a value. /// diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml index 033c5873..0cbab4bd 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml @@ -31,6 +31,7 @@ + diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs index 172bba05..598e35bf 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs @@ -29,6 +29,7 @@ public DiggingViewModel(CodeMaidPackage package, Settings activeSettings) new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemComplexity, x => ShowItemComplexity), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemMetadata, x => ShowItemMetadata), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowMethodParameters, x => ShowMethodParameters), + new SettingToOptionMapping(x => ActiveSettings.Digging_ShowTypes, x => ShowTypes), new SettingToOptionMapping(x => ActiveSettings.Digging_SynchronizeOutlining, x => SynchronizeOutlining) }; } @@ -127,6 +128,15 @@ public bool ShowMethodParameters set { SetPropertyValue(value); } } + /// + /// Gets or sets the flag indicating if types should be shown. + /// + public bool ShowTypes + { + get { return GetPropertyValue(); } + set { SetPropertyValue(value); } + } + /// /// Gets or sets the flag indicating if outlining should be synchronized with the code file. /// diff --git a/CodeMaid/app.config b/CodeMaid/app.config index 2a85fa73..0c4c87b0 100644 --- a/CodeMaid/app.config +++ b/CodeMaid/app.config @@ -381,6 +381,9 @@ True + + False + True From 9f2bc06d35bc696ee170911e8397f5c0cf0540f4 Mon Sep 17 00:00:00 2001 From: zim Date: Sun, 19 Aug 2018 09:22:51 +0200 Subject: [PATCH 03/17] Spade: use display style for return types that is used for arguments --- CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index 42a6ebc2..241e4c73 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -128,7 +128,8 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur string formattedTypeString = CreateFormattedTypeString(codeItem); if (!string.IsNullOrWhiteSpace(formattedTypeString)) { - textBlock.Inlines.Add(" : " + formattedTypeString); + textBlock.Inlines.Add(" : "); + textBlock.Inlines.Add(CreateTypeRun(formattedTypeString)); } } From 9a7395c4a72e17954f51f775a51f221cff86592e Mon Sep 17 00:00:00 2001 From: zim Date: Sun, 19 Aug 2018 09:37:48 +0200 Subject: [PATCH 04/17] Spade: Rename option "Show types" to "Show return types" --- CodeMaid/Properties/Resources.Designer.cs | 12 ++++++------ CodeMaid/Properties/Resources.en-US.resx | 4 ++-- CodeMaid/Properties/Resources.resx | 4 ++-- CodeMaid/Properties/Settings.Designer.cs | 6 +++--- CodeMaid/Properties/Settings.settings | 2 +- .../Converters/NameParametersToTextBlockConverter.cs | 2 +- .../Dialogs/Options/Digging/DiggingDataTemplate.xaml | 2 +- .../UI/Dialogs/Options/Digging/DiggingViewModel.cs | 6 +++--- CodeMaid/app.config | 2 +- 9 files changed, 20 insertions(+), 20 deletions(-) diff --git a/CodeMaid/Properties/Resources.Designer.cs b/CodeMaid/Properties/Resources.Designer.cs index f7fb4633..061f4968 100644 --- a/CodeMaid/Properties/Resources.Designer.cs +++ b/CodeMaid/Properties/Resources.Designer.cs @@ -2033,20 +2033,20 @@ public static string ShowMethodParameters { } /// - /// Looks up a localized string similar to Show start page when a solution is closed. + /// Looks up a localized string similar to Show return types. /// - public static string ShowStartPageWhenASolutionIsClosed { + public static string ShowReturnTypes { get { - return ResourceManager.GetString("ShowStartPageWhenASolutionIsClosed", resourceCulture); + return ResourceManager.GetString("ShowReturnTypes", resourceCulture); } } /// - /// Looks up a localized string similar to Show types. + /// Looks up a localized string similar to Show start page when a solution is closed. /// - public static string ShowTypes { + public static string ShowStartPageWhenASolutionIsClosed { get { - return ResourceManager.GetString("ShowTypes", resourceCulture); + return ResourceManager.GetString("ShowStartPageWhenASolutionIsClosed", resourceCulture); } } diff --git a/CodeMaid/Properties/Resources.en-US.resx b/CodeMaid/Properties/Resources.en-US.resx index 79fb3a78..fedce9e9 100644 --- a/CodeMaid/Properties/Resources.en-US.resx +++ b/CodeMaid/Properties/Resources.en-US.resx @@ -774,8 +774,8 @@ Show method parameters - - Show types + + Show return types Show start page when a solution is closed diff --git a/CodeMaid/Properties/Resources.resx b/CodeMaid/Properties/Resources.resx index 4de90d4b..c0726641 100644 --- a/CodeMaid/Properties/Resources.resx +++ b/CodeMaid/Properties/Resources.resx @@ -777,8 +777,8 @@ Show start page when a solution is closed - - Show types + + Show return types Skip during automatic cleanup on save diff --git a/CodeMaid/Properties/Settings.Designer.cs b/CodeMaid/Properties/Settings.Designer.cs index 92dfa8be..b4a7dc41 100644 --- a/CodeMaid/Properties/Settings.Designer.cs +++ b/CodeMaid/Properties/Settings.Designer.cs @@ -1346,12 +1346,12 @@ public bool Digging_ShowMethodParameters { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool Digging_ShowTypes { + public bool Digging_ShowReturnTypes { get { - return ((bool)(this["Digging_ShowTypes"])); + return ((bool)(this["Digging_ShowReturnTypes"])); } set { - this["Digging_ShowTypes"] = value; + this["Digging_ShowReturnTypes"] = value; } } diff --git a/CodeMaid/Properties/Settings.settings b/CodeMaid/Properties/Settings.settings index 3f9f2735..fa862a95 100644 --- a/CodeMaid/Properties/Settings.settings +++ b/CodeMaid/Properties/Settings.settings @@ -332,7 +332,7 @@ True - + False diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index 241e4c73..464891f4 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -123,7 +123,7 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur } } - if (Properties.Settings.Default.Digging_ShowTypes) + if (Properties.Settings.Default.Digging_ShowReturnTypes) { string formattedTypeString = CreateFormattedTypeString(codeItem); if (!string.IsNullOrWhiteSpace(formattedTypeString)) diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml index 0cbab4bd..0fe4aa6e 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml @@ -31,7 +31,7 @@ - + diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs index 598e35bf..d699bfdf 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs @@ -29,7 +29,7 @@ public DiggingViewModel(CodeMaidPackage package, Settings activeSettings) new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemComplexity, x => ShowItemComplexity), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemMetadata, x => ShowItemMetadata), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowMethodParameters, x => ShowMethodParameters), - new SettingToOptionMapping(x => ActiveSettings.Digging_ShowTypes, x => ShowTypes), + new SettingToOptionMapping(x => ActiveSettings.Digging_ShowReturnTypes, x => ShowReturnTypes), new SettingToOptionMapping(x => ActiveSettings.Digging_SynchronizeOutlining, x => SynchronizeOutlining) }; } @@ -129,9 +129,9 @@ public bool ShowMethodParameters } /// - /// Gets or sets the flag indicating if types should be shown. + /// Gets or sets the flag indicating if return types should be shown. /// - public bool ShowTypes + public bool ShowReturnTypes { get { return GetPropertyValue(); } set { SetPropertyValue(value); } diff --git a/CodeMaid/app.config b/CodeMaid/app.config index 0c4c87b0..47a86bb1 100644 --- a/CodeMaid/app.config +++ b/CodeMaid/app.config @@ -381,7 +381,7 @@ True - + False From fa4291a5abe60e914d1b813dc842012127f998c6 Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sun, 16 Sep 2018 13:49:55 +0000 Subject: [PATCH 05/17] Remove static instances and pull directly from settings. --- .../NameParametersToTextBlockConverter.cs | 31 +++---------------- .../ToolWindows/Spade/CodeItemTemplates.xaml | 22 +++---------- 2 files changed, 8 insertions(+), 45 deletions(-) diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index 464891f4..37654ae4 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -1,5 +1,6 @@ using SteveCadwallader.CodeMaid.Helpers; using SteveCadwallader.CodeMaid.Model.CodeItems; +using SteveCadwallader.CodeMaid.Properties; using System; using System.Collections.Generic; using System.Globalization; @@ -22,14 +23,6 @@ public class NameParametersToTextBlockConverter : IMultiValueConverter /// public static NameParametersToTextBlockConverter Default = new NameParametersToTextBlockConverter(); - /// - /// An instance of the that includes parameters. - /// - public static NameParametersToTextBlockConverter WithParameters = new NameParametersToTextBlockConverter - { - IncludeParameters = true - }; - /// /// An instance of the for parent items. /// @@ -40,26 +33,10 @@ public class NameParametersToTextBlockConverter : IMultiValueConverter FontWeight = FontWeights.SemiBold }; - /// - /// An instance of the for parent items with parameters. - /// - public static NameParametersToTextBlockConverter ParentWithParameters = new NameParametersToTextBlockConverter - { - FontSize = 14, - FontStyle = FontStyles.Normal, - FontWeight = FontWeights.SemiBold, - IncludeParameters = true - }; - #endregion Fields #region Properties - /// - /// Gets or sets a flag indicating if parameters should be included. - /// - public bool IncludeParameters { get; set; } - /// /// Gets or sets the size of the font. /// @@ -114,7 +91,7 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur textBlock.Inlines.AddRange(CreateInlinesForName(codeItem.Name, textToHighlight)); - if (IncludeParameters) + if (Settings.Default.Digging_ShowMethodParameters) { var codeItemParameters = codeItem as ICodeItemParameters; if (codeItemParameters != null) @@ -123,8 +100,8 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur } } - if (Properties.Settings.Default.Digging_ShowReturnTypes) - { + if (Settings.Default.Digging_ShowReturnTypes) + { string formattedTypeString = CreateFormattedTypeString(codeItem); if (!string.IsNullOrWhiteSpace(formattedTypeString)) { diff --git a/CodeMaid/UI/ToolWindows/Spade/CodeItemTemplates.xaml b/CodeMaid/UI/ToolWindows/Spade/CodeItemTemplates.xaml index 0ba2b286..2cbf150c 100644 --- a/CodeMaid/UI/ToolWindows/Spade/CodeItemTemplates.xaml +++ b/CodeMaid/UI/ToolWindows/Spade/CodeItemTemplates.xaml @@ -97,28 +97,14 @@ - - - - - - - - - - - - - - - - - - + + + + From da38dfaa7cc84090e02e1552bfb8754abcf9558b Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sun, 16 Sep 2018 14:15:10 +0000 Subject: [PATCH 06/17] Code refactoring to follow existing convention. --- .../NameParametersToTextBlockConverter.cs | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index 37654ae4..f7af6562 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -102,24 +102,16 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur if (Settings.Default.Digging_ShowReturnTypes) { - string formattedTypeString = CreateFormattedTypeString(codeItem); - if (!string.IsNullOrWhiteSpace(formattedTypeString)) + var codeItemElement = codeItem as BaseCodeItemElement; + if (codeItemElement != null) { - textBlock.Inlines.Add(" : "); - textBlock.Inlines.Add(CreateTypeRun(formattedTypeString)); + textBlock.Inlines.AddRange(CreateInlinesForReturn(codeItemElement)); } } return textBlock; } - private string CreateFormattedTypeString(ICodeItem codeItem) - { - return codeItem is BaseCodeItemElement bcie - ? TypeFormatHelper.Format(bcie.TypeString) - : string.Empty; - } - /// /// Converts a value. /// @@ -234,6 +226,25 @@ private IEnumerable CreateInlinesForParameters(ICodeItemParameters codeI return inlines; } + /// + /// Creates the inlines for the return. + /// + /// The code item element. + /// The inlines representing the return. + private IEnumerable CreateInlinesForReturn(BaseCodeItemElement codeItemElement) + { + var inlines = new List(); + + var formattedTypeString = TypeFormatHelper.Format(codeItemElement.TypeString); + if (!string.IsNullOrWhiteSpace(formattedTypeString)) + { + inlines.Add(CreateTypeRun(" : ")); + inlines.Add(CreateTypeRun(formattedTypeString)); + } + + return inlines; + } + /// /// Creates an inline run based on the specified text. /// From fc6c7895afc94bef650541b8c5b760b96cffce04 Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sun, 16 Sep 2018 14:26:50 +0000 Subject: [PATCH 07/17] Rename return types to item types, seems like a better fit for things like a class. --- CodeMaid/Properties/Resources.Designer.cs | 12 ++++++------ CodeMaid/Properties/Resources.en-US.resx | 6 +++--- CodeMaid/Properties/Resources.resx | 6 +++--- CodeMaid/Properties/Resources.zh-Hans.resx | 3 +++ CodeMaid/Properties/Settings.Designer.cs | 14 +++++++------- CodeMaid/Properties/Settings.settings | 6 +++--- .../NameParametersToTextBlockConverter.cs | 10 +++++----- .../Options/Digging/DiggingDataTemplate.xaml | 2 +- .../UI/Dialogs/Options/Digging/DiggingViewModel.cs | 10 +++++----- CodeMaid/app.config | 6 +++--- 10 files changed, 39 insertions(+), 36 deletions(-) diff --git a/CodeMaid/Properties/Resources.Designer.cs b/CodeMaid/Properties/Resources.Designer.cs index 061f4968..830f3f96 100644 --- a/CodeMaid/Properties/Resources.Designer.cs +++ b/CodeMaid/Properties/Resources.Designer.cs @@ -2024,20 +2024,20 @@ public static string ShowItemMetadata { } /// - /// Looks up a localized string similar to Show method parameters. + /// Looks up a localized string similar to Show item types. /// - public static string ShowMethodParameters { + public static string ShowItemTypes { get { - return ResourceManager.GetString("ShowMethodParameters", resourceCulture); + return ResourceManager.GetString("ShowItemTypes", resourceCulture); } } /// - /// Looks up a localized string similar to Show return types. + /// Looks up a localized string similar to Show method parameters. /// - public static string ShowReturnTypes { + public static string ShowMethodParameters { get { - return ResourceManager.GetString("ShowReturnTypes", resourceCulture); + return ResourceManager.GetString("ShowMethodParameters", resourceCulture); } } diff --git a/CodeMaid/Properties/Resources.en-US.resx b/CodeMaid/Properties/Resources.en-US.resx index fedce9e9..8b6b56cc 100644 --- a/CodeMaid/Properties/Resources.en-US.resx +++ b/CodeMaid/Properties/Resources.en-US.resx @@ -771,12 +771,12 @@ Show item metadata + + Show item types + Show method parameters - - Show return types - Show start page when a solution is closed diff --git a/CodeMaid/Properties/Resources.resx b/CodeMaid/Properties/Resources.resx index c0726641..6b1bc8f1 100644 --- a/CodeMaid/Properties/Resources.resx +++ b/CodeMaid/Properties/Resources.resx @@ -771,15 +771,15 @@ Show item metadata + + Show item types + Show method parameters Show start page when a solution is closed - - Show return types - Skip during automatic cleanup on save diff --git a/CodeMaid/Properties/Resources.zh-Hans.resx b/CodeMaid/Properties/Resources.zh-Hans.resx index c8d9cfd1..a79d8c54 100644 --- a/CodeMaid/Properties/Resources.zh-Hans.resx +++ b/CodeMaid/Properties/Resources.zh-Hans.resx @@ -771,6 +771,9 @@ 显示项目元数据 + + 显示项目类型 + 显示方法参数 diff --git a/CodeMaid/Properties/Settings.Designer.cs b/CodeMaid/Properties/Settings.Designer.cs index b4a7dc41..43c18b4a 100644 --- a/CodeMaid/Properties/Settings.Designer.cs +++ b/CodeMaid/Properties/Settings.Designer.cs @@ -1334,24 +1334,24 @@ public bool Digging_ShowItemMetadata { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool Digging_ShowMethodParameters { + public bool Digging_ShowItemTypes { get { - return ((bool)(this["Digging_ShowMethodParameters"])); + return ((bool)(this["Digging_ShowItemTypes"])); } set { - this["Digging_ShowMethodParameters"] = value; + this["Digging_ShowItemTypes"] = value; } } [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool Digging_ShowReturnTypes { + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Digging_ShowMethodParameters { get { - return ((bool)(this["Digging_ShowReturnTypes"])); + return ((bool)(this["Digging_ShowMethodParameters"])); } set { - this["Digging_ShowReturnTypes"] = value; + this["Digging_ShowMethodParameters"] = value; } } diff --git a/CodeMaid/Properties/Settings.settings b/CodeMaid/Properties/Settings.settings index fa862a95..46f94216 100644 --- a/CodeMaid/Properties/Settings.settings +++ b/CodeMaid/Properties/Settings.settings @@ -329,11 +329,11 @@ True - + True - - False + + True True diff --git a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs index f7af6562..fd0d4e77 100644 --- a/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs +++ b/CodeMaid/UI/Converters/NameParametersToTextBlockConverter.cs @@ -100,12 +100,12 @@ public object Convert(object[] values, Type targetType, object parameter, Cultur } } - if (Settings.Default.Digging_ShowReturnTypes) + if (Settings.Default.Digging_ShowItemTypes) { var codeItemElement = codeItem as BaseCodeItemElement; if (codeItemElement != null) { - textBlock.Inlines.AddRange(CreateInlinesForReturn(codeItemElement)); + textBlock.Inlines.AddRange(CreateInlinesForType(codeItemElement)); } } @@ -227,11 +227,11 @@ private IEnumerable CreateInlinesForParameters(ICodeItemParameters codeI } /// - /// Creates the inlines for the return. + /// Creates the inlines for the type. /// /// The code item element. - /// The inlines representing the return. - private IEnumerable CreateInlinesForReturn(BaseCodeItemElement codeItemElement) + /// The inlines representing the type. + private IEnumerable CreateInlinesForType(BaseCodeItemElement codeItemElement) { var inlines = new List(); diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml index 0fe4aa6e..127fc1e3 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingDataTemplate.xaml @@ -13,6 +13,7 @@ + @@ -31,7 +32,6 @@ - diff --git a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs index d699bfdf..b4e6be88 100644 --- a/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs +++ b/CodeMaid/UI/Dialogs/Options/Digging/DiggingViewModel.cs @@ -28,8 +28,8 @@ public DiggingViewModel(CodeMaidPackage package, Settings activeSettings) new SettingToOptionMapping(x => ActiveSettings.Digging_SecondarySortTypeByName, x => SecondarySortTypeByName), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemComplexity, x => ShowItemComplexity), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemMetadata, x => ShowItemMetadata), + new SettingToOptionMapping(x => ActiveSettings.Digging_ShowItemTypes, x => ShowItemTypes), new SettingToOptionMapping(x => ActiveSettings.Digging_ShowMethodParameters, x => ShowMethodParameters), - new SettingToOptionMapping(x => ActiveSettings.Digging_ShowReturnTypes, x => ShowReturnTypes), new SettingToOptionMapping(x => ActiveSettings.Digging_SynchronizeOutlining, x => SynchronizeOutlining) }; } @@ -120,18 +120,18 @@ public bool ShowItemMetadata } /// - /// Gets or sets the flag indicating if method parameters should be shown. + /// Gets or sets the flag indicating if item types should be shown. /// - public bool ShowMethodParameters + public bool ShowItemTypes { get { return GetPropertyValue(); } set { SetPropertyValue(value); } } /// - /// Gets or sets the flag indicating if return types should be shown. + /// Gets or sets the flag indicating if method parameters should be shown. /// - public bool ShowReturnTypes + public bool ShowMethodParameters { get { return GetPropertyValue(); } set { SetPropertyValue(value); } diff --git a/CodeMaid/app.config b/CodeMaid/app.config index 47a86bb1..62562525 100644 --- a/CodeMaid/app.config +++ b/CodeMaid/app.config @@ -378,11 +378,11 @@ True - + True - - False + + True True From 35ded02ca1e607bdce128b868ef6e1dcce56f202 Mon Sep 17 00:00:00 2001 From: Patrick Rouleau Date: Sun, 21 Oct 2018 12:12:40 -0400 Subject: [PATCH 08/17] Fix smalls typos in CONTRIBUTING.md --- CONTRIBUTING.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c2042b01..b4fcd94c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ Looking to contribute something? **Here's how you can help.** -Please read http://www.codemaid.net/contribute/ for setup and a quick code overview +Please read http://www.codemaid.net/contribute/ for setup and a quick code overview. Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, @@ -17,7 +17,7 @@ The issue tracker is the preferred channel for [bug reports](#bug-reports), [submitting pull requests](#pull-requests), but please respect the following restrictions: -* Please **do not** use the issue tracker for personal support requests. Stack +* Please **do not** use the issue tracker for personal support requests. Stack Overflow is a better place to get help. * Please **do not** derail or troll issues. Keep the discussion on topic and @@ -42,7 +42,7 @@ Guidelines for bug reports: 3. **Isolate the problem** — ideally create an [SSCCE](http://www.sscce.org/) and a live example. - Uploading the project on cloud storage (OneDrive, DropBox, et el.) + Uploading the project on cloud storage (OneDrive, DropBox, et al.) or creating a sample GitHub repository is also helpful. From 4b9c84a95d2309ad7d8fb407d66228023277aa63 Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sun, 21 Oct 2018 20:39:37 +0000 Subject: [PATCH 09/17] Update CHANGELOG.md --- CHANGELOG.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56f4ccb6..1c5475c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,11 @@ These changes have not been released to the Visual Studio marketplace, but (if checked) are available in preview within the [CI build](http://vsixgallery.com/extension/4c82e17d-927e-42d2-8460-b473ac7df316/). -- [ ] Features -- [ ] Fixes +- [x] Features + - [x] [#582](https://github.com/codecadwallader/codemaid/pull/582) - Digging: New option to show item types (e.g. method return or property type) - thanks [GammaWolf](https://github.com/GammaWolf)! + +- [x] Fixes + - [x] [#565](https://github.com/codecadwallader/codemaid/pull/565) - Fix another case of trailing whitespace - thanks [willemduncan](https://github.com/willemduncan)! ## Previous Releases From 27654ebef02b4b34337844a0e8619f0de3442d34 Mon Sep 17 00:00:00 2001 From: Jason Tyler Date: Mon, 22 Oct 2018 21:20:34 -0700 Subject: [PATCH 10/17] Feature Request: Insert blank lines before/after single-line fields Fixes #433 Add settings to hold the before/after blank lines on fields user setting. Default to false. --- CodeMaid/Properties/Settings.Designer.cs | 24 ++++++++++++++++++++++++ CodeMaid/Properties/Settings.settings | 6 ++++++ CodeMaid/app.config | 8 ++++++++ 3 files changed, 38 insertions(+) diff --git a/CodeMaid/Properties/Settings.Designer.cs b/CodeMaid/Properties/Settings.Designer.cs index 43c18b4a..b2b62816 100644 --- a/CodeMaid/Properties/Settings.Designer.cs +++ b/CodeMaid/Properties/Settings.Designer.cs @@ -2234,5 +2234,29 @@ public bool Feature_SwitchFile { this["Formatting_IgnoreLinesStartingWith"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Cleaning_InsertBlankLinePaddingBeforeFieldsSingleLine { + get { + return ((bool)(this["Cleaning_InsertBlankLinePaddingBeforeFieldsSingleLine"])); + } + set { + this["Cleaning_InsertBlankLinePaddingBeforeFieldsSingleLine"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool Cleaning_InsertBlankLinePaddingAfterFieldsSingleLine { + get { + return ((bool)(this["Cleaning_InsertBlankLinePaddingAfterFieldsSingleLine"])); + } + set { + this["Cleaning_InsertBlankLinePaddingAfterFieldsSingleLine"] = value; + } + } } } diff --git a/CodeMaid/Properties/Settings.settings b/CodeMaid/Properties/Settings.settings index 46f94216..070cd227 100644 --- a/CodeMaid/Properties/Settings.settings +++ b/CodeMaid/Properties/Settings.settings @@ -558,5 +558,11 @@ <string>ReSharper enable </string> </ArrayOfString> + + False + + + False + \ No newline at end of file diff --git a/CodeMaid/app.config b/CodeMaid/app.config index 62562525..22acef38 100644 --- a/CodeMaid/app.config +++ b/CodeMaid/app.config @@ -613,6 +613,14 @@ + + False + + + False + From 5182f2b289c892487ae94943e318b0f9b00f19df Mon Sep 17 00:00:00 2001 From: Jason Tyler Date: Mon, 22 Oct 2018 21:45:54 -0700 Subject: [PATCH 11/17] Feature Request: Insert blank lines before/after single-line fields Fixes #433 Modify field case to account for single line cases. --- CodeMaid/Logic/Cleaning/InsertBlankLinePaddingLogic.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CodeMaid/Logic/Cleaning/InsertBlankLinePaddingLogic.cs b/CodeMaid/Logic/Cleaning/InsertBlankLinePaddingLogic.cs index e427056a..bace30f5 100644 --- a/CodeMaid/Logic/Cleaning/InsertBlankLinePaddingLogic.cs +++ b/CodeMaid/Logic/Cleaning/InsertBlankLinePaddingLogic.cs @@ -77,7 +77,9 @@ internal bool ShouldBePrecededByBlankLine(BaseCodeItem codeItem) return Settings.Default.Cleaning_InsertBlankLinePaddingBeforeEvents; case KindCodeItem.Field: - return codeItem.IsMultiLine && Settings.Default.Cleaning_InsertBlankLinePaddingBeforeFieldsMultiLine; + return codeItem.IsMultiLine + ? Settings.Default.Cleaning_InsertBlankLinePaddingBeforeFieldsMultiLine + : Settings.Default.Cleaning_InsertBlankLinePaddingBeforeFieldsSingleLine; case KindCodeItem.Interface: return Settings.Default.Cleaning_InsertBlankLinePaddingBeforeInterfaces; @@ -138,7 +140,9 @@ internal bool ShouldBeFollowedByBlankLine(BaseCodeItem codeItem) return Settings.Default.Cleaning_InsertBlankLinePaddingAfterEvents; case KindCodeItem.Field: - return codeItem.IsMultiLine && Settings.Default.Cleaning_InsertBlankLinePaddingAfterFieldsMultiLine; + return codeItem.IsMultiLine + ? Settings.Default.Cleaning_InsertBlankLinePaddingAfterFieldsMultiLine + : Settings.Default.Cleaning_InsertBlankLinePaddingAfterFieldsSingleLine; case KindCodeItem.Interface: return Settings.Default.Cleaning_InsertBlankLinePaddingAfterInterfaces; From 5425afca9783423e678d063907de1f79dd1b3216 Mon Sep 17 00:00:00 2001 From: Jason Tyler Date: Tue, 23 Oct 2018 08:01:49 -0700 Subject: [PATCH 12/17] Feature Request: Insert blank lines before/after single-line fields Fixes #433 Add "single-line fields" option to the cleaning insert options view and view model. --- .../Cleaning/CleaningInsertDataTemplate.xaml | 2 ++ .../Cleaning/CleaningInsertViewModel.cs | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertDataTemplate.xaml b/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertDataTemplate.xaml index bab5c497..179b1494 100644 --- a/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertDataTemplate.xaml +++ b/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertDataTemplate.xaml @@ -17,6 +17,7 @@ + @@ -42,6 +43,7 @@ + diff --git a/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertViewModel.cs b/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertViewModel.cs index bd2b4ba0..dd4fc556 100644 --- a/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertViewModel.cs +++ b/CodeMaid/UI/Dialogs/Options/Cleaning/CleaningInsertViewModel.cs @@ -25,6 +25,7 @@ public CleaningInsertViewModel(CodeMaidPackage package, Settings activeSettings) new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterEnumerations, x => InsertBlankLinePaddingAfterEnumerations), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterEvents, x => InsertBlankLinePaddingAfterEvents), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterFieldsMultiLine, x => InsertBlankLinePaddingAfterFieldsMultiLine), + new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterFieldsSingleLine, x => InsertBlankLinePaddingAfterFieldsSingleLine), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterInterfaces, x => InsertBlankLinePaddingAfterInterfaces), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterMethods, x => InsertBlankLinePaddingAfterMethods), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingAfterNamespaces, x => InsertBlankLinePaddingAfterNamespaces), @@ -40,6 +41,7 @@ public CleaningInsertViewModel(CodeMaidPackage package, Settings activeSettings) new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeEnumerations, x => InsertBlankLinePaddingBeforeEnumerations), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeEvents, x => InsertBlankLinePaddingBeforeEvents), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeFieldsMultiLine, x => InsertBlankLinePaddingBeforeFieldsMultiLine), + new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeFieldsSingleLine, x => InsertBlankLinePaddingBeforeFieldsSingleLine), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeInterfaces, x => InsertBlankLinePaddingBeforeInterfaces), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeMethods, x => InsertBlankLinePaddingBeforeMethods), new SettingToOptionMapping(x => ActiveSettings.Cleaning_InsertBlankLinePaddingBeforeNamespaces, x => InsertBlankLinePaddingBeforeNamespaces), @@ -131,6 +133,15 @@ public bool InsertBlankLinePaddingAfterFieldsMultiLine set { SetPropertyValue(value); } } + /// + /// Gets or sets the flag indicating if blank line padding should be added after single-line fields. + /// + public bool InsertBlankLinePaddingAfterFieldsSingleLine + { + get { return GetPropertyValue(); } + set { SetPropertyValue(value); } + } + /// /// Gets or sets the flag indicating if blank line padding should be added after interfaces. /// @@ -267,6 +278,15 @@ public bool InsertBlankLinePaddingBeforeFieldsMultiLine set { SetPropertyValue(value); } } + /// + /// Gets or sets the flag indicating if blank line padding should be added before single-line fields. + /// + public bool InsertBlankLinePaddingBeforeFieldsSingleLine + { + get { return GetPropertyValue(); } + set { SetPropertyValue(value); } + } + /// /// Gets or sets the flag indicating if blank line padding should be added before interfaces. /// From 8db673f45fc9878328b53e30cf6a6ba57561a629 Mon Sep 17 00:00:00 2001 From: Derek McKinnon Date: Tue, 23 Oct 2018 17:19:52 -0400 Subject: [PATCH 13/17] Switcher: Added .cshtml -> .cshtml.cs support --- CodeMaid/Properties/Settings.Designer.cs | 2 +- CodeMaid/Properties/Settings.settings | 2 +- CodeMaid/app.config | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CodeMaid/Properties/Settings.Designer.cs b/CodeMaid/Properties/Settings.Designer.cs index 43c18b4a..ed20d9ba 100644 --- a/CodeMaid/Properties/Settings.Designer.cs +++ b/CodeMaid/Properties/Settings.Designer.cs @@ -1946,7 +1946,7 @@ public bool Reorganizing_RunAtStartOfCleanup { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute(".cpp .h||.xaml .xaml.cs||.xml .xsd||.ascx .ascx.cs||.aspx .aspx.cs||.master .mast" + - "er.cs")] + "er.cs||.cshtml .cshtml.cs")] public string Switching_RelatedFileExtensionsExpression { get { return ((string)(this["Switching_RelatedFileExtensionsExpression"])); diff --git a/CodeMaid/Properties/Settings.settings b/CodeMaid/Properties/Settings.settings index 46f94216..9271ad4c 100644 --- a/CodeMaid/Properties/Settings.settings +++ b/CodeMaid/Properties/Settings.settings @@ -483,7 +483,7 @@ False - .cpp .h||.xaml .xaml.cs||.xml .xsd||.ascx .ascx.cs||.aspx .aspx.cs||.master .master.cs + .cpp .h||.xaml .xaml.cs||.xml .xsd||.ascx .ascx.cs||.aspx .aspx.cs||.master .master.cs||.cshtml .cshtml.cs diff --git a/CodeMaid/app.config b/CodeMaid/app.config index 62562525..cfaf7aec 100644 --- a/CodeMaid/app.config +++ b/CodeMaid/app.config @@ -536,7 +536,7 @@ False - .cpp .h||.xaml .xaml.cs||.xml .xsd||.ascx .ascx.cs||.aspx .aspx.cs||.master .master.cs + .cpp .h||.xaml .xaml.cs||.xml .xsd||.ascx .ascx.cs||.aspx .aspx.cs||.master .master.cs||.cshtml .cshtml.cs From 36ee2fe3fff2733ab367bec5e3247e6b03d4f962 Mon Sep 17 00:00:00 2001 From: Rodrigo Daros Date: Thu, 6 Dec 2018 09:39:57 -0200 Subject: [PATCH 14/17] Support to install in Visual Studio 2019 Preview. --- CodeMaid/source.extension.vsixmanifest | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CodeMaid/source.extension.vsixmanifest b/CodeMaid/source.extension.vsixmanifest index 1cab3d91..8e6061c8 100644 --- a/CodeMaid/source.extension.vsixmanifest +++ b/CodeMaid/source.extension.vsixmanifest @@ -12,8 +12,8 @@ - - + + @@ -25,6 +25,6 @@ - + \ No newline at end of file From c073ea85d3cd7bebc907c0799a2d35f5e6f13ffd Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sat, 8 Dec 2018 13:19:40 +0000 Subject: [PATCH 15/17] Partial revert of #565 --- CodeMaid/Model/Comments/CommentFormatter.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CodeMaid/Model/Comments/CommentFormatter.cs b/CodeMaid/Model/Comments/CommentFormatter.cs index 0d388242..68a98edb 100644 --- a/CodeMaid/Model/Comments/CommentFormatter.cs +++ b/CodeMaid/Model/Comments/CommentFormatter.cs @@ -216,10 +216,6 @@ private bool Parse(ICommentLine line, int indentLevel = 0, int xmlTagLength = 0) { NewLine(); } - else if (Settings.Default.Formatting_CommentXmlSpaceTags) - { - Append(CodeCommentHelper.Spacer); - } // Always consider the word after the opening tag as the first word to prevent an // extra space before. @@ -365,6 +361,11 @@ private bool ParseXml(CommentLineXml line, int indentLevel = 0) // If true the tag should be alone on it's own line. tagOnOwnLine |= isLiteralContent; + if (!tagOnOwnLine && Settings.Default.Formatting_CommentXmlSpaceTags) + { + Append(CodeCommentHelper.Spacer); + } + // If the literal content of an XML tag is set, output that content without formatting. if (isLiteralContent) { From 0050cf67b42075850e10d148fa365ddfd1bfea68 Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sat, 8 Dec 2018 13:27:22 +0000 Subject: [PATCH 16/17] Temporarily ignoring a failing unit test until #564 is addressed. --- CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs b/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs index 5c426b39..5780b7bd 100644 --- a/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs +++ b/CodeMaid.UnitTests/Formatting/XmlFormattingTests.cs @@ -92,9 +92,9 @@ public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespa CommentFormatHelper.AssertEqualAfterFormat(input, expected); } - [TestMethod] [TestCategory("Formatting UnitTests")] + [Ignore] // This is temporarily ignored until a better fix for #564 is found. public void XmlFormattingTests_AddSpaceToTagContentShouldLeaveNoTrailingWhitespace2() { var input = From bd7300fcac87e02df8cbcd90dc020231a7b60117 Mon Sep 17 00:00:00 2001 From: Steve Cadwallader Date: Sun, 9 Dec 2018 18:41:25 +0000 Subject: [PATCH 17/17] Update to v10.6 label. --- CHANGELOG.md | 16 ++++++++++++---- CodeMaid/Integration/Images/about.png | Bin 51097 -> 51286 bytes CodeMaid/Integration/Images/about.xcf | Bin 189516 -> 94267 bytes CodeMaid/source.extension.cs | 2 +- CodeMaid/source.extension.vsixmanifest | 2 +- README.md | 4 ++-- appveyor.yml | 2 +- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c5475c4..d07509eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,16 +4,24 @@ These changes have not been released to the Visual Studio marketplace, but (if checked) are available in preview within the [CI build](http://vsixgallery.com/extension/4c82e17d-927e-42d2-8460-b473ac7df316/). -- [x] Features - - [x] [#582](https://github.com/codecadwallader/codemaid/pull/582) - Digging: New option to show item types (e.g. method return or property type) - thanks [GammaWolf](https://github.com/GammaWolf)! +- [ ] Features -- [x] Fixes - - [x] [#565](https://github.com/codecadwallader/codemaid/pull/565) - Fix another case of trailing whitespace - thanks [willemduncan](https://github.com/willemduncan)! +- [ ] Fixes ## Previous Releases These are the changes to each version that has been released to the Visual Studio marketplace. +## 10.6 + +**2018-12-09** + +- [x] Features + - [x] [#582](https://github.com/codecadwallader/codemaid/pull/582) - Digging: New option to show item types (e.g. method return or property type) - thanks [GammaWolf](https://github.com/GammaWolf)! + - [x] [#593](https://github.com/codecadwallader/codemaid/pull/593) - Switching: Add .cshtml -> .cshtml.cs to defaults - thanks [derekmckinnon](https://github.com/derekmckinnon)! + - [x] [#594](https://github.com/codecadwallader/codemaid/pull/594) - Cleaning: New option to add blank lines before/after single-line fields - thanks [jasonjtyler](https://github.com/jasonjtyler)! + - [x] [#604](https://github.com/codecadwallader/codemaid/pull/604) - Turn on VS2019 support - thanks [digovc](https://github.com/digovc)! + ## 10.5 **2018-06-09** diff --git a/CodeMaid/Integration/Images/about.png b/CodeMaid/Integration/Images/about.png index f25b8cffc4fb1a0d17e863d8fa8e53b665826633..54458b86c0d0bcaf116f2f5d45359d75a301d971 100644 GIT binary patch literal 51286 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 literal 51097 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 diff --git a/CodeMaid/Integration/Images/about.xcf b/CodeMaid/Integration/Images/about.xcf index 1df5a61c8734aab0b3cacbf70a6f65ae21c3db24..47df6c6a6c14299eededdc58a1eab195861009da 100644 GIT binary patch delta 3025 zcmZWr32YTb7@pbdU9Gg>(NaYL6(x$+gQ^XQtp|w4c$A=`(st)PIYO_UEtg?mG*J=` zO^O#Og0YE4QG-oHgP`$_V2nf)HNh)JjqysWP+#AB>-W#ht3h9~^UeRw%zu5m`}WWW znSI~554ZBVJy*@=sk4~+)ej8}@M{OInY4L$mGuy}?D9a_Zn*g(y*h~-tTtG$kw$(V zhEufdtkCG~(U>}2W9BA})k}w0IPa#XvIVeb;v&CplSp0yaWO9%R_ zW?nZixn>TZJKR!}=F!A4hqg0TyGmpI;~LdiaZT%6G+%c^Wj*2#vXbYz)hu>wH@44U zv1_xk>)CD<8*^MY$sE_2#>$RsG49c(3@d@R8F!=DX<(&<>m*@haJje|aHVji)rw2r zll96bj=Kq5b+o3eG%I_CLJ0El@1C;j98VNnkKr77P`e`Ks^B^(AUVM*vIxr4X;ea5 zm4L33pnB>M+5|u(ofZn$AxkOOL+%OJqirg&N`YxsME!I!QXc>9N9?3noIo2BDBf|C z6km6dG0%0cE%rCI20gxkFrhr+` zX=b5Y%GL|C(N-;hY`th@KW(8TsJn%5O%Iw5(Nvc+XqybzS}@ZxNmW`hibJS|Y67SR zm{4tr@cn95_OrHtW;tlKJnM)m7H2I{T;>ZOnsxXBn)yQbSs|bqMw?jzigo&aJK6)X z>NV7#kp!S@|5reL01$rd>I#`g07~zv| z2<97x(-t30LHMjwz|#KoHjqfM^LVl-vcgZ{4yC|ZtRaAHco2_mUupC7lh+nE zK&z8>|AeLce|(|$(xE{lbVX@766%QJd5~+?*Sl*_@-8ft-`9+APkxBklBWIN9MIm;92A>bYJxVjyS(Xjczg3n!p>3FLBmU@Bw~TC=@jt%!Rp_aMJSvgMvvbq*0LO^fHChMDnf>^=9dDzz7j`<_4_ zw!Dv5<@%A4dqEspX_iXOg^SU<#$)p!=9zXJ&q9M*f1a+=LD$#+es^unoxkEyjL*XA zIncBFhxRFWgk(7pm&<)gR#&hlt$L-Mfg~ ziY)T=MGjttuLkle1jbGQucf<07GB%&bigadNO>K3^z%P|dFlkl*3C}OIXD-N$3E*p zMdQhN2Ve1UICW?f95;_m!kquU0G^NBfvGimCB~LNQt+Jl_+ASKT0h#01{RMU4%}Pm z3*k&$wKQSO?!w1O5)=AD$+UL(EAQ!Zy2CDk50p<+Q$f-H=6r5793E(?ojT)G zB!wUE$r#jMMZAZ;bcnwI+onXAPPRF}bSrop=?78T^d~NFyTjP`8GO#*VU3-$G_KH6 z@KqmcyUXxh*BN`ILH+H?yIwN(Ck7iw^`!eGgG~l+H>fq^-KGQGZw&9B(pUf3u8n-j bV@o&kWe<*TV%fmJynm7cSiQr?faTFUL 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 - + CodeMaid CodeMaid is an open source Visual Studio extension to cleanup and simplify our C#, C++, F#, VB, PHP, PowerShell, R, JSON, XAML, XML, ASP, HTML, CSS, LESS, SCSS, JavaScript and TypeScript coding. http://www.codemaid.net/ diff --git a/README.md b/README.md index eb2f4e43..bd288d90 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -

codemaid.net
+
codemaid.net
For more details, please visit: http://www.codemaid.net
-

Currently supports VS2012, VS2013, VS2015 and VS2017.

+

Currently supports VS2012, VS2013, VS2015, VS2017 and VS2019.

For Visual Studio 2010, the last supported version is v0.8.1.

For Visual Studio 2005/2008, the last supported version is v0.4.3.

Links

diff --git a/appveyor.yml b/appveyor.yml index f532cfb6..67fd390e 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 10.5.{build} +version: 10.6.{build} image: Visual Studio 2017 install: