comment is_new_screen()
[muttjump] / muttjump
index 9600c8d6d97e0e301f5eef0b302d3e788b41cc39..73c6bc104b78fb6d5b8313cbd1c7ffce144d22c4 100755 (executable)
--- a/muttjump
+++ b/muttjump
@@ -43,7 +43,7 @@ if ! type MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE >/dev/null 2>&1 ; then
 fi
 
 # Version of GNU screen
-# Since 4.01.00devel (commit d87a0d8) backslash handling was altered.
+# Since 4.01.00devel (commit 98b6b41) backslash for -X handling was altered.
 MUTTJUMP_SCREEN_VERSION=${MUTTJUMP_SCREEN_VERSION:-auto}
 
 # program paths
@@ -78,6 +78,10 @@ function wc_L () {
     awk '{ y = length(); if (y > x) x = y } END { print x }'
 }
 
+# Check if screen is new enough to parse -X (commit 98b6b41) and support
+# -Q (commit 8147d08). It (falsely) assumes that screen version > 4.00
+# does this. Distributions that use git versions are likely to also keep
+# them up to date.
 function is_new_screen () {
     sv=$MUTTJUMP_SCREEN_VERSION
     if [ "$sv" = auto ] ; then
@@ -238,11 +242,13 @@ if [ "$MUTTJUMP_MULTI_SCREEN_MODE" = yes ] ||
 fi
 
 screen_opts=()
+screen_query_arg=""
 if [ "$MUTTJUMP_USE_SCREEN" = yes ] ; then
     if [ -n "$STY" ] ; then
         screen_opts=("-X" "screen")
         if is_new_screen ; then
             jump_cmd=${jump_cmd/\\/\\\\\\}
+            screen_query_arg="-Q"
         fi
     else
         reopen_tty
@@ -255,9 +261,8 @@ else
 fi
 
 if [ "$MUTTJUMP_MULTI_SCREEN_MODE" = yes -a -n "$STY" ] ; then
-    if is_new_screen ; then
-        $SCREEN -X -p "$screen_window_name" -Q select "$screen_window_name" >/dev/null
-    fi
+    $SCREEN -X -p "$screen_window_name" $screen_query_arg \
+            select "$screen_window_name" >/dev/null
     if [ $? = 0 ] ; then
         $SCREEN -X -p "$screen_window_name" stuff ":push \"$jump_cmd\"\r"
         exit 0

Benjamin Mako Hill || Want to submit a patch?