.emacs-autogen.sh
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 25 Dec 2023 20:15:49 +0200
changeset 1772 d97be992a1f9
parent 1764 a40a9f231aa0
permissions -rwxr-xr-x
Introduced Org state FAILED.

#!/usr/bin/env bash

set -x

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
      ;;
    MINGW64_NT-*)
      host_os=windows
      host_distro=mingw64
      ;;
    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 "american")'
      ;;
    unknown)
      echo '(setq-default ispell-local-dictionary "default")'
      ;;
  esac
}

print_aspell() {
  echo '(setq-default ispell-program-name "aspell")'
  echo '(setq-default ispell-local-dictionary "american")'
}

print_speller() {
  print_header
  check_ispell
  ispell_present=$?
  check_aspell
  aspell_present=$?
  case $host_os in
    windows|linux)
      if [ $aspell_present = 0 ]; then
          print_aspell
      elif [ $ispell_present = 0 ]; then
          print_ispell
      fi
      ;;
    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
}

print_emacs_sources_dir() {
  print_header
  if [[ -d ~/devel/emacs/emacs/src ]]; then
    echo '(setq find-function-C-source-directory "~/devel/emacs/emacs/src")'
  else
    ls ~/devel/emacs/src/emacs.c ~/devel/emacs/emacs*/src/emacs.c 2>/dev/null | {
      read f
      printf '(setq find-function-C-source-directory "%s")' ${f%emacs.c}
    }
  fi
}

cat >$cfg <<EOF
;; -*- mode: emacs-lisp; coding: utf-8; fill-column: 78 -*-
;;
;; For load order see README.
EOF

check_platform
{
  print_speller
  print_man
  print_emacs_sources_dir
} >>$cfg