From a971938946dd61a3468263908988363dbdd87a3d Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 27 Nov 2014 20:06:16 -0500 Subject: initial commit of my emacs scripts, after some cleanup --- emacsmail.sh.in | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 emacsmail.sh.in (limited to 'emacsmail.sh.in') diff --git a/emacsmail.sh.in b/emacsmail.sh.in new file mode 100644 index 0000000..e5eef50 --- /dev/null +++ b/emacsmail.sh.in @@ -0,0 +1,57 @@ +#!@bash@ + +m4_include(common.sh) + +usage() { + print 'Usage: %q [OPTIONS] MAILTO_URL' "$0" + print 'Use Emacs to open RFC 2368 "mailto:" URLs' + echo + print 'Yes, I know that RFC 2368 is obsoleted by RFC 6068.' + print 'emacs-devel@gnu.org would *love* a patch to browse-url.el' + echo + print 'The following OPTIONS are accepted:' + emacs_usage +} + +main() { + declare -a flags=() + declare error=false + declare mode=normal + + declare args= + emacs_getopt '' '' "$@" || error=true + eval set -- "$args" + while true; do + case "$1" in + -V|--version) shift; mode=version;; + -H|--help) shift; mode=usage;; + --) shift; break;; + *) + if [[ $1 =~ $emacs_getopt_2 ]]; then + flags+=("$1" "$2"); shift 2 + else + flags+=("$1"); shift 1 + fi + ;; + esac + done + urls=("$@") + if [[ $mode == normal ]]; then + [[ ${#urls[@]} = 1 ]] || error=true + fi + + if $error; then + usage >&2 + return 1 + fi + case "$mode" in + usage) usage; return 0;; + version) version; return 0;; + esac + + emacsclient "${flags[@]}" --eval \ + '(select-frame (make-frame))' \ + "(browse-url-mail $(emacs_quote "${urls[@]}"))" +} + +main "$@" -- cgit v1.2.3