Starter Kit Misc

This is part of the Emacs Starter Kit.

Starter Kit Misc

Things that don't fit anywhere else.

Check Dependencies

Determine whether required packages are installed. If not, use ELPA to install them. Other dependencies are provided by Emacs 24.

(starter-kit-install-if-needed 'magit)

Color Themes

Emacs24 has build in support for saving and loading themes.

A Theme builder is available at http://elpa.gnu.org/themes/ along with a list of pre-built themes at http://elpa.gnu.org/themes/view.html and themes are available through ELPA.

Downloaded themes may be saved to the themes/ directory in the base of the starter kit which ignored by git. Once downloaded and evaluated a theme is activated using the load-theme function.

Window systems

(when window-system
  (setq frame-title-format '(buffer-file-name "%f" ("%b")))
  (blink-cursor-mode -1)
  (when (require 'mwheel nil 'no-error) (mouse-wheel-mode t)))

(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

(setq visible-bell t
      echo-keystrokes 0.1
      font-lock-maximum-decoration t
      inhibit-startup-message t
      transient-mark-mode t
      color-theme-is-global t
      delete-by-moving-to-trash t
      shift-select-mode nil
      truncate-partial-width-windows nil
      uniquify-buffer-name-style 'forward
      whitespace-style '(trailing lines space-before-tab
                                  indentation space-after-tab)
      whitespace-line-column 100
      ediff-window-setup-function 'ediff-setup-windows-plain
      oddmuse-directory (concat starter-kit-dir "oddmuse")
      xterm-mouse-mode t
      save-place-file (concat starter-kit-dir "places"))

Transparently open compressed files

(auto-compression-mode t)

Save a list of recent files visited.

#+begin_src emacs-lisp (recentf-mode 1) #+end_src emacs-lisp

Highlight matching parentheses when the point is on them.

(show-paren-mode 1)

ido mode

ido-mode is like magic pixie dust!

(when (> emacs-major-version 21)
  (ido-mode t)
  (setq ido-enable-prefix nil
        ido-enable-flex-matching t
        ido-create-new-buffer 'always
        ido-use-filename-at-point t
        ido-max-prospects 10))

Other, spell checking, tabs, imenu and a coding hook

(set-default 'indent-tabs-mode nil)
(set-default 'indicate-empty-lines t)
(set-default 'imenu-auto-rescan t)

(add-hook 'text-mode-hook 'turn-on-auto-fill)
(add-hook 'text-mode-hook 'turn-on-flyspell)

(defvar starter-kit-coding-hook nil
  "Hook that gets run on activation of any programming mode.")

(defalias 'yes-or-no-p 'y-or-n-p)
;; Seed the random-number generator
(random t)

functions for prettier source code

(defun starter-kit-pretty-lambdas ()
  (font-lock-add-keywords
   nil `(("(\\(lambda\\>\\)"
          (0 (progn (compose-region (match-beginning 1) (match-end 1)
                                    ,(make-char 'greek-iso8859-7 107))
                    nil))))))

possible issues/resolutions with flyspell

Most of the solution came from EmacsWiki-FlySpell. Here is one possible fix.

  • Emacs set path to aspell

    it's possible aspell isn't in your path

    (setq exec-path (append exec-path '("/opt/local/bin")))
    
  • Emacs specify spelling program
    • This didn't work at first, possibly because cocoAspell was building its dictionary. Now it seems to work fine.
    (setq ispell-program-name "aspell"
          ispell-dictionary "english"
          ispell-dictionary-alist
          (let ((default '("[A-Za-z]" "[^A-Za-z]" "[']" nil
                           ("-B" "-d" "english" "--dict-dir"
                            "/Library/Application Support/cocoAspell/aspell6-en-6.0-0")
                           nil iso-8859-1)))
            `((nil ,@default)
              ("english" ,@default))))
    

Hippie expand: at times perhaps too hip

(when (boundp 'hippie-expand-try-functions-list)
  (delete 'try-expand-line hippie-expand-try-functions-list)
  (delete 'try-expand-list hippie-expand-try-functions-list))

Don't clutter up directories with files~

Rather than saving backup files scattered all over the file system, let them live in the backups/ directory inside of the starter kit.

(setq backup-directory-alist `(("." . ,(expand-file-name
                                        (concat starter-kit-dir "backups")))))

Default to unified diffs

(setq diff-switches "-u")

Cosmetics

(eval-after-load 'diff-mode
  '(progn
     (set-face-foreground 'diff-added "green4")
     (set-face-foreground 'diff-removed "red3")))

(eval-after-load 'magit
  '(progn
     (set-face-foreground 'magit-diff-add "green3")
     (set-face-foreground 'magit-diff-del "red3")))