diff options
author | Luke Shumaker <lukeshu@sbcglobal.net> | 2014-11-27 20:06:16 -0500 |
---|---|---|
committer | Luke Shumaker <lukeshu@sbcglobal.net> | 2014-11-27 20:06:16 -0500 |
commit | a971938946dd61a3468263908988363dbdd87a3d (patch) | |
tree | c3cc9ef949523199b81f8f7799c3c1863b59554c /emacsmail.sh.in |
initial commit of my emacs scripts, after some cleanup
Diffstat (limited to 'emacsmail.sh.in')
-rw-r--r-- | emacsmail.sh.in | 57 |
1 files changed, 57 insertions, 0 deletions
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 "$@" |