-
Notifications
You must be signed in to change notification settings - Fork 376
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Indentation breaks using anything other than pipelineIndentationStyle: None using a second pipe within parenthesis #1976
Comments
@C0smin what are your formatting settings? |
Hi @SydneyhSmith, default VSCode and powershell extension, this is the only non default setting in my editor (this is global user-data settings.json): {
"powershell.codeFormatting.pipelineIndentationStyle": "IncreaseIndentationForFirstPipeline"
} |
I can confirm I can repro with this specific setting. The thing with using different non-default settings for pipelineIndentationStyle is that your mileage might vary, it can achieve it in most cases but there are lots of edge cases that is still doesn't get, hence why it's not the default. Still great to raise it so maybe I can later look at seeing whether we can fix that. I've been doing that for a few years now but due to PowerShell's generic nature it's hard to write generic code covering all cases... |
I came here to report this issue as well; glad to see that someone already has 🙂 I too am using the VS Code setting I can confirm it also occurs when using the $results.ServersResults |
Select-Object -Property PSComputerName -ExpandProperty Matches |
Select-Object -Property PSComputerName,
Match, FilePath, LineNumber, Line, Pattern |
Sort-Object -Property Match, PSComputerName, FilePath, LineNumber
# This next line should not be indented since it is not part of the above pipeline.
[PSCustomObject[]] $connectionErrors = Convert-ServersConnectionErrorsIntoUserFriendlyMessage I find it's not consistent though. Sometimes the following statement does end up with the proper indentation, but other times it doesn't. I haven't been able to determine what exactly causes it to mess up sometimes. I see C0smin reported that it happens when using a pipe inside of parenthesis, and I can reproduce the issue using his code snippet. My snippet does not use a pipe inside of parenthesis though, and actually just pasting my code above in isolation does not reproduce the issue 😕. Ok, after a bit more testing I'm able to reproduce it with this code: Process {
$results.ServersResults |
Select-Object -Property PSComputerName -ExpandProperty Matches |
Select-Object -Property PSComputerName,
Match, FilePath, LineNumber, Line, Pattern |
Sort-Object -Property Match, PSComputerName, FilePath, LineNumber
[PSCustomObject[]] $connectionErrors = Convert-ServersConnectionErrorsIntoUserFriendlyMessage
}
Begin {
function SomeFunction {
[string[]] $serverNames = Get-ADComputer -Property DnsHostName |
Sort-Object
}
} That's the messed up indentation formatting. Down in the Process {
$results.ServersResults |
Select-Object -Property PSComputerName -ExpandProperty Matches |
Select-Object -Property PSComputerName,
Match, FilePath, LineNumber, Line, Pattern |
Sort-Object -Property Match, PSComputerName, FilePath, LineNumber
[PSCustomObject[]] $connectionErrors = Convert-ServersConnectionErrorsIntoUserFriendlyMessage
}
Begin {
function SomeFunction {
[string[]] $serverNames = Get-ADComputer -Property DnsHostName | Sort-Object
}
} If I remove the Process {
$results.ServersResults |
Select-Object -Property PSComputerName -ExpandProperty Matches |
Select-Object -Property PSComputerName,
Match, FilePath, LineNumber, Line, Pattern |
Sort-Object -Property Match, PSComputerName, FilePath, LineNumber
[PSCustomObject[]] $connectionErrors = Convert-ServersConnectionErrorsIntoUserFriendlyMessage
}
Begin {
function SomeFunction {
[string[]] $serverNames = Get-ADComputer -Property DnsHostName
}
} It's odd that code defined further down in the file can mess up the indentation of code above it in completely different scopes. Very weird, but it shows the problem isn't limited just to when you use a pipe inside of parenthesis. |
Prerequisites
Summary
The formatting of code breaks, not closing the indentation where it is logical. The conditions are highlighted in the
Steps to reproduce
section but it seems to be related to using both the pipe|
and parenthesis()
in multiple lines.PowerShell Version
Visual Studio Code Version
Extension Version
[email protected]
Steps to Reproduce
Write-Host
is now indented at the same level as the closed parenthesis:Visuals
No response
Logs
No response
The text was updated successfully, but these errors were encountered: