--- /dev/null
+#!/bin/sh
+set -eu
+
+file=/dev/stdin
+if [ -r "${1:-}" ] && [ -w "${1:-}" ]; then
+ file="$1"
+ shift
+fi
+
+date=
+arg="${1:-}"
+args="$*"
+if [ -z "$arg" ]; then
+ read -p 'When should I tickle you about this message? ' args
+ arg="${args%% *}"
+fi
+
+if [ "$arg" = '-d' ] || [ $# -gt 1 ]; then
+ shift
+ date="$args"
+else
+ case "$arg" in
+ *[0-9]w) date="now + ${arg%w} weeks 00:00";;
+ *[0-9]m) date="now + ${arg%m} months 00:00";;
+ *[0-9]h) date="now + ${arg%h} hours";;
+ *[0-9]d) date="now + ${arg%d} days 00:00";;
+ *' '*) date="$args";;
+ *[!0-9]*)
+ echo "E: invalid argument: $arg" >&2
+ exit 1
+ ;;
+ *) date="now + $arg days 00:00";;
+ esac
+fi
+
+tickle=$(date +'%s (%c)' -d "$date")
+
+TMPFILE="$(tempfile -d /tmp -p tickle)"
+trap "rm -f $TMPFILE" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+
+formail -i "X-Tickle: $tickle" < $file > $TMPFILE
+
+[ -w "$file" ] && mv $TMPFILE $file
+
+rm -f $TMPFILE
+trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
##macro index L "<list-reply><save-message>=store<enter>"
macro index,pager S "<save-message>=store<enter><sync-mailbox>" "save message to store"
-macro index,pager E "<save-message>=tickle/" "save message to tickler"
+macro index,pager E ':set my_editor="$editor"<enter>:set editor=/tmp/add-tickle-stamp<enter><edit><toggle-new><save-message>=tickler<enter><sync-mailbox>:set editor="$my_editor"<enter>' "schedule message with tickler"
macro index,pager \eS "<change-folder>=store<enter>" "go to store folder"
macro index,pager X "<save-message>=retrain/spam<enter>" "retrain message as spam"
macro index,pager Z "<save-message>=retrain/ham<enter>" "retrain message as ham"
-macro index,pager \Cb "<pipe-message>/usr/bin/urlview<enter>" "invoke urlview"
+macro index,pager \Cb ':set my_pipe_decode="$pipe_decode"<enter>:set pipe_decode<enter><pipe-message>/usr/bin/urlview<enter>:set pipe_decode="$my_pipe_decode"<enter>' "invoke urlview"
#TODO this is a hack until switch-profile does not readd headers.
-#macro compose e ":set my_editor='$editor'<enter>:set editor=sensible-editor<enter><edit-headers>:set editor='$my_editor'<enter>" "invoke normal editor to edit message"
-#macro index,pager e ":set my_editor='$editor'<enter>:set editor=sensible-editor<enter><edit>:set editor='$my_editor'<enter>" "invoke normal editor to edit message"
+macro compose e ':set my_editor="$editor"<enter>:set editor=sensible-editor<enter><edit-headers>:set editor="$my_editor"<enter>' "invoke normal editor to edit message"
+macro index,pager e ':set my_editor="$editor"<enter>:set editor=sensible-editor<enter><edit>:set editor="$my_editor"<enter>' "invoke normal editor to edit message"
# vim:sw=12:noet:sts=12:ts=12:ft=muttrc