        (top-or-bottom . bottom)
        (top-or-bottom-pos . 0)))))
 
+(use-package files
+  :demand t
+  :init
+  (setq auto-save-default      nil
+        backup-directory-alist `(("." . "~/.backup"))
+        backup-by-copying      t
+        create-lockfiles       nil
+        delete-old-versions    t
+        kept-new-versions      6
+        kept-old-versions      2
+        require-final-newline  t
+        version-control        t)
+
+  ;; From `buffer.c'.
+  (setq-default auto-fill-function 'do-auto-fill)
+  (setq-default tab-width 2)
+  ;; From `indent.c'.
+  (setq-default indent-tabs-mode nil))
+
+(use-package frame
+  :demand t
+  :init
+  (setq blink-cursor-mode nil)
+  ;; Actually part of window.el but window.el does not provide 'window.
+  (setq recenter-positions '(0.25)))
+
 (use-package fringe
   :demand t :config (fringe-mode '(0 . nil)))
 

  ;; TODO: Don't automatically scroll down on new message.
  ;; TODO: Comment color non-messages (people joining/quiting).
  ;; TODO: Urgency hint and highlight on nick mentions.
  )

(use-package ibuffer

  :init
  ;; Enables `gj` and `gk` and co to move up and down visually wrapped lines.
  (setq line-move-visual nil)
  ;; These get disabled for whatever reason.
  (setq-default visual-line-fringe-indicators t)
  :config
  ;; Visually wrap long lines at right window edge.
  (global-visual-line-mode t))

(use-package vc-hooks
  :demand t
  :init (setq vc-follow-symlinks t))

(use-package whitespace
  :demand t
