                      (interactive)
                      (find-file ,(concat "~/" (cadr item))))))
 
+;;; Use IDO mode for C-x C-f and friends. (Most other things should be
+;;; using Helm mode.)
+(ido-mode 'files)
+
+;;; Use fuzzy matching.
+(setq ido-enable-flex-matching 1)
+
+;;; Follow symlinks without prompting. If this isn't done, then you will
+;;; get a prompt every time you edit init.el with F9. (This is assuming
+;;; that ~/.emacs.d/init.el is a symlink, which is how the setup script
+;;; sets it up.)
+(setq vc-follow-symlinks t)
+
+;;; Automatically reload files that were changed on disk, if they have
+;;; not been modified in Emacs since the last time they were saved.
+(global-auto-revert-mode 1)
+
+;;; Turn the delay on auto-reloading from 5 seconds down to 1 second.
+(setq auto-revert-interval 1)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Dired
+
+;;; Suppress the 'ls does not support --dired' warning. Doing this instead
+;;; of installing a dired-compatibile ls is much easier, although it may
+;;; cause problems with e.g. filenames that have leading spaces. If you
+;;; have a lot of filenames with leading spaces, though, you probably have
+;;; bigger problems ;)
+(setq dired-use-ls-dired nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Saving files
+
+;;; Put backup files in $HOME/.emacs-backups, rather than in the current
+;;; directory.
+(setq backup-directory-alist '(("." . "~/.emacs-backups")))
+
+;;; Always use copying to make backup files. This prevents links from
+;;; being made to point at the backup file rather than the original.
+(setq backup-by-copying t)
+
+;;; Keep multiple numbered backup files, rather than a single unnumbered
+;;; backup file.
+(setq version-control t)
+
+;;; Delete old backups silently, instead of asking for confirmation.
+(setq delete-old-versions t)
+
+;;; Don't make autosave files.
+(setq auto-save-default nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Text formatting
+
+;;; Don't use tabs for indentation, even in deeply indented lines. (Why
+;;; would anyone want their editor to *sometimes* use tabs?)
+(setq-default indent-tabs-mode nil)
+
+;;; Sentences end with one space, not two. If you end sentences with
+;;; one space, this has two concrete effects on filling with M-q.
+;;; Firstly, it allows Emacs to break directly after a sentence.
+;;; Secondly, consider the case when the end of a line has an
+;;; end-of-sentence period followed by trailing whitespace and when at
+;;; least the last word of the sentence is too long for the line. In
+;;; that case, this option prevents filling from inserting two spaces
+;;; after the period when it is wrapped to the next line.
+(setq sentence-end-double-space nil)
+
+;;; Trim trailing whitespace on save. This will get rid of end-of-line
+;;; whitespace, and reduce the number of blank lines at the end of the
+;;; file to one.
+(add-hook 'before-save-hook 'delete-trailing-whitespace)
+
+;;; Add a trailing newline if there is not one already, when
+;;; saving. This is enabled for default for certain modes, but we want
+;;; it everywhere (e.g. when editing .gitignore files).
+(setq require-final-newline t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Killing and yanking
+
+;;; Eliminate duplicates in the kill ring. That is, if you kill the same
+;;; thing twice, you won't have to use M-y twice to get past it to older
+;;; entries in the kill ring.
+(setq kill-do-not-save-duplicates t)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Searching
+
+;;; Eliminate the quarter-second delay before I-search matches are
+;;; highlighted, because delays suck.
+(setq lazy-highlight-initial-delay 0)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Windows
+
+(windmove-default-keybindings)
+
+(winner-mode 1)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; ElDoc
+
+;;; Enable ElDoc when editing Lisps and using Lisp REPLs.
+
+(dolist (hook '(emacs-lisp-mode-hook
+                lisp-interaction-mode-hook))
+  (add-hook hook (lambda () (eldoc-mode 1))))
+
+(when (member 'clojure-mode radian-packages)
+  (add-hook 'clojure-mode-hook (lambda () (eldoc-mode 1))))
+
+(when (member 'cider radian-packages)
+  (add-hook 'cider-repl-mode-hook (lambda () (eldoc-mode 1))))
+
+;;; Turn off the delay before ElDoc messages are shown in the echo area.
+(setq eldoc-idle-delay 0)
+
+;;; Always truncate ElDoc messages to one line. This prevents the echo area from
+;;; resizing itself unexpectedly when point is on a Clojure variable with a
+;;; multiline docstring.
+(setq eldoc-echo-area-use-multiline-p nil)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Emacs Lisp
+
 ;;; Add a keybinding for reloading this file (init.el). This is useful
 ;;; for when you have several instances of Emacs open and you change
 ;;; something in your configuration, then later come back to an old

;;; work in the startup buffer, which is annoying.
(setq inhibit-startup-screen t)

;;; Disable the menu bar, as it doesn't seem very useful...
(menu-bar-mode -1)

;;; Also disable the toolbar. (This is only shown in windowed
;;; Emacsen.)
(tool-bar-mode -1)

;;; When point is on a paren, highlight the matching paren instantly,
;;; instead of after 1/8 of a second.
(setq show-paren-delay 0)
(show-paren-mode 1)

;;; Turn off the alarm bell.
(setq ring-bell-function 'ignore)

;;; Prevent the cursor from blinking (only affects windowed Emacs).
(blink-cursor-mode 0)

;;;; Elisp customization

;;; This is required to have access to some basic data manipulation
;;; functions, like cl-every. Why aren't these available by default?
(require 'cl-lib)

;;; Add keybindings for jumping to various dotfiles. These all begin
;;; with M-RET and are designed to be mnemonic, as in <M-RET e p r>

;;; Make the installed packages available.
(provide 'radian-packages)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; User-specific configuration (3 of 4)

(radian-load-user-config "init.post.local.el")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Package: Helm (and helm-projectile and helm-smex)

(when (member 'helm radian-packages)

