Skip to content
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

Indenting doesn't work correctly #2214

Closed
PrzemyslawKlys opened this issue Sep 28, 2019 · 14 comments
Closed

Indenting doesn't work correctly #2214

PrzemyslawKlys opened this issue Sep 28, 2019 · 14 comments
Labels
Resolution-Duplicate Will close automatically.

Comments

@PrzemyslawKlys
Copy link
Contributor

Issue Description

I am experiencing a problem with...indenting.

image

Old one:

image

Formatting doesn't change indenting for either now, Not sure how that happens but it keeps "indenting" to 2 spaces if it's 2 spaces and 4 spaces if it's 4 spaces in the current file. The expectation would be to set indenting to current settings choice rather than keeping whatever is defined in a file.

I have a feeling it worked before, but maybe I was just assuming things.

Attached Logs

Follow the instructions in the README about
capturing and sending logs.

Environment Information

Visual Studio Code

Name Version
Operating System Windows_NT x64 10.0.18362
VSCode 1.38.1
PowerShell Extension Version 2019.9.0

PowerShell Information

Name Value
PSVersion 5.1.18362.145
PSEdition Desktop
PSCompatibleVersions 1.0 2.0 3.0 4.0 5.0 5.1.18362.145
BuildVersion 10.0.18362.145
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

Visual Studio Code Extensions

Visual Studio Code Extensions(Click to Expand)
Extension Author Version
auto-rename-tag formulahendry 0.1.0
beautify HookyQR 1.5.0
bracket-pair-colorizer-2 CoenraadS 0.0.28
code-settings-sync Shan 3.4.3
gitlens eamodio 10.0.1
html-css-class-completion Zignd 1.19.0
live-html-previewer hdg 0.3.0
markdown-all-in-one yzhang 2.4.2
markdown-preview-enhanced shd101wyy 0.4.3
markdown-shortcuts mdickin 0.11.0
material-icon-theme PKief 3.9.0
powershell ms-vscode 2019.9.0
project-manager alefragnani 10.8.0
theme-monokai-pro-vscode monokai 1.1.14
vscode-html-css ecmel 0.2.3
vscode-wakatime WakaTime 2.2.0
xml DotJoshJohnson 2.5.0
@ghost ghost added the Needs: Triage Maintainer attention needed! label Sep 28, 2019
@TylerLeonhardt
Copy link
Member

Formatting issues are typically caused by PSScriptAnalyzer since we depend on that.

@bergmeister is a maintainer of that project and has been working on this particular formatting rule I believe. What do you think?

@PrzemyslawKlys can you share any formatting settings that you have?

@anttiah
Copy link

anttiah commented Sep 29, 2019

Definitely something changed in vscode-powershell v2019.9.0. Now the formatting gets messed up if there is structure like <pipeline> <multi-line scriptblock> <pipeline>.

I'm aware of past PSScriptAnalyzer indentation issuse (like PowerShell/PSScriptAnalyzer#1187 ) but since that one got fixed I've had no issues with indentation as long as I keep the recommended setting:
"powershell.codeFormatting.pipelineIndentationStyle": "NoIndentation"

I've also tried various PSScriptAnalyzer rule and vscode-powershell setting combinations. Especially both PSUseConsistentWhitespace and PSUseConsistentIndentation together with all powershell.codeFormatting.presets and powershell.codeFormatting.pipelineIndentationStyles but they had no effect on the issue.

Steps to reproduce

function Test-CodeFormatting {
    $iShouldBeIndented = Get-Stuff | ForEach-Object {
        Get-MoreStuff
    } | Filter-Stuff
    $iShouldBeIndented
}

Expected behavior

This is what I get with vscode-powershell v2019.5.0

function Test-CodeFormatting {
    $iShouldBeIndented = Get-Stuff | ForEach-Object {
        Get-MoreStuff
    } | Filter-Stuff
    $iShouldBeIndented
}

Actual, incorrect behavior

function Test-CodeFormatting {
    $iShouldBeIndented = Get-Stuff | ForEach-Object {
        Get-MoreStuff
    } | Filter-Stuff
$iShouldBeIndented
}

Environment data

VS Code

Version: 1.38.1 (system setup)
Commit: b37e54c98e1a74ba89e03073e5a3761284e3ffb0
Date: 2019-09-11T13:35:15.005Z
Electron: 4.2.10
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Windows_NT x64 10.0.17763

PowerShell

Name                           Value
----                           -----
PSVersion                      5.1.17763.592
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.592
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

PSScriptAnalyzer

Name              : PSScriptAnalyzer
Path              : C:\Program Files\WindowsPowerShell\Modules\PSScriptAnalyzer\1.18.3\PSScriptAnalyzer.psm1
Description       : PSScriptAnalyzer provides script analysis and checks for potential code defects in the scripts by applying a group of built-in or customized rules on the scripts being analyzed.
ModuleType        : Script
Version           : 1.18.3
NestedModules     : {Microsoft.Windows.PowerShell.ScriptAnalyzer}
ExportedFunctions :
ExportedCmdlets   : {Get-ScriptAnalyzerRule, Invoke-Formatter, Invoke-ScriptAnalyzer}
ExportedVariables :
ExportedAliases   :

@PrzemyslawKlys
Copy link
Contributor Author

{
    "workbench.colorTheme": "Monokai",
    "workbench.iconTheme": "material-icon-theme",
    "powershell.codeFormatting.preset": "OTBS",
    "editor.fontSize": 12,
    "search.showLineNumbers": true,
    "terminal.integrated.scrollback": 30000,
    "debug.inlineValues": true,
    "editor.minimap.enabled": false,
    "workbench.useExperimentalGridLayout": true,
    "breadcrumbs.enabled": true,
    "workbench.editor.highlightModifiedTabs": true,
    "window.title": "${folderName}${separator}${activeEditorShort}",
    "powershell.powerShellExePath": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "debug.openDebug": "neverOpen",
    "typescript.implementationsCodeLens.enabled": true,
    "powershell.developer.editorServicesLogLevel": "Diagnostic",
    "debug.toolBarLocation": "docked",
    "editor.snippetSuggestions": "bottom",
    "files.autoSave": "off",
    "files.autoSaveDelay": 5000,
    "explorer.confirmDragAndDrop": false,
    "files.trimTrailingWhitespace": true,
    "editor.renderWhitespace": "all",
    "gitlens.blame.ignoreWhitespace": true,
    "powershell.codeFormatting.useCorrectCasing": true,
    "[powershell]": {
        "editor.defaultFormatter": "ms-vscode.powershell",
        /* "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?" */
    },
    "[markdown]": {
        "editor.defaultFormatter": "yzhang.markdown-all-in-one"
    },
    "files.encoding": "utf8bom",
    "editor.find.autoFindInSelection": true,
    "extensions.autoUpdate": true,
    "window.zoomLevel": 0,
    "editor.suggest.localityBonus": true,
    "editor.suggest.maxVisibleSuggestions": 15,
    "search.maintainFileSearchCache": true,
    "extensions.showRecommendationsOnlyOnDemand": true,
    "terminal.integrated.experimentalRefreshOnResume": true,
    "html.format.indentInnerHtml": true,
    "[html]": {
        "editor.defaultFormatter": "HookyQR.beautify"
    },
    "[json]": {
        "editor.defaultFormatter": "vscode.json-language-features"
    },
    "[jsonc]": {
        "editor.defaultFormatter": "vscode.json-language-features"
    },
    "[javascript]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
    },
    "cSpell.enabledLanguageIds": [
        "asciidoc",
        "c",
        "cpp",
        "csharp",
        "css",
        "git-commit",
        "go",
        "handlebars",
        "html",
        "jade",
        "java",
        "javascript",
        "javascriptreact",
        "json",
        "jsonc",
        "latex",
        "less",
        "markdown",
        "php",
        "plaintext",
        "pug",
        "python",
        "restructuredtext",
        "rust",
        "scala",
        "scss",
        "text",
        "typescript",
        "typescriptreact",
        "yaml",
        "yml"
    ],
    "cSpell.userWords": [
        "Kłys",
        "Przemysław",
        "dashimo",
        "documentimo"
    ],
    "sqltools.telemetry": false,
    "mssql.copyIncludeHeaders": true,
    "peacock.favoriteColors": [
        {
            "name": "Angular Red",
            "value": "#b52e31"
        },
        {
            "name": "Auth0 Orange",
            "value": "#eb5424"
        },
        {
            "name": "Azure Blue",
            "value": "#007fff"
        },
        {
            "name": "C# Purple",
            "value": "#68217A"
        },
        {
            "name": "Gatsby Purple",
            "value": "#639"
        },
        {
            "name": "Go Cyan",
            "value": "#5dc9e2"
        },
        {
            "name": "Java Blue-Gray",
            "value": "#557c9b"
        },
        {
            "name": "JavaScript Yellow",
            "value": "#f9e64f"
        },
        {
            "name": "Mandalorian Blue",
            "value": "#1857a4"
        },
        {
            "name": "Node Green",
            "value": "#215732"
        },
        {
            "name": "React Blue",
            "value": "#00b3e6"
        },
        {
            "name": "Something Different",
            "value": "#832561"
        },
        {
            "name": "Vue Green",
            "value": "#42b883"
        }
    ],
    "editor.smoothScrolling": true,
    "editor.tabCompletion": "on",
    "html.format.wrapLineLength": 0,
    "powershell.codeFormatting.autoCorrectAliases": true
}

@bergmeister
Copy link
Contributor

@anttiah with the powershell.codeFormatting.pipelineIndentationStyle setting set to its default (NoIndentation), I cannot reproduce your issue but otherwise I can, thanks.
@PrzemyslawKlys I'm not aware of a code change in this area, so I don't think behaviour has changed, if you think it did, please invest some time and report the versions of the vs code extension and/or PSSA where behaviour changed. Generally I am aware that the formatter quite often does not always apply fixes when code is in some shape or form (it has always been like that) and it sometimes needs a 'nudge'

@anttiah
Copy link

anttiah commented Oct 1, 2019

Tried once more. This time I deleted directories ~\.vscode and ~\AppData\Roaming\Code and installed just the latest vscode-powershell (settings.json is empty) but the issue didn't go away. Revert back to v2019.5.0 & reload and the issue goes away. Happens every time.

@TylerLeonhardt
Copy link
Member

hmm @bergmeister... Rob and I were able to repro this behavior in the stable extension but not in the preview extension.

@anttiah if you move over to the PowerShell Preview extension in the VS Code marketplace, you wont see this issue.

@TylerLeonhardt
Copy link
Member

I'm wondering if we missed something to backport?

@bergmeister
Copy link
Contributor

There is not much wiring up (just the setting name). Does the non preview extension ship with PSSA 1.18.3 as well (changes were made in pssa to allow this)?
Can you repro also when using a locally built version of the non-preview extension?

@TylerLeonhardt
Copy link
Member

@bergmeister 1.18.3 does ship in the PowerShell (non-preview) extension and I am able to repro with a locally built legacy/1.x build.

@bergmeister
Copy link
Contributor

Hmm, you're right. I can repro with the legacy branch. To me it looks like, the setting does not get properly applied and then PSSA's default setting (which is not NoIndentation) gets used. I did a quick comparison of this repo and PSES and could not spot a difference between the master and legacy branch. will do a bit more debugging later this week

@bergmeister
Copy link
Contributor

@bergmeister
Copy link
Contributor

bergmeister commented Oct 2, 2019

Let's play the blame game:
Here is my PR that back-ported the original PR, this one looks OK and has this line:
https://github.com/PowerShell/PowerShellEditorServices/pull/885/files
However, Rob's backport PR of a different PR of mine caused the line to disappear:
PowerShell/PowerShellEditorServices#1024
I don't know why but somehow that cherry-pick did not work out how it should've done, let's blame git. In theory I could've spotted it in the backport PR review but spotting that missing line is super hard, I only noticed it when I had a look at it in the Editor and saw that there were 0 references to the propery

PR open now, thanks @anttiah for the detailed repro and @TylerLeonhardt for spotting the difference between the preview and RTM extension
I think we should go back to square 1 and understand git's merge behaviour better, I saw this blog post a few weeks ago describing those 'git deleted my code away' scenarios, I'll try to get some understanding of: https://devblogs.microsoft.com/devops/understanding-delta-file-changes-and-merge-conflicts-in-git-pull-requests/

@TylerLeonhardt
Copy link
Member

Thanks for finding that and submitting a fix @bergmeister!

@rjmholt
Copy link
Contributor

rjmholt commented Oct 2, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resolution-Duplicate Will close automatically.
Projects
None yet
Development

No branches or pull requests

6 participants