From 752959ea207feddc92820e91ce8a6780e9553b28 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Feb 2026 12:11:38 +0800 Subject: [PATCH] Fix PowerShell completion instruction syntax (#1568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The PowerShell completion instruction used bash-style environment variable syntax (`COMPLETE=powershell prek`), which fails in PowerShell with `CommandNotFoundException`. ## Changes - Updated `docs/installation.md` to use PowerShell-native syntax for setting environment variables **Before:** ```powershell Add-Content -Path $PROFILE -Value '(COMPLETE=powershell prek) | Out-String | Invoke-Expression' ``` **After:** ```powershell Add-Content -Path $PROFILE -Value '$env:COMPLETE = "powershell"; prek | Out-String | Invoke-Expression; Remove-Item Env:\COMPLETE' ``` The fix sets `$env:COMPLETE` using PowerShell syntax, invokes `prek` to generate the completion script, and cleans up the temporary environment variable.
Original prompt > > ---- > > *This section details on the original issue you should resolve* > > Powershell completion script results in CommandNotFoundException > ### Summary > > Following the instructions for enabling Powershell shell completions, I ran `Add-Content -Path $PROFILE -Value '(COMPLETE=powershell prek) | Out-String | Invoke-Expression'`. This did what I expected it to: it added a line to my $PROFILE, `(COMPLETE=powershell prek) | Out-String | Invoke-Expression`. > > However, also as expected, that line results in this error when the profile loads (and, indeed, if one types that string at the prompt: > ``` > COMPLETE=powershell : The term 'COMPLETE=powershell' is not recognized as the name of a cmdlet, function, script file, or operable > program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. > At C:\Users\Patrick\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:357 char:2 > + (COMPLETE=powershell prek) | Out-String | Invoke-Expression > + ~~~~~~~~~~~~~~~~~~~ > + CategoryInfo : ObjectNotFound: (COMPLETE=powershell:String) [], CommandNotFoundException > + FullyQualifiedErrorId : CommandNotFoundException > ``` > > If the problem isn't apparent, perhaps someone can tell me what it's designed to do so I can help? As a user of both Powershell & unix shells, I wasn't able to figure out what the command is that we want Powershell to run after glancing at some of the other completion scripts. > > ### Platform > > Windows 10 x86_64 > > ### Version > > prek 0.3.1 (bc142a25f 2026-01-31) > > ### .pre-commit-config.yaml > > not relevant > > ### Log file > > 2026-02-05T03:33:51.720707Z DEBUG prek: 0.3.1 (bc142a25f 2026-01-31) > 2026-02-05T03:33:51.720806Z DEBUG Args: ["c:\\users\\username \\.local\\bin\\prek.exe"] > 2026-02-05T03:33:51.803464Z TRACE get_root: close time.busy=82.6ms time.idle=5.10µs > > Fix the powershell completion instruction in installation.md: the style of running command with specified env var `COMPLETE=powershell prek` is bash-style, it does not work in powershell. Use something like `$env:COMPLETE = "powershell"; prek | Out-String | Invoke-Expression; Remove-Item Env:\COMPLETE` > > > ## Comments on the Issue (you are @copilot in this section) > > > @j178 > Thanks for the report! That instruction isn’t correct. Could you try adding this to your $PROFILE? > > ```pwsh > $env:COMPLETE = "powershell" > prek | Out-String | Invoke-Expression > Remove-Item Env:COMPLETE' > ``` > >
- Fixes j178/prek#1566 --- 💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey). --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: j178 <10510431+j178@users.noreply.github.com> --- docs/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation.md b/docs/installation.md index 841344a1..643743bb 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -130,7 +130,7 @@ To enable shell autocompletion for prek commands, run one of the following: === "PowerShell" ```powershell - Add-Content -Path $PROFILE -Value '(COMPLETE=powershell prek) | Out-String | Invoke-Expression' + Add-Content -Path $PROFILE -Value '$env:COMPLETE = "powershell"; prek | Out-String | Invoke-Expression; Remove-Item Env:\COMPLETE' ``` Then restart your shell or source the config file.