PowerShell / vscode-powershell

Provides PowerShell language and debugging support for Visual Studio Code
https://marketplace.visualstudio.com/items/ms-vscode.PowerShell
MIT License
1.69k stars 480 forks source link

Error on read command input #4851

Open steve02081504 opened 9 months ago

steve02081504 commented 9 months ago

Prerequisites

Summary

https://github.com/PowerShell/vscode-powershell/issues/4837

I am unable to use my profile in the vscode extension terminal because it will cause PSReadLine errors

PowerShell Version

~/Documents/workstation/esh e91e649@master >$PSVersionTable; $Host

Name                           Value
----                           -----
PSVersion                      7.4.0
PSEdition                      Core
GitCommitId                    7.4.0
OS                             Microsoft Windows 10.0.19045
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Name             : Visual Studio Code Host
Version          : 2023.8.0
InstanceId       : 6250413c-638c-4418-810f-b7fd28bd672e
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : zh-CN
CurrentUICulture : zh-CN
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

Visual Studio Code Version

~/Documents/workstation/esh e91e649@master >code --version
1.85.0-insider
2e721b6ec731c22cd3c2853dbc7ad69deb447515
x64

Extension Version

~/Documents/workstation/esh e91e649@master >code --list-extensions --show-versions | Select-String powershell

ms-vscode.powershell@2023.8.0

Steps to Reproduce

run this in vscode powershell extension host

$a=[System.Collections.ArrayList]@()
Add-Member -InputObject $a -MemberType ScriptMethod -Name Pop -Value {
    $value = $this[$this.Count-1]
    $this.RemoveAt($this.Count-1)
    $value
}
Register-EngineEvent PowerShell.OnIdle -Action {
    if($a.Count -gt 0) {
        $a.Pop().Invoke()
    }
}

then wait.

Visuals

图片

Logs

No response

SydneyhSmith commented 9 months ago

Thanks for the detailed info-- we will need to take a closer look and investigate