Prerequisites
Exception report
Screenshot
Long-time Vi mode user. For a couple of years, I've been dealing w/ an obscure behavior and finally taking time to report it.
Issue: In Vi insert mode with PredictionViewStyle set to ListView, the first DownArrow press after reusing the list selects a history item internally but fails to render its highlight until another navigation key is pressed.
More Detail:
When using these PSReadLine options:
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -EditMode Vi
the first DownArrow press in the prediction selects a history entry internally without visually rendering the selection highlight.
Pressing Enter at that point executes/accepts the first history item, which indicates that the item was selected despite no visible highlight. Pressing DownArrow a second time causes the selection highlight to appear. After that, UpArrow and DownArrow behave and render normally.
Note: The issue does not occur the first time ListView is used in a new PowerShell session; it only begins after ListView has already been used once.
Entering Vi normal mode and then returning to insert mode resets the behavior, e.g. Esc + i. After that, the first DownArrow press renders correctly again, until the issue recurs.
Environment data
PS Version: 7.6.3
PS HostName: ConsoleHost
PSReadLine Version: 2.4.5
PSReadLine EditMode: Vi
OS: 10.0.26100.1 (WinBuild.160101.0800)
BufferWidth: 180
BufferHeight: 50
Steps to reproduce
- Run
pwsh -noprofile
- Run
Set-PSReadLineOption -EditMode Vi
- Run
Set-PSReadlineOption -PredictionViewStyle ListView
- In Vi insert mode, type text that produces history predictions
- Use the ListView and navigate it with DownArrow (on the first use in a new session, the highlight appears as expected)
- Complete or dismiss the ListView (e.g. ESC to dismiss and
cc to clear the line/command)
- Trigger ListView again and press DownArrow once
On the second and later uses of ListView:
- The first DownArrow press appears to do nothing visually.
- No entry is highlighted.
- Pressing Enter accepts or runs the first list item, indicating that the selection changed internally.
- Pressing DownArrow a second time causes the visual highlight to appear.
- Subsequent UpArrow and DownArrow presses render correctly.
Expected behavior
- Each
DownArrow press in ListView should visibly move the selection to the next prediction.
- On the first press, the first matching history entry should be highlighted immediately.
- The visible highlight and the internally selected item should always remain in sync.
- This should behave consistently every time ListView is opened while in Vi insert mode.
Actual behavior
- After ListView has been used once, reopening it in Vi insert mode produces no visible highlight on the first
DownArrow press.
- The first item appears unselected, but it is selected internally.
- Pressing
Enter accepts/runs that first item despite the missing highlight.
- A second
DownArrow press makes the highlight appear, after which navigation renders normally.
- Pressing
Esc and then i temporarily resets the behavior.
Prerequisites
Exception report
N/AScreenshot
Long-time Vi mode user. For a couple of years, I've been dealing w/ an obscure behavior and finally taking time to report it.
Issue: In Vi insert mode with
PredictionViewStyleset toListView, the firstDownArrowpress after reusing the list selects a history item internally but fails to render its highlight until another navigation key is pressed.More Detail:
When using these PSReadLine options:
the first
DownArrowpress in the prediction selects a history entry internally without visually rendering the selection highlight.Pressing
Enterat that point executes/accepts the first history item, which indicates that the item was selected despite no visible highlight. PressingDownArrowa second time causes the selection highlight to appear. After that,UpArrowandDownArrowbehave and render normally.Note: The issue does not occur the first time ListView is used in a new PowerShell session; it only begins after ListView has already been used once.
Entering Vi normal mode and then returning to insert mode resets the behavior, e.g.
Esc+i. After that, the firstDownArrowpress renders correctly again, until the issue recurs.Environment data
Steps to reproduce
pwsh -noprofileSet-PSReadLineOption -EditMode ViSet-PSReadlineOption -PredictionViewStyle ListViewccto clear the line/command)On the second and later uses of ListView:
Expected behavior
DownArrowpress in ListView should visibly move the selection to the next prediction.Actual behavior
DownArrowpress.Enteraccepts/runs that first item despite the missing highlight.DownArrowpress makes the highlight appear, after which navigation renders normally.Escand thenitemporarily resets the behavior.