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