Merge branch 'master' into screen-git
authorJohannes Weißl <jargon@molb.org>
Mon, 6 Dec 2010 09:26:09 +0000 (10:26 +0100)
committerJohannes Weißl <jargon@molb.org>
Mon, 6 Dec 2010 09:26:09 +0000 (10:26 +0100)
1  2 
muttjump

diff --combined muttjump
index 2127243327b016607fd6a14d2405c999809b4949,6f5a1d394d271e24731d7e7f4579d05686aaa508..2f60b3bab13573fedfe85937de1d6beb133c608c
+++ b/muttjump
@@@ -43,6 -43,10 +43,10 @@@ if ! type MUTTJUMP_SCREEN_WINDOW_NAME_M
      }
  fi
  
+ # Version of GNU screen
+ # Since 4.01.00 (commit d87a0d8) backslash handling was altered.
+ MUTTJUMP_SCREEN_VERSION=${MUTTJUMP_SCREEN_VERSION:-auto}
  # program paths
  MUTT=${MUTT:-mutt}
  MAIRIX=${MAIRIX:-mairix}
@@@ -150,12 -154,15 +154,15 @@@ msgid_clean=$(echo "$msgid" | sed -e 's
  # try to locate path of message using a mail search engine
  case $MUTTJUMP_INDEXER in
      mairix)
+         msgid_mairix=$msgid_clean
          # mairix can't quote special characters (~,/=^) in search words. As a
          # workaround, split Message-ID in 31-character long AND-linked
          # substrings.
-         msgid_mairix=$(echo "$msgid_clean" | sed -e 's/[~,/=^]\+/ /g' \
-             -e 's/[^ ]\{31\}/& /g' -e 's/^ \+//g' -e 's/ *$/=/g' \
-             -e 's/ /=,/g')
+         if echo "$msgid_clean" | grep -q '[~,/=^]' ; then
+             msgid_mairix=$(echo "$msgid_clean" | sed -e 's/[~,/=^]\+/ /g' \
+                 -e 's/[^ ]\{31\}/& /g' -e 's/^ \+//g' -e 's/ *$/=/g' \
+                 -e 's/ /=,/g')
+         fi
          orig_msgfiles=$($MAIRIX -r "m:$msgid_mairix")
          ;;
      mu)
  
  msgid_mutt=$(quote_regexp "$msgid_quoted")
  jump_expr="~i'$msgid_mutt'"
 +jump_cmd="<limit>$jump_expr<enter>"
 +if [ "$MUTTJUMP_MODE" = search ] ; then
 +    jump_cmd="$jump_cmd<limit>all<enter>"
 +fi
  
  if [ "$MUTTJUMP_MULTI_SCREEN_MODE" = no ] ; then
  
 -    jump_cmd="<limit>$jump_expr<enter>"
 -    if [ "$MUTTJUMP_MODE" = search ] ; then
 -        jump_cmd="$jump_cmd<limit>all<enter>"
 -    fi
 -
      if [ "$MUTTJUMP_USE_SCREEN" = auto -a -n "$STY" ] ; then
          MUTTJUMP_USE_SCREEN=yes
      fi
      if [ "$MUTTJUMP_USE_SCREEN" = yes ] ; then
          if [ -n "$STY" ] ; then
              screen_opts=("-X" "screen")
+             sv=$MUTTJUMP_SCREEN_VERSION
+             if [ "$sv" = auto ] ; then
+                 sv=$($SCREEN --version | awk '{print $3}')
+             fi
+             if ! echo "$sv" | grep -q "^\(4\.00\|[0-3]\.\)" ; then
+                 jump_cmd=${jump_cmd/\\/\\\\\\}
+             fi
          else
              reopen_tty
          fi
  
  else
  
 -    jump_cmd="l$jump_expr\r"
 +    jump_cmd_short="l$jump_expr\r"
      if [ "$MUTTJUMP_MODE" = search ] ; then
 -        jump_cmd="${jump_cmd}lall\r"
 +        jump_cmd_short="${jump_cmd_short}lall\r"
      fi
  
      screen_window_name=$(MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE "$orig_maildir")
  
 -    $SCREEN -p "$screen_window_name" -X eval "select '$screen_window_name'" "stuff \"$jump_cmd\""
 +    if [ -z "$STY" ] ; then
 +        reopen_tty
 +        $SCREEN -t "$screen_window_name" $MUTT -f "$orig_maildir" -e "push \"$jump_cmd\""
 +    else
 +        $SCREEN -X -p "$screen_window_name" -Q select "$screen_window_name" >/dev/null
 +        if [ $? != 0 ] ; then
 +            $SCREEN -X screen -t "$screen_window_name" $MUTT -f "$orig_maildir" -e "push \"$jump_cmd\""
 +        else
 +            $SCREEN -X -p "$screen_window_name" stuff "$jump_cmd_short"
 +        fi
 +    fi
  fi

Benjamin Mako Hill || Want to submit a patch?