summaryrefslogtreecommitdiff
path: root/emacsmail.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'emacsmail.sh.in')
-rw-r--r--emacsmail.sh.in72
1 files changed, 72 insertions, 0 deletions
diff --git a/emacsmail.sh.in b/emacsmail.sh.in
new file mode 100644
index 0000000..0cec264
--- /dev/null
+++ b/emacsmail.sh.in
@@ -0,0 +1,72 @@
+#!@bash@
+
+# Copyright (C) 2014, 2016 Luke Shumaker <lukeshu@sbcglobal.net>
+#
+# This file is not considered part of GNU Emacs.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# 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/>.
+
+m4_include(common.sh.in)
+
+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 mode=normal
+
+ emacs_getopt_init
+ declare args
+ if ! args="$(emacs_getopt '' '' "$@")"; then
+ mode=error
+ else
+ 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
+ case ${#urls[@]} in
+ 0) urls=('mailto:');;
+ 1) :;;
+ *) mode=error;;
+ esac
+ fi
+ fi
+
+ next "$mode" \
+ emacsclient "${flags[@]}" --eval \
+ "(browse-url-mail $(emacs_quote "${urls[@]}"))"
+}
+
+main "$@"