Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Buggy interaction between the option `PromptText` and a prompt with shell integration in Windows Terminal 1.22.10352.0 (v 2.4.0 beta0)

Abierto
#4,568 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
csharp, powershell
Área
cli

Línea de trabajo

Start by reproducing the interaction with Set-PSReadLineOption using PromptText and ExtraPromptLineCount, following the prompt function and Windows Terminal shell-integration sequence in the issue. Compare behavior after a syntax error and corrected command execution. Done means PromptText is substituted without inserting spurious characters or causing shell integration to treat it as command input.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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
Screenshot

Image

Environment data
PS Version: 7.6.0-preview.4
PS HostName: ConsoleHost (Windows Terminal)
PSReadLine Version: 2.4.5
PSReadLine EditMode: Windows
OS: 10.0.26100.1 (WinBuild.160101.0800)
BufferWidth: 120
BufferHeight: 24
Windows Terminal 1.23.12811.0
Steps to reproduce
  1. Define your prompt as follows
function prompt {
        # Get error code
    $LastExitStatus = $?
    $LastHistoryEntry = Get-History -Count 1
    $LastErrorId = $Error[0].InvocationInfo.HistoryId
    $CapturedExitCode = $LastExitCode
    [int]$errorCode = 0
    [bool]$IsLastResultAnError = $LastErrorId -eq $LastHistoryEntry.Id
    if ($LastexitStatus -eq $True) {
        $errorCode = 0
    }
    elseif ($IsLastResultAnError) {
        $errorCode = -1
    }
    else {
        $errorCode = $CapturedExitCode
    }
    $p = [System.Text.StringBuilder]::new()
    # Get end mark
    if ($global:_lastHistoryId -ne -1) {
        if ($LastHistoryEntry.Id -eq $global:_lastHistoryId) {
            [void]$p.Append("`e]133;D`a")
        }
        else {
            [void]$p.Append("`e]133;D;$errorCode`a")
        }
    }
    $Global:_lastHistoryId = $lastHistoryEntry.Id
    # Start of the prompt
    [void]$p.Append("`e]133;A$([char]07)")
    # Get location mark
    $Location = $executionContext.SessionState.Path.CurrentLocation
    if ($Location.Provider.Name -eq "FileSystem") {
        [void]$p.Append("$([char]27)]9;9;`"$($Location.ProviderPath)`"$([char]27)\")
    }
    [void]$p.Append("PS > ")
    # End of the prompt, start of the new command
    [void]$p.Append("`e]133;B$([char]07)")
    $p.ToString()
}
  1. Set-PSReadlineOption -PromptText '>'; Set-PSReadlineOption -ExtraPromptLineCount 1
  2. Write any PowerShell code, triggering a syntax error in the meantime (for instance, open a parenthesis)
  3. Write the command correctly, then execute
Expected behavior

The prompt text should be substituted cleanly, and not leave any spurious characters in the command line.

Actual behavior

The PromptText character is inserted into the command line, and as a consequence it is erroneously detected as part of the command by the shell integration feature.

Links

More information about the shell integration feature in Windows Terminal.

Lenguaje dominante
C#
Estrellas
4.4k
Forks
341
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PowerShell/PSReadLine

Todos los issues de PowerShell/PSReadLine

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.