X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=notmuch-emacs-mua;h=98103972f400c69af957b51e8bbfa390109c3e21;hb=2dd96d6bd642c3b32ce1997528f69665019b7497;hp=b51d8d0e2c5be5000371e00337d9c9941322547b;hpb=b69201da5ddac5fc17935d39d8cca162716a6dd9;p=notmuch diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua index b51d8d0e..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 @@ -108,6 +107,7 @@ while getopts :s:c:b:i:h opt; do ;; --auto-daemon) AUTO_DAEMON="--alternate-editor=" + CREATE_FRAME="-c" ;; --create-frame) CREATE_FRAME="-c" @@ -126,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}