ANSI escape sequences in custom prompt cause visual artifact ('m' character) during syntax error recoloring

Open
#5,196 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
58/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Quiet
Tech stack
csharp, powershell
Domain
cli

Research direction

Start by reproducing the issue with the supplied PowerShell prompt function, an opening quote, and the stated PSReadLine environment. Trace the real-time syntax-error prompt recoloring and how ANSI escape sequences affect character offsets. Done means the prompt delimiter recolors without leaving an orphaned “m” or overwriting the “>” character.

Written by the indexing model from the issue text.

Description

Needs-Triage :mag:
Prerequisites
  • Write a descriptive title.
  • Make sure you are able to repro it on the latest released version
  • Search the existing issues, especially the pinned issues.
Exception report
N/A
Summary

ANSI escape sequences returned by a custom prompt function cause character offset miscalculations during real-time syntax-error prompt recoloring, leaving an orphaned 'm' character or overwriting the prompt delimiter.

Screenshot
Image Image
Environment data
PS Version: 7.6.5
PS HostName: ConsoleHost (Windows Terminal)
PSReadLine Version: 2.4.5
PSReadLine EditMode: Windows
OS: 10.0.26100.1 (WinBuild.160101.0800)
BufferWidth: 120
BufferHeight: 30
Steps to reproduce
  1. Start PowerShell with the following prompt function:

    function prompt {
        "`e[1;33mPS `e[1;34m$pwd`e[1;32m$('>' * ($nestedPromptLevel + 1)) `e[0m"
    }
    
  2. Type an opening quotation mark (" or ').

Expected behavior

The prompt delimiter (>) recolors cleanly to indicate an incomplete/syntax error state without visual artifacts.

Actual behavior

An orphaned m (from the trailing \e[0m SGR sequence) is printed at the end of the prompt or overwrites the > character.

Dominant language
C#
Stars
4.4k
Forks
341
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from PowerShell/PSReadLine

All issues in PowerShell/PSReadLine

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.