In Emacs 23.1: smerge-refine highlights word-level details of changes in
conflict.
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "Where config file?"
exit 1
fi
cfg=$1
# Set host_os:
# windows, linux, unknown
# host_distro:
# cygwin, debian, unknown
check_platform() {
case `uname -s` in
CYGWIN_NT-*)
host_os=windows
host_distro=cygwin
;;
Linux)
host_os=linux
if [ -e /etc/debian_version ]; then
host_distro=debian
else
host_distro=unknown
fi
;;
Darwin)
host_os=darwin
;;
*)
host_os=unknown
;;
esac
}
print_header() {
echo
echo ';; ================================================================'
echo ";; ${FUNCNAME[1]}."
echo
}
check_ispell() {
command -v ispell >/dev/null && return 0 || return 1
}
check_aspell() {
command -v aspell >/dev/null && return 0 || return 1
}
print_ispell() {
echo '(setq-default ispell-program-name "ispell")'
case $host_distro in
debian)
echo '(setq-default ispell-local-dictionary "british")'
;;
unknown)
echo '(setq-default ispell-local-dictionary "default")'
;;
esac
}
print_aspell() {
echo '(setq-default ispell-program-name "aspell")'
echo '(setq-default ispell-local-dictionary "en")'
}
print_speller() {
print_header
check_ispell
ispell_present=$?
check_aspell
aspell_present=$?
case $host_os in
windows)
case $host_distro in
cygwin)
if [ $aspell_present = 0 ]; then
print_aspell
elif [ $ispell_present = 0 ]; then
print_ispell
fi
;;
esac
;;
linux)
case $host_distro in
debian)
if [ $ispell_present = 0 ]; then
print_ispell
elif [ $aspell_present = 0 ]; then
print_aspell
fi
;;
esac
;;
darwin)
print_aspell
;;
*)
:
;;
esac
}
print_man() {
print_header
if man -a man >/dev/null 2>&1; then
echo '(setq Man-switches "-a")'
else
echo '(setq Man-switches "")'
fi
}
# Remove old auto-generated config and fill it by standard header.
echo ";; -*- mode: emacs-lisp; coding: utf-8; fill-column: 78 -*-
;;
;; For load order see README.
" >$cfg
check_platform
print_speller >>$cfg
print_man >>$cfg