summaryrefslogtreecommitdiffstats
path: root/radar-base.sh
diff options
context:
space:
mode:
authorMichael Allen <michael@michaelallen.io>2015-08-26 13:39:39 +0100
committerMichael Allen <michael@michaelallen.io>2015-08-26 13:39:39 +0100
commit11e8ad4bdce9979eb871635bf455213788de5e05 (patch)
tree5907059a7ea660a1cc6644c943338ae10ee2c3c7 /radar-base.sh
parent1faeef884d3660ca4048892fef0ef78997aad821 (diff)
downloadgit-sonar-11e8ad4bdce9979eb871635bf455213788de5e05.tar.gz
git-sonar-11e8ad4bdce9979eb871635bf455213788de5e05.zip
Bypass PS1s conversion of \[
In PS1 you need to escape non-printing characters, like the color codes. The standard way is wrapping it in `\[` and `\]`. But for a dynamic prompt, i.e. one that renders the results of a function every time the prompt renders, that `\[` will be output as literals. To fix this we bypass the conversion and wrap our non-printing characters in the desired characters directly: `\[` -> `\x01` `\]` -> `\x02`
Diffstat (limited to '')
-rwxr-xr-xradar-base.sh24
1 files changed, 12 insertions, 12 deletions
diff --git a/radar-base.sh b/radar-base.sh
index 63b2b98..2a862c5 100755
--- a/radar-base.sh
+++ b/radar-base.sh
@@ -305,11 +305,11 @@ bash_color_changes_status() {
local changes=""
if [[ -n "$porcelain" ]]; then
- local green_staged_prefix="\[\033[1;32m\]"
- local red_unstaged_prefix="\[\033[1;31m\]"
- local yellow_conflicted_prefix="\[\033[1;33m\]"
- local grey_untracked_prefix="\[\033[1;37m\]"
- local reset_suffix="\[\033[0m\]"
+ local green_staged_prefix="\x01\033[1;32m\x02"
+ local red_unstaged_prefix="\x01\033[1;31m\x02"
+ local yellow_conflicted_prefix="\x01\033[1;33m\x02"
+ local grey_untracked_prefix="\x01\033[1;37m\x02"
+ local reset_suffix="\x01\033[0m\x02"
local staged_changes="$(staged_status "$porcelain" "$green_staged_prefix" "$reset_suffix")"
local unstaged_changes="$(unstaged_status "$porcelain" "$red_unstaged_prefix" "$reset_suffix")"
@@ -377,9 +377,9 @@ zsh_color_changes_status() {
bash_color_local_commits() {
local separator="${1:- }"
- local green_ahead_arrow="\[\033[1;32m\]↑\[\033[0m\]"
- local red_behind_arrow="\[\033[1;31m\]↓\[\033[0m\]"
- local yellow_diverged_arrow="\[\033[1;33m\]⇵\[\033[0m\]"
+ local green_ahead_arrow="\x01\033[1;32m\x02↑\x01\033[0m\x02"
+ local red_behind_arrow="\x01\033[1;31m\x02↓\x01\033[0m\x02"
+ local yellow_diverged_arrow="\x01\033[1;33m\x02⇵\x01\033[0m\x02"
local local_commits=""
if remote_branch="$(remote_branch_name)"; then
@@ -422,10 +422,10 @@ zsh_color_local_commits() {
bash_color_remote_commits() {
local remote_master="\xF0\x9D\x98\xAE" # an italic m to represent master
- local green_ahead_arrow="\[\033[1;32m\]←\[\033[0m\]"
- local red_behind_arrow="\[\033[1;31m\]→\[\033[0m\]"
- local yellow_diverged_arrow="\[\033[1;33m\]⇄\[\033[0m\]"
- local not_upstream="\[\033[1;31m\]⚡\[\033[0m\]"
+ local green_ahead_arrow="\x01\033[1;32m\x02←\x01\033[0m\x02"
+ local red_behind_arrow="\x01\033[1;31m\x02→\x01\033[0m\x02"
+ local yellow_diverged_arrow="\x01\033[1;33m\x02⇄\x01\033[0m\x02"
+ local not_upstream="\x01\033[1;31m\x02⚡\x01\033[0m\x02"
if remote_branch="$(remote_branch_name)"; then
remote_ahead="$(remote_ahead_of_master "$remote_branch")"