Установка WindowTitle PowerShell Posh-Git - экранирование?

Я пытаюсь установить WindowTitle от Powershell (размещенный на консоли), чтобы он соответствовал выводу моего приглашения в ghp. Поэтому, если бы у меня был один измененный файл, моя подсказка выглядела бы примерно так;

[Мастер репо +0 ~1 -0]

Я хотел бы установить $Host.UI.RawUI.WindowTitle равным тому же виду вещей, но часть строки '-0', похоже, является некоторой escape-последовательностью. Если я сделаю что-то вроде этого:

$repoName = Split-Path -Leaf (Split-Path $GitStatus.GitDir)
$title = "[$repoName $($GitStatus.Branch)"

if($GitPromptSettings.EnableFileStatus -and $GitStatus.HasWorking) {
    $title += " +$($GitStatus.Working.Added.Count)"
    $title += " ~$($GitStatus.Working.Modified.Count)"
    $title += " -$($GitStatus.Working.Deleted.Count)"

    if ($GitStatus.Working.Unmerged) {
        $title += " !$($GitStatus.Working.Unmerged.Count)"
    }
}

$title += "]"
$Host.UI.RawUI.WindowTitle = $title

Все, что я получаю, это '-0]'. Есть какие-нибудь идеи по обеспечению экранирующего персонажа, чтобы он работал правильно?

Если я изменю символ '-' на ~, то я получу весь заголовок как:

[Репо мастер +0 ~1 ~0]

Заранее спасибо.

1 ответ

Решение

Это ошибка с Console2. Смотрите #421 Заголовки вкладок, содержащие тире, усекаются для аналогичного отчета об ошибке.

Кроме того, Dash вызывает искажение в заголовках окон, в которых говорится о проблеме, но, похоже, они еще не решили ее.

На другом хосте PowerShell код отлично работает с дефисами в заголовке.

Другие вопросы по тегам