projects
/
muttjump
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
allow program paths to contain arguments
[muttjump]
/
muttjump
diff --git
a/muttjump
b/muttjump
index e2f04ecee410806210ff65b98f439069f77f9050..8170f4e821857f7d3f6c21c6d4af2af03421d84d 100755
(executable)
--- a/
muttjump
+++ b/
muttjump
@@
-58,6
+58,11
@@
function quote () {
echo \'${1//\'/\'\\\'\'}\'
}
echo \'${1//\'/\'\\\'\'}\'
}
+function is_callable () {
+ read cmd args <<<$1
+ type -p $cmd >/dev/null
+}
+
# Check command-line arguments and STDIN
if tty -s || [ $# -ne 0 ] ; then
cat >&2 <<END
# Check command-line arguments and STDIN
if tty -s || [ $# -ne 0 ] ; then
cat >&2 <<END
@@
-71,7
+76,7
@@
END
fi
# check if mutt is installed
fi
# check if mutt is installed
-if !
type -p $MUTT >/dev/null
; then
+if !
is_callable $MUTT
; then
die "$MUTT is not in PATH, set MUTT variable"
fi
die "$MUTT is not in PATH, set MUTT variable"
fi
@@
-84,9
+89,9
@@
case $MUTTJUMP_MODE in
esac
# search for Message-ID in STDIN
esac
# search for Message-ID in STDIN
-if
type -p $FORMAIL >/dev/null
; then
+if
is_callable $FORMAIL
; then
msgid=$($FORMAIL -c -z -x Message-ID | head -n1)
msgid=$($FORMAIL -c -z -x Message-ID | head -n1)
-elif
type -p $REFORMAIL >/dev/null
; then
+elif
is_callable $REFORMAIL
; then
msgid=$($REFORMAIL -c -x Message-ID: | head -n1)
else
msgid=$(sed -n 's/^Message-ID:[ \t]*\(.*\)/\1/Ip' | head -n1)
msgid=$($REFORMAIL -c -x Message-ID: | head -n1)
else
msgid=$(sed -n 's/^Message-ID:[ \t]*\(.*\)/\1/Ip' | head -n1)
@@
-137,7
+142,10
@@
jump_expr="~i'$msgid'"
if [ "$MUTTJUMP_USE_SCREEN" = no ] ; then
if [ "$MUTTJUMP_USE_SCREEN" = no ] ; then
- jump_cmd="<$MUTTJUMP_MODE>$jump_expr<enter>"
+ jump_cmd="<limit>$jump_expr<enter>"
+ if [ "$MUTTJUMP_MODE" = search ] ; then
+ jump_cmd="$jump_cmd<limit>all<enter>"
+ fi
# Close message-stdin and open terminal-stdin instead.
# mutt behaves different if STDIN is no terminal
# Close message-stdin and open terminal-stdin instead.
# mutt behaves different if STDIN is no terminal
@@
-151,14
+159,10
@@
if [ "$MUTTJUMP_USE_SCREEN" = no ] ; then
else
else
- case $MUTTJUMP_MODE in
- limit)
- jump_cmd="l$jump_expr"
- ;;
- search)
- jump_cmd="/$jump_expr"
- ;;
- esac
+ jump_cmd="l$jump_expr
\r
"
+ if [ "$MUTTJUMP_MODE" = search ] ; then
+ jump_cmd="${jump_cmd}lall
\r
"
+ fi
screen_window_name=$(MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE "$orig_maildir")
declare -a screen_opts
screen_window_name=$(MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE "$orig_maildir")
declare -a screen_opts
@@
-167,7
+171,7
@@
else
screen_opts_str="-S $(quote "$MUTTJUMP_SCREEN_SESSION")"
fi
screen_opts_str="-S $(quote "$MUTTJUMP_SCREEN_SESSION")"
fi
- $SCREEN "${screen_opts[@]}" -p "$screen_window_name" -X eval "select '$screen_window_name'" "stuff \"$jump_cmd
\r
\""
+ $SCREEN "${screen_opts[@]}" -p "$screen_window_name" -X eval "select '$screen_window_name'" "stuff \"$jump_cmd\""
if [ $? != 0 ] ; then
die "You have to manually start a screen session with:
if [ $? != 0 ] ; then
die "You have to manually start a screen session with:
Benjamin Mako Hill
||
Want to submit a patch?