X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-emacs-mua;h=98103972f400c69af957b51e8bbfa390109c3e21;hp=016fa12613c49c217b11fa8959c55a1e50a8e40f;hb=caa9dcb70798bbd06bc52489109988ed1c01806c;hpb=7b7dadb93f73840fc4eb3f93cb01901c41e97360 diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua index 016fa126..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 # @@ -30,17 +30,16 @@ escape () printf -v $2 '%s' "${__escape_arg__//\"/\\\"}" } -EMACS=${EMACS-emacs} -EMACSCLIENT=${EMACSCLIENT-emacsclient} +EMACS=${EMACS:-emacs} +EMACSCLIENT=${EMACSCLIENT:-emacsclient} PRINT_ONLY= 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}