]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
zhs/rc: Autodetect coloredstderr.
authorSimon Ruderich <simon@ruderich.org>
Mon, 10 Feb 2014 11:37:39 +0000 (12:37 +0100)
committerSimon Ruderich <simon@ruderich.org>
Mon, 10 Feb 2014 11:37:39 +0000 (12:37 +0100)
.gitignore
zsh/rc

index d02c4f15c1ec46db089abde4c16c0ae11da259b3..c08e6d565cb356e42eb11bdbbee0b3abec71463a 100644 (file)
@@ -14,3 +14,4 @@
 # Ignore unimportant files.
 /crontab.d/crontab.dotfiles-vim
 /crontab.d/crontab.jobs
+/zsh/libcoloredstderr.so
diff --git a/zsh/rc b/zsh/rc
index 869167906cdc85b64131a945a2ffe38a65eb55cd..876bfc785470754268c6317cca4fa7c0cd3a5f98 100644 (file)
--- a/zsh/rc
+++ b/zsh/rc
@@ -905,19 +905,32 @@ if [[ $TERM != dumb && $TERM != linux && -z $STY && -z $TMUX ]]; then
     fi
 fi
 
-# Colorize stderr in bold red. Very useful when looking for errors. Thanks to
-# http://gentoo-wiki.com/wiki/Zsh for the basic script and Mikachu in #zsh on
-# Freenode (2010-03-07 04:03 CET) for some improvements (-r, printf). It's not
-# yet perfect and doesn't work with su and git for example, but it can handle
-# most interactive output quite well (even with no trailing new line) and in
-# cases it doesn't work, the E alias can be used as workaround.
-#
-# Moved in the "run commands" section to prevent one unnecessary zsh process
-# when starting GNU screen/tmux (see above).
-exec 2>>(while read -r -k -u 0 line; do
-    printf '\e[91m%s\e[0m' "$line"
-    print -n $'\0'
-done &)
+# Colorize stderr in bold red. Very useful when looking for errors.
+if [[ $LD_PRELOAD != *libcoloredstderr.so* ]]; then
+    # coloredstderr found, use it.
+    if [[ -f ~/.zsh/libcoloredstderr.so ]]; then
+        export LD_PRELOAD="$HOME/.zsh/libcoloredstderr.so:$LD_PRELOAD"
+        export COLORED_STDERR_FDS=2,
+        export COLORED_STDERR_PRE=$'\033[91m' # bright red
+        export COLORED_STDERR_IGNORED_BINARIES=/usr/bin/tset
+    # Use the fallback solution.
+    #
+    # Thanks to http://gentoo-wiki.com/wiki/Zsh for the basic script and
+    # Mikachu in #zsh on Freenode (2010-03-07 04:03 CET) for some improvements
+    # (-r, printf). It's not yet perfect and doesn't work with su and git for
+    # example, but it can handle most interactive output quite well (even with
+    # no trailing new line) and in cases it doesn't work, the E alias can be
+    # used as workaround.
+    #
+    # Moved in the "run commands" section to prevent one unnecessary zsh
+    # process when starting GNU screen/tmux (see above).
+    else
+        exec 2>>(while read -r -k -u 0 line; do
+            printf '\e[91m%s\e[0m' "$line"
+            print -n $'\0'
+        done &)
+    fi
+fi
 
 # Display possible log messages from ~/.xinitrc (if `xmessage` wasn't
 # installed). No race condition as xinitrc has finished before a shell is