Skip to content

Allow user to force the default implicit formatting to use AutoSize - #28018

Open
Dongbo Wang (daxian-dbw) wants to merge 2 commits into
PowerShell:masterfrom
daxian-dbw:auto-size-format
Open

Dongbo Wang (daxian-dbw) wants to merge 2 commits into
PowerShell:masterfrom
daxian-dbw:auto-size-format

Conversation

@daxian-dbw

Copy link
Copy Markdown
Member

PR Summary

Allow user to force the default implicit formatting to use AutoSize. When $PSStyle.AutoSizeDefaultFormatting = $true, the default implicit formatting applied by PowerShell (via Out-Default) will enforce AutoSize when the chosen formatting view is table or wide, similar to running Format-Table -AutoSize and Format-Wide -AutoSize explicitly.

This allows PowerShell to generate less verbose output when used by an agent. It also makes PowerShell works better with small-window terminal.

PR Checklist

Copilot AI lite review requested due to automatic review settings September 16, 2026 01:06
@daxian-dbw
Dongbo Wang (daxian-dbw) requested a review from a team as a code owner September 16, 2026 01:06
@daxian-dbw Dongbo Wang (daxian-dbw) added the CL-General Indicates that a PR should be marked as a general cmdlet change in the Change Log label Sep 16, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Critical formatting defects and missing regression coverage must be addressed before approval.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds $PSStyle.AutoSizeDefaultFormatting to enable AutoSize for implicit table and wide formatting.

Changes:

  • Adds the new $PSStyle setting.
  • Applies it during default formatting.
  • Adds formatting tests.
File summaries
File Review findings
test/powershell/engine/Formatting/PSStyle.Tests.ps1 Moderate (3 votes): Add coverage for implicit wide views and untyped objects. Moderate (1 vote): Restore the original process-wide setting in cleanup rather than hard-coding $false.
src/System.Management.Automation/FormatAndOutput/format-default/format-default.cs Critical (3 votes): Preserve null parameters during shape inference for objects without default views. Critical (3 votes): Apply the override only to selected Table or Wide views to avoid buffering List and Complex output.
src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs Nit (1 vote): Include AutoSizeDefaultFormatting in the default $PSStyle formatter view.
Review details

Suppressed comments (2)

src/System.Management.Automation/FormatAndOutput/common/PSStyle.cs:647

  • The default PSStyle view is an explicit ListControl that enumerates the top-level settings (PowerShellCore_format_ps1xml.cs:2139-2212), but it has no entry for AutoSizeDefaultFormatting. As a result, $PSStyle and $PSStyle | Format-List hide this new user-facing setting; add it to the generated default formatter view.
        public bool AutoSizeDefaultFormatting { get; set; }

test/powershell/engine/Formatting/PSStyle.Tests.ps1:624

  • The cleanup hard-codes $false instead of restoring the value present when the test started. Because PSStyle.Instance is process-wide and the surrounding tests save and restore settings (for example, lines 143-153), this can leak state to later tests and makes the test depend on an initially disabled feature. Save the original value, establish a false baseline before capturing $defaultOutput, and restore the original in finally.
            $PSStyle.AutoSizeDefaultFormatting = $false
  • Files reviewed: 3/3 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +32 to +33
var parameters = new FormattingCommandLineParameters { autosize = true };
((InnerFormatShapeCommand)this.implementation).SetCommandLineParameters(parameters);
Comment on lines +32 to +33
var parameters = new FormattingCommandLineParameters { autosize = true };
((InnerFormatShapeCommand)this.implementation).SetCommandLineParameters(parameters);
Comment on lines +606 to +610
It "Force default formatting to use 'AutoSize'" {
try {
$defaultOutput = Get-Command Import-Module | Out-String
$PSStyle.AutoSizeDefaultFormatting = $true
$autoSizedOutput = Get-Command Import-Module | Out-String
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CL-General Indicates that a PR should be marked as a general cmdlet change in the Change Log

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants