fish-shell/tests/indent.out
Fabian Homborg cb16d9e741 fish_indent: Allow escaped newlines only for certain things
Things like

```fish
\
echo foo
```

or

```fish
echo foo; \
echo bar
```

are a formatting blunder and should be handled.

This makes it so the escaped newline is removed, and the
semicolon/token_type_end handling will then put the statements on
different lines.

One case this doesn't handle brilliantly is an escaped newline after a
pipe:

```fish
echo foo | \
cat
```

is turned into

```fish
echo foo | cat
```

which here works great, but in long pipelines can cause issues.

Pipes at the end of the line cause fish to continue parsing on the
next line, so this can just be written as

```fish
echo foo |
cat
```

for now.
2020-03-15 21:01:00 +01:00

138 lines
1.1 KiB
Plaintext

Test1
begin
echo hi
end | cat | cat | begin
echo hi
end | begin
begin
echo hi
end
end arg
Test2
switch aloha
case alpha
echo sup
case beta gamma
echo hi
end
Test3
function hello_world
begin
echo hi
end | cat
echo sup
echo sup
echo hello
echo hello
end
Test4
echo alpha #comment1
#comment2
#comment3
for i in abc #comment1
#comment2
echo hi
end
switch foo #abc
# bar
case bar
echo baz\
qqq
case "*"
echo sup
end
Test5
if true
else if false
echo alpha
switch beta
case gamma
echo delta
end
end
Test6
begin
echo hi
else
echo bye
end
echo alpha "
Test7
if begin
false
end
echo hi
end
while begin
false
end
echo hi
end
Test redir formatting
echo <stdin >>appended yes 2>&1 no >stdout maybe 2>&4 | cat 2>| cat
Test normalization of keywords
i\
f true
echo yes
en\
d
while true
builtin yes
end
alpha | beta
gamma | \
# comment3
delta
if true
echo abc
end
if false # comment4
and true && false
echo abc
end
echo hi |
echo bye
a
echo
echo
a; and b
a
and b
a
and b
a
b