ambevar-dotfiles/.scripts/elisp

53 lines
825 B
Plaintext
Raw Normal View History

2014-02-24 16:09:08 +01:00
#!/bin/sh
_usage () {
cat<<EOF
2014-09-13 14:53:42 +02:00
Usage: ${1##*/} [OPTIONS] SCRIPT [ARGS...]
2014-02-24 16:09:08 +01:00
Run Emacs Lisp SCRIPT.
Options:
-b: Byte-compile before running.
-c: Remove byte code once finished.
EOF
}
OPT_BYTE=false
OPT_CLEAN=false
while getopts :bc OPT; do
case $OPT in
b)
OPT_BYTE=true ;;
c)
OPT_CLEAN=true ;;
\?)
_usage "$0"
exit 1 ;;
esac
2014-02-24 16:09:08 +01:00
done
shift $(($OPTIND - 1))
if [ $# -eq 0 ]; then
_usage "$0"
exit 1
2014-02-24 16:09:08 +01:00
fi
2014-09-13 14:53:42 +02:00
if ! command -v emacs >/dev/null 2>&1; then
echo 'emacs not found in PATH. Exiting.' >&2
exit 1
2014-09-13 14:53:42 +02:00
fi
script="$1"
2014-02-24 16:09:08 +01:00
if $OPT_BYTE && [ "${1##*.}" = "el" ]; then
script="${1%.*}.elc"
emacs -Q --batch -f batch-byte-compile "$1" 2>/dev/null
2014-02-24 16:09:08 +01:00
fi
2014-09-13 14:53:42 +02:00
shift
2014-02-24 16:09:08 +01:00
2014-09-14 22:15:09 +02:00
emacs -Q --script "$script" "$@" 2>&1
2014-02-24 16:09:08 +01:00
$OPT_CLEAN && rm "$script"
2014-09-14 00:29:34 +02:00
## WARNING: never leave a script on a condition, return code be unexpectedly != 0.
exit 0