diff --git a/vendor/git-prompt.sh b/vendor/git-prompt.sh index 27da0de..8149695 100644 --- a/vendor/git-prompt.sh +++ b/vendor/git-prompt.sh @@ -47,25 +47,21 @@ then . ~/.config/git/git-prompt.sh fi else - # Source: github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh - + # Setup OSC 133 shell integration for Windows Terminal if [ -n "$WT_SESSION" ]; then __cmder_prompt_command() { local exit_code=$? - # OSC 133;D - Mark end of command execution with exit code + # Emit OSC 133;D to mark the end of command execution with exit code printf '\e]133;D;%s\a' "$exit_code" - # OSC 133;A - Mark start of prompt - printf '\e]133;A\a' return $exit_code } - - # OSC 133;C - Mark start of command output (emitted right before command execution) + __cmder_preexec() { - printf '\e]133;C\a' + printf '\e]133;C\a' # Emit OSC 133;C to mark the start of command execution } - - # Append to PROMPT_COMMAND to emit sequences before each prompt + + # Append to PROMPT_COMMAND to emit sequences just before each prompt if [ -z "$PROMPT_COMMAND" ]; then PROMPT_COMMAND="__cmder_prompt_command" else @@ -75,9 +71,16 @@ else # Use DEBUG trap to emit OSC 133;C before command execution trap '__cmder_preexec' DEBUG fi - + + # Source: github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory # PS1="$PS1"'\n' # new line (disabled) + + if [ -n "$WT_SESSION" ]; then + # Emit OSC 133;A to mark the start of prompt + PS1="$PS1"'\e]133;A\a' + fi + PS1="$PS1"'\[\033[32m\]' # change to green and bold PS1="$PS1"'\u@\h ' # user@host PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set) @@ -108,9 +111,9 @@ else PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold PS1="$PS1"'λ ' # prompt: Cmder uses λ PS1="$PS1"'\[\033[0m\]' # reset color - - # OSC 133;B - Mark start of command input (Windows Terminal only) + if [ -n "$WT_SESSION" ]; then + # Emit OSC 133;B to mark the end of prompt PS1="$PS1"'\[\e]133;B\a\]' fi fi diff --git a/vendor/profile.ps1 b/vendor/profile.ps1 index 1339077..8e20d0c 100644 --- a/vendor/profile.ps1 +++ b/vendor/profile.ps1 @@ -98,8 +98,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") { # Display an extra prompt line between the prompt and the command input Set-PSReadlineOption -ExtraPromptLineCount 1 - # Add OSC 133;C support for Windows Terminal shell integration - # This marks the start of command output (emitted when Enter is pressed) + # Invoked when Enter is pressed to submit a command if ($env:WT_SESSION) { Set-PSReadLineKeyHandler -Key Enter -ScriptBlock { # Get the current command line @@ -110,7 +109,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") { # Accept the line first [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine() - # Emit OSC 133;C sequence to mark start of command output + # Emit OSC 133;C to mark start of command output # This is written directly to the console after the command is accepted [Console]::Write("$([char]0x1B)]133;C$([char]7)") } @@ -221,20 +220,22 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS $lastSUCCESS = $? $realLastExitCode = $LastExitCode - # Emit terminal-specific escape sequences for Windows Terminal and ConEmu + # Terminal-specific escape sequences for Windows Terminal and ConEmu if ($env:WT_SESSION -or $env:ConEmuPID) { - # OSC 133;D - Mark end of command execution with exit code (Windows Terminal only) + # Emit OSC 133;D to mark the end of command execution with exit code if ($env:WT_SESSION) { Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;D;$realLastExitCode$([char]7)" } - # OSC 9;9 - Enable directory tracking for "Duplicate Tab" and "Split Pane" + # Emit OSC 9;9 to mark the start of the prompt + # Enables directory tracking for "Duplicate Tab" and "Split Pane" $loc = $executionContext.SessionState.Path.CurrentLocation if ($loc.Provider.Name -eq "FileSystem") { Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\" } - # OSC 133;A - Mark start of prompt (Windows Terminal only) + # Emit OSC 133;A to mark the start of the prompt + # Enables features like command navigation, selection, and visual separators if ($env:WT_SESSION) { Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)" } @@ -249,7 +250,7 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS CmderPrompt PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline - # OSC 133;B - Mark start of command input (Windows Terminal only) + # Emit OSC 133;B to mark the start of command input (after prompt, before user types) if ($env:WT_SESSION) { Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;B$([char]7)" }