X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-emacs-mua;h=98103972f400c69af957b51e8bbfa390109c3e21;hp=4404cd7c33b870c9fa6c1a26c24143852b6e9c25;hb=caa9dcb70798bbd06bc52489109988ed1c01806c;hpb=bceb6516cee170d3ad4b620826d48e90f05a12b1 diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua index 4404cd7c..98103972 100755 --- a/notmuch-emacs-mua +++ b/notmuch-emacs-mua @@ -15,7 +15,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/ . +# along with this program. If not, see https://www.gnu.org/licenses/ . # # Authors: Jani Nikula # @@ -38,9 +38,8 @@ NO_WINDOW= USE_EMACSCLIENT= AUTO_DAEMON= CREATE_FRAME= - -# The crux of it all: construct an elisp progn and eval it. -ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)" +ELISP= +MAILTO= # Short options compatible with mutt(1). while getopts :s:c:b:i:h opt; do @@ -95,7 +94,7 @@ while getopts :s:c:b:i:h opt; do ELISP="${ELISP} (message-goto-bcc) (insert \"${OPTARG}, \")" ;; --body|i) - ELISP="${ELISP} (message-goto-body) (cd \"${PWD}\") (insert-file \"${OPTARG}\")" + ELISP="${ELISP} (message-goto-body) (insert-file \"${OPTARG}\")" ;; --print) PRINT_ONLY=1 @@ -127,16 +126,39 @@ done # Positional parameters. for arg; do escape -v arg "${arg}" - ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")" + case $arg in + mailto:*) + if [ -n "${MAILTO}" ]; then + echo "$0: more than one mailto: argument." >&2 + exit 1 + fi + MAILTO="${arg}" + ;; + *) + ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")" + ;; + esac done +if [ -n "${MAILTO}" ]; then + if [ -n "${ELISP}" ]; then + echo "$0: mailto: is not compatible with other message parameters." >&2 + exit 1 + fi + ELISP="(browse-url-mail \"${MAILTO}\")" +else + ELISP="(notmuch-mua-new-mail) ${ELISP}" +fi + # Kill the terminal/frame if we're creating one. if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then - ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))" + ELISP="${ELISP} (message-add-action #'save-buffers-kill-terminal 'exit)" fi -# End progn. -ELISP="${ELISP})" +escape -v pwd "$PWD" + +# The crux of it all: construct an elisp progn and eval it. +ELISP="(prog1 'done (require 'notmuch) (cd \"$pwd\") ${ELISP})" if [ -n "$PRINT_ONLY" ]; then echo ${ELISP}