summaryrefslogtreecommitdiff
path: root/emacsmail.sh.in
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-11-27 20:06:16 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-11-27 20:06:16 -0500
commita971938946dd61a3468263908988363dbdd87a3d (patch)
treec3cc9ef949523199b81f8f7799c3c1863b59554c /emacsmail.sh.in
initial commit of my emacs scripts, after some cleanup
Diffstat (limited to 'emacsmail.sh.in')
-rw-r--r--emacsmail.sh.in57
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 "$@"