Skip to content

Commit 80d0f50

Browse files
committed
Remove space after colon in JSX introduced by formatting
1 parent e936eb1 commit 80d0f50

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/services/formatting/rules.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export function getAllRules(): RuleSpec[] {
9090
rule("IgnoreAfterLineComment", SyntaxKind.SingleLineCommentTrivia, anyToken, anyContext, RuleAction.StopProcessingSpaceActions),
9191

9292
rule("NotSpaceBeforeColon", anyToken, SyntaxKind.ColonToken, [isNonJsxSameLineTokenContext, isNotBinaryOpContext, isNotTypeAnnotationContext], RuleAction.DeleteSpace),
93-
rule("SpaceAfterColon", SyntaxKind.ColonToken, anyToken, [isNonJsxSameLineTokenContext, isNotBinaryOpContext], RuleAction.InsertSpace),
93+
rule("SpaceAfterColon", SyntaxKind.ColonToken, anyToken, [isNonJsxSameLineTokenContext, isNotBinaryOpContext, isNextTokenParentNotJsxNamespacedName], RuleAction.InsertSpace),
9494
rule("NoSpaceBeforeQuestionMark", anyToken, SyntaxKind.QuestionToken, [isNonJsxSameLineTokenContext, isNotBinaryOpContext, isNotTypeAnnotationContext], RuleAction.DeleteSpace),
9595
// insert space after '?' only when it is used in conditional operator
9696
rule("SpaceAfterQuestionMarkInConditionalOperator", SyntaxKind.QuestionToken, anyToken, [isNonJsxSameLineTokenContext, isConditionalOperatorContext], RuleAction.InsertSpace),
@@ -179,6 +179,8 @@ export function getAllRules(): RuleSpec[] {
179179
rule("NoSpaceBeforeGreaterThanTokenInJsxOpeningElement", SyntaxKind.SlashToken, SyntaxKind.GreaterThanToken, [isJsxSelfClosingElementContext, isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
180180
rule("NoSpaceBeforeEqualInJsxAttribute", anyToken, SyntaxKind.EqualsToken, [isJsxAttributeContext, isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
181181
rule("NoSpaceAfterEqualInJsxAttribute", SyntaxKind.EqualsToken, anyToken, [isJsxAttributeContext, isNonJsxSameLineTokenContext], RuleAction.DeleteSpace),
182+
rule("NoSpaceBeforeJsxNamespaceColon", SyntaxKind.Identifier, SyntaxKind.ColonToken, [isNextTokenParentJsxNamespacedName], RuleAction.DeleteSpace),
183+
rule("NoSpaceAfterJsxNamespaceColon", SyntaxKind.ColonToken, SyntaxKind.Identifier, [isNextTokenParentJsxNamespacedName], RuleAction.DeleteSpace),
182184

183185
// TypeScript-specific rules
184186
// Use of module as a function call. e.g.: import m2 = module("m2");
@@ -756,6 +758,14 @@ function isJsxAttributeContext(context: FormattingContext): boolean {
756758
return context.contextNode.kind === SyntaxKind.JsxAttribute;
757759
}
758760

761+
function isNextTokenParentNotJsxNamespacedName(context: FormattingContext): boolean {
762+
return context.nextTokenParent.kind !== SyntaxKind.JsxNamespacedName;
763+
}
764+
765+
function isNextTokenParentJsxNamespacedName(context: FormattingContext): boolean {
766+
return context.nextTokenParent.kind === SyntaxKind.JsxNamespacedName;
767+
}
768+
759769
function isJsxSelfClosingElementContext(context: FormattingContext): boolean {
760770
return context.contextNode.kind === SyntaxKind.JsxSelfClosingElement;
761771
}

0 commit comments

Comments
 (0)