Skip to content

Commit 7e0e6c7

Browse files
committed
fix(svelte/indent): ensure proper snippet indent
1 parent c840776 commit 7e0e6c7

File tree

4 files changed

+96
-11
lines changed

4 files changed

+96
-11
lines changed

packages/eslint-plugin-svelte/src/rules/indent-helpers/svelte.ts

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -457,25 +457,23 @@ export function defineVisitor(context: IndentContext): NodeListener {
457457
offsets.setOffsetToken(token, 1, openToken);
458458
}
459459

460-
const [openCloseTagToken, endAwaitToken, closeCloseTagToken] = sourceCode.getLastTokens(
461-
node,
462-
{
463-
count: 3,
464-
includeComments: false
465-
}
466-
);
460+
const [openCloseTagToken, endKeyToken, closeCloseTagToken] = sourceCode.getLastTokens(node, {
461+
count: 3,
462+
includeComments: false
463+
});
467464
offsets.setOffsetToken(openCloseTagToken, 0, openToken);
468-
offsets.setOffsetToken(endAwaitToken, 1, openCloseTagToken);
465+
offsets.setOffsetToken(endKeyToken, 1, openCloseTagToken);
469466
offsets.setOffsetToken(closeCloseTagToken, 0, openCloseTagToken);
470467
},
471468
SvelteSnippetBlock(node: AST.SvelteSnippetBlock) {
469+
console.log(node);
472470
const [openToken, snippetToken] = sourceCode.getFirstTokens(node, {
473471
count: 2,
474472
includeComments: false
475473
});
476474
offsets.setOffsetToken(snippetToken, 1, openToken);
477-
const id = getFirstAndLastTokens(sourceCode, node.id);
478-
offsets.setOffsetToken(id.firstToken, 1, snippetToken);
475+
const snippetName = sourceCode.getTokenAfter(snippetToken)!;
476+
offsets.setOffsetToken(snippetName, 1, snippetToken);
479477

480478
const leftParenToken = sourceCode.getTokenBefore(
481479
node.params[0] || sourceCode.getLastToken(node),
@@ -492,8 +490,27 @@ export function defineVisitor(context: IndentContext): NodeListener {
492490
includeComments: false
493491
}
494492
)!;
495-
offsets.setOffsetToken(leftParenToken, 1, id.firstToken);
493+
offsets.setOffsetToken(leftParenToken, 1, snippetName);
496494
offsets.setOffsetElementList(node.params, leftParenToken, rightParenToken, 1);
495+
496+
const closeOpenTagToken = sourceCode.getTokenAfter(rightParenToken)!;
497+
offsets.setOffsetToken(closeOpenTagToken, 0, openToken);
498+
499+
for (const child of node.children) {
500+
const token = sourceCode.getFirstToken(child, {
501+
includeComments: false,
502+
filter: isNotWhitespace
503+
});
504+
offsets.setOffsetToken(token, 1, openToken);
505+
}
506+
507+
const [openCloseTagToken, endSnippetToken, closeCloseTagToken] = sourceCode.getLastTokens(
508+
node,
509+
{ count: 3, includeComments: false }
510+
);
511+
offsets.setOffsetToken(openCloseTagToken, 0, openToken);
512+
offsets.setOffsetToken(endSnippetToken, 1, openCloseTagToken);
513+
offsets.setOffsetToken(closeCloseTagToken, 0, openCloseTagToken);
497514
},
498515
// ----------------------------------------------------------------------
499516
// COMMENTS
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
- message: Expected indentation of 2 spaces but found 0 spaces.
2+
line: 3
3+
column: 1
4+
suggestions: null
5+
- message: Expected indentation of 4 spaces but found 0 spaces.
6+
line: 4
7+
column: 1
8+
suggestions: null
9+
- message: Expected indentation of 2 spaces but found 0 spaces.
10+
line: 5
11+
column: 1
12+
suggestions: null
13+
- message: Expected indentation of 2 spaces but found 0 spaces.
14+
line: 7
15+
column: 1
16+
suggestions: null
17+
- message: Expected indentation of 4 spaces but found 2 spaces.
18+
line: 8
19+
column: 1
20+
suggestions: null
21+
- message: Expected indentation of 2 spaces but found 0 spaces.
22+
line: 9
23+
column: 1
24+
suggestions: null
25+
- message: Expected indentation of 4 spaces but found 0 spaces.
26+
line: 10
27+
column: 1
28+
suggestions: null
29+
- message: Expected indentation of 2 spaces but found 0 spaces.
30+
line: 11
31+
column: 1
32+
suggestions: null
33+
- message: Expected indentation of 4 spaces but found 0 spaces.
34+
line: 12
35+
column: 1
36+
suggestions: null
37+
- message: Expected indentation of 2 spaces but found 0 spaces.
38+
line: 13
39+
column: 1
40+
suggestions: null
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!-- prettier-ignore -->
2+
<div>
3+
{#snippet example()}
4+
<div></div>
5+
{/snippet}
6+
7+
{
8+
#snippet example_2()
9+
}
10+
<div></div>
11+
{
12+
/snippet
13+
}
14+
</div>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!-- prettier-ignore -->
2+
<div>
3+
{#snippet example()}
4+
<div></div>
5+
{/snippet}
6+
7+
{
8+
#snippet example_2()
9+
}
10+
<div></div>
11+
{
12+
/snippet
13+
}
14+
</div>

0 commit comments

Comments
 (0)