diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index f1388eb8995..adaaed40d79 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -403,6 +403,20 @@ namespace ts.formatting { indentation = parentDynamicIndentation.getIndentation(); } } + else if (node.kind === SyntaxKind.NamedExports || node.kind === SyntaxKind.ImportClause) { + let blockParent = node.kind === SyntaxKind.ImportClause ? + (node).namedBindings : node; + + let children = (blockParent).getChildren(sourceFile); + // Detect named export/import pseudo-block + if (children[0] && children[0].kind === SyntaxKind.OpenBraceToken && + children[2] && children[2].kind === SyntaxKind.CloseBraceToken) { + indentation = parentDynamicIndentation.getIndentation(); + } + else { + indentation = parentDynamicIndentation.getIndentation() + parentDynamicIndentation.getDelta(); + } + } else { if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { indentation = parentDynamicIndentation.getIndentation(); diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 3049e66fd00..57d527d943f 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -440,12 +440,11 @@ namespace ts.formatting { case SyntaxKind.ParenthesizedType: case SyntaxKind.TaggedTemplateExpression: case SyntaxKind.AwaitExpression: - case SyntaxKind.NamedExports: - case SyntaxKind.ExportDeclaration: - case SyntaxKind.NamedImports: case SyntaxKind.ImportDeclaration: + case SyntaxKind.NamedExports: + case SyntaxKind.NamedImports: case SyntaxKind.ExportSpecifier: - //case SyntaxKind.ImportSpecifier: + case SyntaxKind.ImportSpecifier: return true; } return false; @@ -470,6 +469,8 @@ namespace ts.formatting { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: return child !== SyntaxKind.Block; + case SyntaxKind.ExportDeclaration: + return child !== SyntaxKind.NamedExports; default: return false; }