Releases · belav/csharpier (original) (raw)
1.3.0
Breaking Changes
Change xml formatting to return error when it runs into syntax error so it is consistent with c# #1854
Previously CSharpier treated an invalid xml file as a warning instead of an error. This was inconsistent with how it treated c# files.
Invalid c# or xml files are not treated as errors.
The --compilation-errors-as-warnings argument has been renamed to --syntax-errors-as-warnings and can be used to return warnings instead of errors when encountering invalid files.
What's Changed
Feature: Configurable whitespace handling for xml #1790
CSharpier now supports two types of xml whitespace formatting strict or ignore.
By default all xml except xaml or axaml is treated as strict whitespace. See details
Feature: Move closing bracket for xml elements to the same line. #1598
With strict xml whitespace handling, csharpier now keeps the closing bracket for an element on the same line instead of breaking it to a new line.
<ElementWithAttribute Attribute="AttributeValue__________________"
TextValue
<ElementWithAttribute Attribute="AttributeValue__________________"
TextValue</ElementWithAttribute
Feature: Support for csharpier-ignore with XML formatter #1788
CSharpier now supports csharpier-ignore in xml files. See details
Feature: Add MSBuild transitive and multi-target support #1833
CSharpier.MSBuild can now work as a transitive dependency.
Feature: allow checking formatting with cache #1830
The csharpier check command now supports a --use-cache option.
Feature: remove dependency on Microsoft.AspNetCore.App #1508
Previously CSharpier required that Microsoft.AspNetCore.App be installed. CSharpier has been modified to use an HttpListener when it is run using server to remove the need for this dependency.
Fix: csharpier-ignore comment removes linespaces before block #1867
CSharpier was removing blank lines before csharpier-ignore comments in some cases
// input and expected output var x = 1;
// csharpier-ignore var y=1;
/// 1.2.6 var x = 1; // csharpier-ignore var y=1;
Fix: Inconsistent indentation for raw string literals. #1857
CSharpier was not consistently indenting raw string literals when they were inside of simple lambdas.
// input & expected output CallMethod(() => { var someString = """ SomeRawString """; });
// 1.2.6 CallMethod(() => { var someString = """ SomeRawString """; });
Fix: case of modifier reorder with leading trivia #1855
CSharpier was incorrectly reporting a syntax validation failure when it was reordering modifiers. This is now resolved.
// when this code is modified and the modifiers are reorderd it should not report a syntax validation failure. public class ClassName { // SomeComment override public int GetHashCode() => 0; }
Fix: Xml breaks final element when it contains mixed content #1841
CSharpier was breaking the end element in some cases when it should not be.
<HtmlTypeElement
Some long text to make things break <a href="http://url.com" url.com more text.
<HtmlTypeElement
Some long text to make things break <a href="http://url.com" url.com</a more text.</HtmlTypeElement
Fix: Unable to ignore csharpier formatting within case statement group #1824
CSharpier now supports csharpier-ignore comments within case statements.
switch (1) { case 2: // csharpier-ignore var unformatted = true; break; }
Fix: Incorrect formatting for simple lambda expression with comment #1147
CSharpier was indenting code for a simple lambda with a leading comment.
// input & expected output this.Where___________________( // Comment x => { return x; } );
// 1.2.6 this.Where___________________( // Comment x => { return x; });
Fix: Ignores files it shouldn't ignore when negative patterns are used #1803
Fixed a couple more edgecases with CSharpier not handling negative ignore patterns the same way that git does
Fix: Tolerate missing directories when formatting from stdin #1848
CSharpier was throwing a DirectoryNotFoundException if it were passed a path via --stdin-path with a directory that did not exist.
Fix: Stop .gitignore walk at git worktree boundary #1860
When CSharpier walks up the target directory looking for .gitignore files it stops when encountering a .git directory. However in a git worktree there is no directory, .git is a file. This change ensures CSharpier stops when encountering a .git file so that CSharpier behaves the same in a worktree.
perf: cache IgnoreWithBasePath #1758
perf: fast comparison using FullSpan and source code #1737
perf: optimise SyntaxNodeComparer #1730
perf: set capacity of List in MembersForcedLine #1709
perf: use Stack.Peek to reduce Pop and Push churn #1708
perf: add Doc.Null check to Argument avoids Concat creation #1706
perf: use overload for Any( SyntaxTriviaList to prevent allocations #1703
Full Changelog: 1.2.6...1.3.0