Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ public static OmniSharpSyntaxFormattingOptionsWrapper Create(
(spaceBeforeComma ? SpacePlacement.BeforeComma : 0) |
(spaceAfterDot ? SpacePlacement.AfterDot : 0) |
(spaceBeforeDot ? SpacePlacement.BeforeDot : 0),
SpacingAroundBinaryOperator = (BinaryOperatorSpacingOptions)spacingAroundBinaryOperator,
SpacingAroundBinaryOperator = (BinaryOperatorSpacingOptionsInternal)spacingAroundBinaryOperator,
NewLines =
(newLineForMembersInObjectInit ? NewLinePlacement.BeforeMembersInObjectInitializers : 0) |
(newLineForMembersInAnonymousTypes ? NewLinePlacement.BeforeMembersInAnonymousTypes : 0) |
Expand All @@ -125,7 +125,7 @@ public static OmniSharpSyntaxFormattingOptionsWrapper Create(
(newLinesForBracesInLambdaExpressionBody ? NewLinePlacement.BeforeOpenBraceInLambdaExpressionBody : 0) |
(newLinesForBracesInControlBlocks ? NewLinePlacement.BeforeOpenBraceInControlBlocks : 0) |
(newLineForClausesInQuery ? NewLinePlacement.BetweenQueryExpressionClauses : 0),
LabelPositioning = (LabelPositionOptions)labelPositioning,
LabelPositioning = (LabelPositionOptionsInternal)labelPositioning,
Indentation =
(indentBraces ? IndentationPlacement.Braces : 0) |
(indentBlock ? IndentationPlacement.BlockContents : 0) |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public CSharpSyntaxFormattingOptions ToCSharpSyntaxFormattingOptions()
=> new()
{
Spacing = (SpacePlacement)Spacing,
SpacingAroundBinaryOperator = (BinaryOperatorSpacingOptions)SpacingAroundBinaryOperator,
SpacingAroundBinaryOperator = (BinaryOperatorSpacingOptionsInternal)SpacingAroundBinaryOperator,
NewLines = (NewLinePlacement)NewLines,
LabelPositioning = (LabelPositionOptions)LabelPositioning,
LabelPositioning = (LabelPositionOptionsInternal)LabelPositioning,
Indentation = (IndentationPlacement)Indentation,
WrappingKeepStatementsOnSingleLine = WrappingKeepStatementsOnSingleLine,
WrappingPreserveSingleLine = WrappingPreserveSingleLine,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,14 @@ public SpacePlacementInternalStorageMapping(IOption2 internalOption, SpacePlacem
public static Option<bool> SpaceBeforeSemicolonsInForStatement { get; } = CSharpFormattingOptions2.SpaceBeforeSemicolonsInForStatement.ToPublicOption();

/// <inheritdoc cref="CSharpFormattingOptions2.SpacingAroundBinaryOperator"/>
public static Option<BinaryOperatorSpacingOptions> SpacingAroundBinaryOperator { get; } = CSharpFormattingOptions2.SpacingAroundBinaryOperator.ToPublicOption();
public static Option<BinaryOperatorSpacingOptions> SpacingAroundBinaryOperator
{
get
{
var publicInternalOption = CSharpFormattingOptions2.SpacingAroundBinaryOperator.ToPublicOption();
return new(publicInternalOption.Feature, publicInternalOption.Name, (BinaryOperatorSpacingOptions)publicInternalOption.DefaultValue);
}
}

/// <inheritdoc cref="CSharpFormattingOptions2.IndentBraces"/>
public static Option<bool> IndentBraces { get; } = CSharpFormattingOptions2.IndentBraces.ToPublicOption();
Expand All @@ -151,7 +158,14 @@ public SpacePlacementInternalStorageMapping(IOption2 internalOption, SpacePlacem
public static Option<bool> IndentSwitchCaseSectionWhenBlock { get; } = CSharpFormattingOptions2.IndentSwitchCaseSectionWhenBlock.ToPublicOption();

/// <inheritdoc cref="CSharpFormattingOptions2.LabelPositioning"/>
public static Option<LabelPositionOptions> LabelPositioning { get; } = CSharpFormattingOptions2.LabelPositioning.ToPublicOption();
public static Option<LabelPositionOptions> LabelPositioning
{
get
{
var publicInternalOption = CSharpFormattingOptions2.LabelPositioning.ToPublicOption();
return new(publicInternalOption.Feature, publicInternalOption.Name, (LabelPositionOptions)publicInternalOption.DefaultValue);
}
}

/// <inheritdoc cref="CSharpFormattingOptions2.WrappingPreserveSingleLine"/>
public static Option<bool> WrappingPreserveSingleLine { get; } = CSharpFormattingOptions2.WrappingPreserveSingleLine.ToPublicOption();
Expand Down Expand Up @@ -187,3 +201,27 @@ public SpacePlacementInternalStorageMapping(IOption2 internalOption, SpacePlacem
/// <inheritdoc cref="CSharpFormattingOptions2.NewLineForClausesInQuery"/>
public static Option<bool> NewLineForClausesInQuery { get; } = CSharpFormattingOptions2.NewLineForClausesInQuery.ToPublicOption();
}

public enum LabelPositionOptions
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thse are not new apis. they just moved from the shared location her.e we don't want it in teh shared location as that adds public types to multiple assemblies, which is bad (esp. for code that then references both assemblies.

{
/// Placed in the Zeroth column of the text editor
LeftMost = LabelPositionOptionsInternal.LeftMost,

/// Placed at one less indent to the current context
OneLess = LabelPositionOptionsInternal.OneLess,

/// Placed at the same indent as the current context
NoIndent = LabelPositionOptionsInternal.NoIndent,
}

public enum BinaryOperatorSpacingOptions
{
/// Single Spacing
Single = BinaryOperatorSpacingOptionsInternal.Single,

/// Ignore Formatting
Ignore = BinaryOperatorSpacingOptionsInternal.Ignore,

/// Remove Spacing
Remove = BinaryOperatorSpacingOptionsInternal.Remove,
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,16 @@ internal static string ToEditorConfigValue(NewLineBeforeOpenBracePlacement value
_ => ToEditorConfigFlagList((int)value, static v => s_newLineOptionsEditorConfigMap[(NewLineBeforeOpenBracePlacement)v])
};

internal static BinaryOperatorSpacingOptions ParseEditorConfigSpacingAroundBinaryOperator(string binaryOperatorSpacingValue)
=> s_binaryOperatorSpacingOptionsEditorConfigMap.TryGetValue(binaryOperatorSpacingValue.Trim(), out var value) ? value : BinaryOperatorSpacingOptions.Single;
internal static BinaryOperatorSpacingOptionsInternal ParseEditorConfigSpacingAroundBinaryOperator(string binaryOperatorSpacingValue)
=> s_binaryOperatorSpacingOptionsEditorConfigMap.TryGetValue(binaryOperatorSpacingValue.Trim(), out var value) ? value : BinaryOperatorSpacingOptionsInternal.Single;

private static string GetSpacingAroundBinaryOperatorEditorConfigString(BinaryOperatorSpacingOptions value)
private static string GetSpacingAroundBinaryOperatorEditorConfigString(BinaryOperatorSpacingOptionsInternal value)
=> s_binaryOperatorSpacingOptionsEditorConfigMap.TryGetKey(value, out var key) ? key : "";

internal static LabelPositionOptions ParseEditorConfigLabelPositioning(string labelIndentationValue)
=> s_labelPositionOptionsEditorConfigMap.TryGetValue(labelIndentationValue.Trim(), out var value) ? value : LabelPositionOptions.NoIndent;
internal static LabelPositionOptionsInternal ParseEditorConfigLabelPositioning(string labelIndentationValue)
=> s_labelPositionOptionsEditorConfigMap.TryGetValue(labelIndentationValue.Trim(), out var value) ? value : LabelPositionOptionsInternal.NoIndent;

private static string GetLabelPositionOptionEditorConfigString(LabelPositionOptions value)
private static string GetLabelPositionOptionEditorConfigString(LabelPositionOptionsInternal value)
=> s_labelPositionOptionsEditorConfigMap.TryGetKey(value, out var key) ? key : "";

internal static bool DetermineIfIgnoreSpacesAroundVariableDeclarationIsSet(string value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,19 @@ internal static partial class CSharpFormattingOptions2
KeyValuePairUtil.Create("type_casts", SpacePlacementWithinParentheses.TypeCasts),
KeyValuePairUtil.Create("control_flow_statements", SpacePlacementWithinParentheses.ControlFlowStatements),
]);
private static readonly BidirectionalMap<string, BinaryOperatorSpacingOptions> s_binaryOperatorSpacingOptionsEditorConfigMap =
private static readonly BidirectionalMap<string, BinaryOperatorSpacingOptionsInternal> s_binaryOperatorSpacingOptionsEditorConfigMap =
new(
[
KeyValuePairUtil.Create("ignore", BinaryOperatorSpacingOptions.Ignore),
KeyValuePairUtil.Create("none", BinaryOperatorSpacingOptions.Remove),
KeyValuePairUtil.Create("before_and_after", BinaryOperatorSpacingOptions.Single),
KeyValuePairUtil.Create("ignore", BinaryOperatorSpacingOptionsInternal.Ignore),
KeyValuePairUtil.Create("none", BinaryOperatorSpacingOptionsInternal.Remove),
KeyValuePairUtil.Create("before_and_after", BinaryOperatorSpacingOptionsInternal.Single),
]);
private static readonly BidirectionalMap<string, LabelPositionOptions> s_labelPositionOptionsEditorConfigMap =
private static readonly BidirectionalMap<string, LabelPositionOptionsInternal> s_labelPositionOptionsEditorConfigMap =
new(
[
KeyValuePairUtil.Create("flush_left", LabelPositionOptions.LeftMost),
KeyValuePairUtil.Create("no_change", LabelPositionOptions.NoIndent),
KeyValuePairUtil.Create("one_less_than_current", LabelPositionOptions.OneLess),
KeyValuePairUtil.Create("flush_left", LabelPositionOptionsInternal.LeftMost),
KeyValuePairUtil.Create("no_change", LabelPositionOptionsInternal.NoIndent),
KeyValuePairUtil.Create("one_less_than_current", LabelPositionOptionsInternal.OneLess),
]);
private static readonly BidirectionalMap<string, NewLineBeforeOpenBracePlacement> s_legacyNewLineOptionsEditorConfigMap =
new(
Expand Down Expand Up @@ -181,10 +181,10 @@ private static Option2<T> CreateOption<T>(OptionGroup group, string name, T defa
CSharpSyntaxFormattingOptions.SpacingDefault.HasFlag(SpacePlacement.BeforeSemicolonsInForStatement))
.WithPublicOption(PublicFeatureName, "SpaceBeforeSemicolonsInForStatement");

public static Option2<BinaryOperatorSpacingOptions> SpacingAroundBinaryOperator { get; } = CreateOption(
public static Option2<BinaryOperatorSpacingOptionsInternal> SpacingAroundBinaryOperator { get; } = CreateOption(
CSharpFormattingOptionGroups.Spacing, "csharp_space_around_binary_operators",
CSharpSyntaxFormattingOptions.Default.SpacingAroundBinaryOperator,
new EditorConfigValueSerializer<BinaryOperatorSpacingOptions>(
new EditorConfigValueSerializer<BinaryOperatorSpacingOptionsInternal>(
s => ParseEditorConfigSpacingAroundBinaryOperator(s),
GetSpacingAroundBinaryOperatorEditorConfigString))
.WithPublicOption(PublicFeatureName, "SpacingAroundBinaryOperator");
Expand Down Expand Up @@ -214,10 +214,10 @@ private static Option2<T> CreateOption<T>(OptionGroup group, string name, T defa
CSharpSyntaxFormattingOptions.IndentationDefault.HasFlag(IndentationPlacement.SwitchCaseContentsWhenBlock))
.WithPublicOption(PublicFeatureName, "IndentSwitchCaseSectionWhenBlock");

public static Option2<LabelPositionOptions> LabelPositioning { get; } = CreateOption(
public static Option2<LabelPositionOptionsInternal> LabelPositioning { get; } = CreateOption(
CSharpFormattingOptionGroups.Indentation, "csharp_indent_labels",
CSharpSyntaxFormattingOptions.Default.LabelPositioning,
new EditorConfigValueSerializer<LabelPositionOptions>(
new EditorConfigValueSerializer<LabelPositionOptionsInternal>(
s => ParseEditorConfigLabelPositioning(s),
GetLabelPositionOptionEditorConfigString))
.WithPublicOption(PublicFeatureName, "LabelPositioning");
Expand Down Expand Up @@ -290,11 +290,7 @@ private static Option2<T> CreateOption<T>(OptionGroup group, string name, T defa
internal static readonly ImmutableArray<IOption2> UndocumentedOptions = [CollectionExpressionWrappingLength];
}

#if CODE_STYLE
internal enum LabelPositionOptions
#else
public enum LabelPositionOptions
#endif
internal enum LabelPositionOptionsInternal
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are now internal and renamed (so no conflicts anymore). all shared code now uses the internal option.

{
/// Placed in the Zeroth column of the text editor
LeftMost = 0,
Expand All @@ -306,11 +302,7 @@ public enum LabelPositionOptions
NoIndent = 2
}

#if CODE_STYLE
internal enum BinaryOperatorSpacingOptions
#else
public enum BinaryOperatorSpacingOptions
#endif
internal enum BinaryOperatorSpacingOptionsInternal
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was causing no end of pain.

{
/// Single Spacing
Single = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ internal sealed record class CSharpSyntaxFormattingOptions : SyntaxFormattingOpt
public static readonly CSharpSyntaxFormattingOptions Default = new();

[DataMember] public SpacePlacement Spacing { get; init; } = SpacingDefault;
[DataMember] public BinaryOperatorSpacingOptions SpacingAroundBinaryOperator { get; init; } = BinaryOperatorSpacingOptions.Single;
[DataMember] public BinaryOperatorSpacingOptionsInternal SpacingAroundBinaryOperator { get; init; } = BinaryOperatorSpacingOptionsInternal.Single;
[DataMember] public NewLinePlacement NewLines { get; init; } = NewLinesDefault;
[DataMember] public LabelPositionOptions LabelPositioning { get; init; } = LabelPositionOptions.OneLess;
[DataMember] public LabelPositionOptionsInternal LabelPositioning { get; init; } = LabelPositionOptionsInternal.OneLess;
[DataMember] public IndentationPlacement Indentation { get; init; } = IndentationDefault;
[DataMember] public bool WrappingKeepStatementsOnSingleLine { get; init; } = true;
[DataMember] public bool WrappingPreserveSingleLine { get; init; } = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,11 @@ private void AddLabelIndentationOperation(List<IndentBlockOperation> list, Synta
// label statement
if (node is LabeledStatementSyntax labeledStatement)
{
if (_options.LabelPositioning == LabelPositionOptions.OneLess)
if (_options.LabelPositioning == LabelPositionOptionsInternal.OneLess)
{
AddUnindentBlockOperation(list, labeledStatement.Identifier, labeledStatement.ColonToken);
}
else if (_options.LabelPositioning == LabelPositionOptions.LeftMost)
else if (_options.LabelPositioning == LabelPositionOptionsInternal.LeftMost)
{
AddAbsoluteZeroIndentBlockOperation(list, labeledStatement.Identifier, labeledStatement.ColonToken);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,9 +333,9 @@ previousToken.Parent is AssignmentExpressionSyntax ||
{
switch (_options.SpacingAroundBinaryOperator)
{
case BinaryOperatorSpacingOptions.Single:
case BinaryOperatorSpacingOptionsInternal.Single:
return CreateAdjustSpacesOperation(1, AdjustSpacesOption.ForceSpacesIfOnSingleLine);
case BinaryOperatorSpacingOptions.Remove:
case BinaryOperatorSpacingOptionsInternal.Remove:
if (currentKind == SyntaxKind.IsKeyword ||
currentKind == SyntaxKind.AsKeyword ||
currentKind == SyntaxKind.AndKeyword ||
Expand All @@ -352,7 +352,7 @@ previousToken.Parent is AssignmentExpressionSyntax ||
{
return CreateAdjustSpacesOperation(0, AdjustSpacesOption.ForceSpacesIfOnSingleLine);
}
case BinaryOperatorSpacingOptions.Ignore:
case BinaryOperatorSpacingOptionsInternal.Ignore:
return CreateAdjustSpacesOperation(0, AdjustSpacesOption.PreserveSpaces);
default:
System.Diagnostics.Debug.Assert(false, "Invalid BinaryOperatorSpacingOptions");
Expand Down
Loading