dot/emacs, el/dot-emacs.el: Gather mode settings together.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 13 Sep 2019 16:21:49 +0000 (17:21 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 13 Sep 2019 18:59:30 +0000 (19:59 +0100)
Not my cleanest patch, but this should just be a bunch of reordering of
stuff with some light formatting.

dot/emacs
el/dot-emacs.el

index 9c6fa6b..a7ac91d 100644 (file)
--- a/dot/emacs
+++ b/dot/emacs
   (tooltip-mode 0)
   (tool-bar-mode 0))
 (trap (or mdw-fast-startup (global-auto-revert-mode t)))
-(setq-default psgml-html-build-new-buffer nil)
 
 (defvar mdw-black-background t)
 
 
 (make-variable-buffer-local 'mdw-auto-indent)
 
-(mapc (lambda (hook) (add-hook hook 'mdw-misc-mode-config))
-      '(c-mode-hook c++-mode-hook objc-mode-hook java-mode-hook
-       csharp-mode-hook perl-mode-hook cperl-mode-hook dylan-mode-hook
-       python-mode-hook pyrec-mode-hook icon-mode-hook awk-mode-hook
-       tcl-mode-hook go-mode-hook js-mode-hook javascript-mode-hook
-       conf-mode-hook m4-mode-hook autoconf-mode-hook autotest-mode-hook
-       a68-mode-hook a68-mode-hooks asm-mode-hook fsharp-mode-hook
-       scala-mode-hook rust-mode-hook TeX-mode-hook LaTeX-mode-hook
-       TeXinfo-mode-hook tex-mode-hook latex-mode-hook
-       texinfo-mode-hook emacs-lisp-mode-hook scheme-mode-hook
-       lisp-mode-hook lisp-interaction-mode-hook makefile-mode-hook
-       inferior-lisp-mode-hook slime-repl-mode-hook ielm-mode-hook
-       sml-mode-hook haskell-mode-hook erlang-mode-hook
-       smalltalk-mode-hook rexx-mode-hook lua-mode-hook
-       arm-assembler-mode-hook))
-
 (global-font-lock-mode t)
 
 ;;;--------------------------------------------------------------------------
       lazy-lock-stealth-lines 100
       lazy-lock-stealth-verbose t)
 
-(progn
-  (add-hook 'c-mode-hook 'mdw-fontify-c-and-c++ t)
-  (add-hook 'objc-mode-hook 'mdw-fontify-c-and-c++ t)
-  (add-hook 'c++-mode-hook 'mdw-fontify-c-and-c++ t)
-  (add-hook 'asm-mode-hook 'mdw-fontify-asm t)
-  (add-hook 'go-mode-hook 'mdw-fontify-go t)
-  (add-hook 'rust-mode-hook 'mdw-fontify-rust t)
-
-  (add-hook 'lua-mode-hook 'mdw-fontify-lua t)
-  (add-hook 'icon-mode-hook 'mdw-fontify-icon t)
-
-  (add-hook 'apcalc-mode-hook 'mdw-misc-mode-config t)
-  (add-hook 'apcalc-mode-hook 'mdw-fontify-apcalc t)
-
-  (add-hook 'java-mode-hook 'mdw-fontify-java t)
-  (add-hook 'scala-mode-hook 'mdw-fontify-scala t)
-  (add-hook 'js-mode-hook 'mdw-fontify-javascript t)
-  (add-hook 'csharp-mode-hook 'mdw-fontify-csharp t)
-  (add-hook 'fsharp-mode-hook 'mdw-fontify-fsharp t)
-  (add-hook 'inferior-fsharp-mode-hooks 'mdw-fontify-inferior-fsharp t)
-
-  (add-hook 'awk-mode-hook 'mdw-fontify-awk t)
-
-  (add-hook 'perl-mode-hook 'mdw-fontify-perl t)
-  (add-hook 'cperl-mode-hook 'mdw-fontify-perl t))
-
-(progn
-  (setq-default py-indent-offset 2
-               python-indent 2
-               python-indent-offset 2
-               py-python-command-args
-               `("-i" "-colors" ,(if mdw-black-background
-                                     "Linux" "LightBG")))
-  (add-hook 'python-mode-hook 'mdw-fontify-python t)
-  (add-hook 'pyrex-mode-hook 'mdw-fontify-pyrex t))
-
-(setq-default tcl-indent-level 2)
-(add-hook 'tcl-mode-hook 'mdw-fontify-tcl t)
-
-(add-hook 'rexx-mode-hook 'mdw-fontify-rexx t)
-
-(setq-default sml-nested-if-indent t
-             sml-case-indent nil
-             sml-indent-level 4
-             sml-type-of-indent nil)
-(add-hook 'sml-mode-hook 'mdw-fontify-sml t)
-
-(add-hook 'haskell-mode-hook 'mdw-fontify-haskell t)
-(setq-default haskell-indent-offset 2)
-
-(add-hook 'erlang-mode-hook 'mdw-fontify-erlang t)
-
-(add-hook 'texinfo-mode-hook 'mdw-fontify-texinfo t)
-(add-hook 'TeXinfo-mode-hook 'mdw-fontify-texinfo t)
-
-(setq-default LaTeX-table-label "tbl:"
-             TeX-auto-untabify nil)
-(add-hook 'TeX-mode-hook 'mdw-fontify-tex t)
-(add-hook 'tex-mode-hook 'mdw-fontify-tex t)
-(add-hook 'LaTeX-mode-hook 'mdw-fontify-tex t)
-(add-hook 'latex-mode-hook 'mdw-fontify-tex t)
-
-(add-hook 'sh-mode-hook #'mdw-setup-sh-script-mode)
-(add-hook 'autoconf-mode-hook #'mdw-setup-m4)
-(add-hook 'autotest-mode-hook #'mdw-setup-m4)
-(add-hook 'm4-mode-hook #'mdw-setup-m4)
-
-(add-hook 'smalltalk-mode-hook 'mdw-fontify-smalltalk t)
-(add-hook 'smalltalk-mode-hook 'mdw-setup-smalltalk t)
-
-(add-hook 'a68-mode-hook 'mdw-fontify-algol-68 t)
-(add-hook 'a68-mode-hooks 'mdw-fontify-algol-68 t)
-(add-hook 'dylan-mode-hook 'mdw-fontify-dylan t)
-
-(progn
-  (add-hook 'emacs-lisp-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'scheme-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'lisp-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'inferior-lisp-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'lisp-interaction-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'ielm-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'slime-repl-mode-hook 'mdw-fontify-lispy t)
-  (add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
-  (add-hook 'inferior-lisp-mode-hook
-         #'(lambda ()
-             (local-set-key "\C-m" 'comint-send-and-indent)) t))
-
-(add-hook 'text-mode-hook 'mdw-text-mode t)
-
-;;;--------------------------------------------------------------------------
-;;; TeX stuff.
-
-(setq TeX-output-view-style
-      '(("^dvi$"
-        ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$")
-        "%(o?)dvips -t landscape %d -o && xdg-open %f")
-       ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$"
-        "%(o?)dvips %d -o && xdg-open %f")
-       ("^dvi$"
-        ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$")
-        "%(o?)xdvi %dS -paper a4r -s 0 %d")
-       ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$"
-        "%(o?)xdvi %dS -paper a4 %d")
-       ("^dvi$"
-        ("^a5\\(?:comb\\|paper\\)$" "^landscape$")
-        "%(o?)xdvi %dS -paper a5r -s 0 %d")
-       ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d")
-       ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d")
-       ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d")
-       ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d")
-       ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d")
-       ("^dvi$" "." "%(o?)xdvi %dS %d")
-       ("^pdf$" "." "xdg-open %o")
-       ("^html?$" "." "sensible-browser %o")))
-
-(setq TeX-view-program-list
-      '(("mupdf" ("mupdf %o" (mode-io-correlate " %(outpage)")))))
-
-(setq TeX-view-program-selection
-      '(((output-dvi style-pstricks) "dvips and gv")
-       (output-dvi "xdvi")
-       (output-pdf "mupdf")
-       (output-html "sensible-browser")))
-
-(setq TeX-open-quote "\""
-      TeX-close-quote "\"")
-
-(setq reftex-use-external-file-finders t
-      reftex-auto-recenter-toc t)
-
-(setq reftex-label-alist
-      '(("theorem" ?T "th:" "~\\ref{%s}" t ("theorems?" "th\\.") -2)
-       ("axiom" ?A "ax:" "~\\ref{%s}" t ("axioms?" "ax\\.") -2)
-       ("definition" ?D "def:" "~\\ref{%s}" t ("definitions?" "def\\.") -2)
-       ("proposition" ?P "prop:" "~\\ref{%s}" t
-        ("propositions?" "prop\\.") -2)
-       ("lemma" ?L "lem:" "~\\ref{%s}" t ("lemmas?" "lem\\.") -2)
-       ("example" ?X "eg:" "~\\ref{%s}" t ("examples?") -2)
-       ("exercise" ?E "ex:" "~\\ref{%s}" t ("exercises?" "ex\\.") -2)
-       ("enumerate" ?i "i:" "~\\ref{%s}" item ("items?"))))
-(setq reftex-section-prefixes
-      '((0 . "part:")
-       (1 . "ch:")
-       (t . "sec:")))
-
-(setq bibtex-field-delimiters 'double-quotes
-      bibtex-align-at-equal-sign t
-      bibtex-entry-format '(realign opts-or-alts required-fields
-                           numerical-fields last-comma delimiters
-                           unify-case sort-fields braces)
-      bibtex-sort-ignore-string-entries nil
-      bibtex-maintain-sorted-entries 'entry-class
-      bibtex-include-OPTkey t
-      bibtex-autokey-names-stretch 1
-      bibtex-autokey-expand-strings t
-      bibtex-autokey-name-separator "-"
-      bibtex-autokey-year-length 4
-      bibtex-autokey-titleword-separator "-"
-      bibtex-autokey-name-year-separator "-"
-      bibtex-autokey-year-title-separator ":")
-
-;;;--------------------------------------------------------------------------
-;;; SLIME setup.
-
-(trap
- (if (not mdw-fast-startup)
-     (progn
-       (require 'slime-autoloads)
-       (slime-setup '(slime-autodoc slime-c-p-c)))))
-
-(let ((stuff '((cmucl ("cmucl"))
-              (sbcl ("sbcl") :coding-system utf-8-unix)
-              (clisp ("clisp") :coding-system utf-8-unix))))
-  (or (boundp 'slime-lisp-implementations)
-      (setq slime-lisp-implementations nil))
-  (while stuff
-    (let* ((head (car stuff))
-          (found (assq (car head) slime-lisp-implementations)))
-      (setq stuff (cdr stuff))
-      (if found
-         (rplacd found (cdr head))
-       (setq slime-lisp-implementations
-             (cons head slime-lisp-implementations))))))
-(setq slime-default-lisp 'sbcl)
+;; Late, for `mdw-black-background'.
+(setq-default py-python-command-args
+             `("-i" "-colors" ,(if mdw-black-background "Linux" "LightBG")))
 
 ;;;--------------------------------------------------------------------------
 ;;; Blogging.
index 83e3891..cb19d10 100644 (file)
@@ -2158,6 +2158,10 @@ name, as a symbol."
   "Major mode for editing Sod code.")
 (push '("\\.sod$" . sod-mode) auto-mode-alist)
 
+(dolist (hook '(c-mode-hook objc-mode-hook c++-mode-hook))
+  (add-hook hook 'mdw-misc-mode-config t)
+  (add-hook hook 'mdw-fontify-c-and-c++ t))
+
 ;;;--------------------------------------------------------------------------
 ;;; AP calc mode.
 
@@ -2203,6 +2207,10 @@ name, as a symbol."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'apcalc-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'apcalc-mode-hook 'mdw-fontify-apcalc t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Java programming configuration.
 
@@ -2279,6 +2287,10 @@ name, as a symbol."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'java-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'java-mode-hook 'mdw-fontify-java t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Javascript programming configuration.
 
@@ -2334,6 +2346,10 @@ name, as a symbol."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'js-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'js-mode-hook 'mdw-fontify-javascript t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Scala programming configuration.
 
@@ -2403,6 +2419,10 @@ name, as a symbol."
                 '(1 "\"")
                 '(4 "\""))))))
 
+(progn
+  (add-hook 'scala-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'scala-mode-hook 'mdw-fontify-scala t))
+
 ;;;--------------------------------------------------------------------------
 ;;; C# programming configuration.
 
@@ -2474,6 +2494,8 @@ name, as a symbol."
 (define-derived-mode csharp-mode java-mode "C#"
   "Major mode for editing C# code.")
 
+(add-hook 'csharp-mode-hook 'mdw-fontify-csharp t)
+
 ;;;--------------------------------------------------------------------------
 ;;; F# programming configuration.
 
@@ -2593,6 +2615,11 @@ name, as a symbol."
                      (list "^>" '(0 font-lock-keyword-face)))
                font-lock-keywords)))
 
+(progn
+  (add-hook 'fsharp-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'fsharp-mode-hook 'mdw-fontify-fsharp t)
+  (add-hook 'inferior-fsharp-mode-hooks 'mdw-fontify-inferior-fsharp t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Go programming configuration.
 
@@ -2654,6 +2681,9 @@ name, as a symbol."
           ;; And anything else is punctuation.
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
+(progn
+  (add-hook 'go-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'go-mode-hook 'mdw-fontify-go t))
 
 ;;;--------------------------------------------------------------------------
 ;;; Rust programming configuration.
@@ -2734,6 +2764,10 @@ name, as a symbol."
   (local-set-key [?{] 'mdw-self-insert-and-indent)
   (local-set-key [?}] 'mdw-self-insert-and-indent))
 
+(progn
+  (add-hook 'rust-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'rust-mode-hook 'mdw-fontify-rust t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Awk programming configuration.
 
@@ -2790,6 +2824,10 @@ name, as a symbol."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'awk-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'awk-mode-hook 'mdw-fontify-awk t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Perl programming style.
 
@@ -2867,9 +2905,18 @@ strip numbers instead."
       (if (re-search-forward "\\(tests\\s-*=>\\s-*\\)\\w*" nil t)
          (replace-match (format "\\1%d" i))))))
 
+(dolist (hook '(perl-mode-hook cperl-mode-hook))
+  (add-hook hook 'mdw-misc-mode-config t)
+  (add-hook hook 'mdw-fontify-perl t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Python programming style.
 
+(setq-default py-indent-offset 2
+             python-indent 2
+             python-indent-offset 2
+             python-fill-docstring-style 'symmetric)
+
 (defun mdw-fontify-pythonic (keywords)
 
   ;; Miscellaneous fiddling.
@@ -2922,6 +2969,11 @@ strip numbers instead."
                ("\\.pxi$" . pyrex-mode))
              auto-mode-alist))
 
+(progn
+  (add-hook 'python-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'python-mode-hook 'mdw-fontify-python t)
+  (add-hook 'pyrex-mode-hook 'mdw-fontify-pyrex t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Lua programming style.
 
@@ -2965,6 +3017,10 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'lua-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'lua-mode-hook 'mdw-fontify-lua t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Icon programming style.
 
@@ -3020,6 +3076,10 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'icon-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'icon-mode-hook 'mdw-fontify-icon t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Assembler mode.
 
@@ -3043,9 +3103,15 @@ strip numbers instead."
 (add-hook 'asm-mode-local-variables-hook 'mdw-asm-set-comment)
 (put 'asm-comment-char 'safe-local-variable 'characterp)
 
+(progn
+  (add-hook 'asm-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'asm-mode-hook 'mdw-fontify-asm t))
+
 ;;;--------------------------------------------------------------------------
 ;;; TCL configuration.
 
+(setq-default tcl-indent-level 2)
+
 (defun mdw-fontify-tcl ()
   (dolist (ch '(?$))
     (modify-syntax-entry ch "."))
@@ -3060,6 +3126,10 @@ strip numbers instead."
         (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
               '(0 mdw-punct-face)))))
 
+(progn
+  (add-hook 'tcl-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'tcl-mode-hook 'mdw-fontify-tcl t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Dylan programming configuration.
 
@@ -3126,6 +3196,10 @@ strip numbers instead."
                              "\\)")
                      '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'dylan-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'dylan-mode-hook 'mdw-fontify-dylan t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Algol 68 configuration.
 
@@ -3168,6 +3242,10 @@ strip numbers instead."
                (list "\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/"
                      '(0 mdw-punct-face))))))
 
+(dolist (hook '(a68-mode-hook a68-mode-hooks))
+  (add-hook hook 'mdw-misc-mode-config t)
+  (add-hook hook 'mdw-fontify-algol-68 t))
+
 ;;;--------------------------------------------------------------------------
 ;;; REXX configuration.
 
@@ -3241,9 +3319,18 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'rexx-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'rexx-mode-hook 'mdw-fontify-rexx t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Standard ML programming style.
 
+(setq-default sml-nested-if-indent t
+             sml-case-indent nil
+             sml-indent-level 4
+             sml-type-of-indent nil)
+
 (defun mdw-fontify-sml ()
 
   ;; Make underscore an honorary letter.
@@ -3291,9 +3378,15 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'sml-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'sml-mode-hook 'mdw-fontify-sml t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Haskell configuration.
 
+(setq-default haskell-indent-offset 2)
+
 (defun mdw-fontify-haskell ()
 
   ;; Fiddle with syntax table to get comments right.
@@ -3369,6 +3462,10 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'haskell-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'haskell-mode-hook 'mdw-fontify-haskell t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Erlang configuration.
 
@@ -3402,6 +3499,10 @@ strip numbers instead."
           (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                 '(0 mdw-punct-face))))))
 
+(progn
+  (add-hook 'erlang-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'erlang-mode-hook 'mdw-fontify-erlang t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Texinfo configuration.
 
@@ -3436,9 +3537,18 @@ strip numbers instead."
         (list "[{}]+"
               '(0 mdw-punct-face)))))
 
+(dolist (hook '(texinfo-mode-hook TeXinfo-mode-hook))
+  (add-hook hook 'mdw-misc-mode-config t)
+  (add-hook hook 'mdw-fontify-texinfo t))
+
 ;;;--------------------------------------------------------------------------
 ;;; TeX and LaTeX configuration.
 
+(setq-default LaTeX-table-label "tbl:"
+             TeX-auto-untabify nil
+             LaTeX-syntactic-comments nil
+             LaTeX-fill-break-at-separators '(\\\[))
+
 (defun mdw-fontify-tex ()
   (setq ispell-parser 'tex)
   (turn-on-reftex)
@@ -3527,10 +3637,81 @@ strip numbers instead."
           (unless modified
             (restore-buffer-modified-p nil)))))))
 
-(setq-default LaTeX-syntactic-comments nil
-             LaTeX-fill-break-at-separators '(\\\[))
-
-(add-hook 'bibtex-mode-hook (lambda () (setq fill-column 76)))
+(setq TeX-output-view-style
+      '(("^dvi$"
+        ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$")
+        "%(o?)dvips -t landscape %d -o && xdg-open %f")
+       ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$"
+        "%(o?)dvips %d -o && xdg-open %f")
+       ("^dvi$"
+        ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$")
+        "%(o?)xdvi %dS -paper a4r -s 0 %d")
+       ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$"
+        "%(o?)xdvi %dS -paper a4 %d")
+       ("^dvi$"
+        ("^a5\\(?:comb\\|paper\\)$" "^landscape$")
+        "%(o?)xdvi %dS -paper a5r -s 0 %d")
+       ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d")
+       ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d")
+       ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d")
+       ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d")
+       ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d")
+       ("^dvi$" "." "%(o?)xdvi %dS %d")
+       ("^pdf$" "." "xdg-open %o")
+       ("^html?$" "." "sensible-browser %o")))
+
+(setq TeX-view-program-list
+      '(("mupdf" ("mupdf %o" (mode-io-correlate " %(outpage)")))))
+
+(setq TeX-view-program-selection
+      '(((output-dvi style-pstricks) "dvips and gv")
+       (output-dvi "xdvi")
+       (output-pdf "mupdf")
+       (output-html "sensible-browser")))
+
+(setq TeX-open-quote "\""
+      TeX-close-quote "\"")
+
+(setq reftex-use-external-file-finders t
+      reftex-auto-recenter-toc t)
+
+(setq reftex-label-alist
+      '(("theorem" ?T "th:" "~\\ref{%s}" t ("theorems?" "th\\.") -2)
+       ("axiom" ?A "ax:" "~\\ref{%s}" t ("axioms?" "ax\\.") -2)
+       ("definition" ?D "def:" "~\\ref{%s}" t ("definitions?" "def\\.") -2)
+       ("proposition" ?P "prop:" "~\\ref{%s}" t
+        ("propositions?" "prop\\.") -2)
+       ("lemma" ?L "lem:" "~\\ref{%s}" t ("lemmas?" "lem\\.") -2)
+       ("example" ?X "eg:" "~\\ref{%s}" t ("examples?") -2)
+       ("exercise" ?E "ex:" "~\\ref{%s}" t ("exercises?" "ex\\.") -2)
+       ("enumerate" ?i "i:" "~\\ref{%s}" item ("items?"))))
+(setq reftex-section-prefixes
+      '((0 . "part:")
+       (1 . "ch:")
+       (t . "sec:")))
+
+(setq bibtex-field-delimiters 'double-quotes
+      bibtex-align-at-equal-sign t
+      bibtex-entry-format '(realign opts-or-alts required-fields
+                           numerical-fields last-comma delimiters
+                           unify-case sort-fields braces)
+      bibtex-sort-ignore-string-entries nil
+      bibtex-maintain-sorted-entries 'entry-class
+      bibtex-include-OPTkey t
+      bibtex-autokey-names-stretch 1
+      bibtex-autokey-expand-strings t
+      bibtex-autokey-name-separator "-"
+      bibtex-autokey-year-length 4
+      bibtex-autokey-titleword-separator "-"
+      bibtex-autokey-name-year-separator "-"
+      bibtex-autokey-year-title-separator ":")
+
+(progn
+  (dolist (hook '(tex-mode-hook latex-mode-hook
+                               TeX-mode-hook LaTeX-mode-hook))
+    (add-hook hook 'mdw-misc-mode-config t)
+    (add-hook hook 'mdw-fontify-tex t))
+  (add-hook 'bibtex-mode-hook (lambda () (setq fill-column 76))))
 
 ;;;--------------------------------------------------------------------------
 ;;; HTML, CSS, and other web foolishness.
@@ -3540,6 +3721,8 @@ strip numbers instead."
 ;;;--------------------------------------------------------------------------
 ;;; SGML hacking.
 
+(setq-default psgml-html-build-new-buffer nil)
+
 (defun mdw-sgml-mode ()
   (interactive)
   (sgml-mode)
@@ -3590,7 +3773,10 @@ that character only to be normal punctuation.")
               (modify-syntax-entry ch "." table))
             (set-syntax-table table)
             (and font-lock-mode (font-lock-fontify-buffer)))))))
-(add-hook 'conf-mode-local-variables-hook 'mdw-fix-up-quote t t)
+
+(progn
+  (add-hook 'conf-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'conf-mode-local-variables-hook 'mdw-fix-up-quote t t))
 
 ;;;--------------------------------------------------------------------------
 ;;; Shell scripts.
@@ -3660,6 +3846,10 @@ that character only to be normal punctuation.")
                 (cons (cons 'rc frag)
                       sh-mode-syntax-table-input))))))
 
+(progn
+  (add-hook 'sh-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'sh-mode-hook 'mdw-setup-sh-script-mode t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Emacs shell mode.
 
@@ -3783,9 +3973,11 @@ that character only to be normal punctuation.")
                  messages-mode-keywords)))
   (run-hooks 'cpp-messages-mode-hook))
 
-(add-hook 'messages-mode-hook 'mdw-misc-mode-config t)
-(add-hook 'cpp-messages-mode-hook 'mdw-misc-mode-config t)
-; (add-hook 'messages-file-hook 'mdw-fontify-messages t)
+(progn
+  (add-hook 'messages-mode-hook 'mdw-misc-mode-config t)
+  (add-hook 'cpp-messages-mode-hook 'mdw-misc-mode-config t)
+  ;; (add-hook 'messages-file-hook 'mdw-fontify-messages t)
+  )
 
 ;;;--------------------------------------------------------------------------
 ;;; Messages-file mode.
@@ -3833,7 +4025,8 @@ that character only to be normal punctuation.")
   (setq comment-end "")
   (run-hooks 'mallow-driver-mode-hook))
 
-(add-hook 'mallow-driver-hook 'mdw-misc-mode-config t)
+(progn
+  (add-hook 'mallow-driver-hook 'mdw-misc-mode-config t))
 
 ;;;--------------------------------------------------------------------------
 ;;; NFast debugs.
@@ -3943,6 +4136,45 @@ that character only to be normal punctuation.")
              (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
                    '(0 mdw-punct-face)))))
 
+;; SLIME setup.
+
+(trap
+ (if (not mdw-fast-startup)
+     (progn
+       (require 'slime-autoloads)
+       (slime-setup '(slime-autodoc slime-c-p-c)))))
+
+(let ((stuff '((cmucl ("cmucl"))
+              (sbcl ("sbcl") :coding-system utf-8-unix)
+              (clisp ("clisp") :coding-system utf-8-unix))))
+  (or (boundp 'slime-lisp-implementations)
+      (setq slime-lisp-implementations nil))
+  (while stuff
+    (let* ((head (car stuff))
+          (found (assq (car head) slime-lisp-implementations)))
+      (setq stuff (cdr stuff))
+      (if found
+         (rplacd found (cdr head))
+       (setq slime-lisp-implementations
+             (cons head slime-lisp-implementations))))))
+(setq slime-default-lisp 'sbcl)
+
+;; Hooks.
+
+(progn
+  (dolist (hook '(emacs-lisp-mode-hook
+                 scheme-mode-hook
+                 lisp-mode-hook
+                 inferior-lisp-mode-hook
+                 lisp-interaction-mode-hook
+                 ielm-mode-hook
+                 slime-repl-mode-hook))
+    (add-hook hook 'mdw-misc-mode-config t)
+    (add-hook hook 'mdw-fontify-lispy t))
+  (add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
+  (add-hook 'inferior-lisp-mode-hook
+           #'(lambda () (local-set-key "\C-m" 'comint-send-and-indent)) t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Other languages.
 
@@ -3968,6 +4200,10 @@ that character only to be normal punctuation.")
         (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
               '(0 mdw-punct-face)))))
 
+(progn
+  (add-hook 'smalltalk-mode 'mdw-misc-mode-config t)
+  (add-hook 'smalltalk-mode 'mdw-fontify-smalltalk t))
+
 ;; m4.
 
 (defun mdw-setup-m4 ()
@@ -3980,6 +4216,15 @@ that character only to be normal punctuation.")
   ;; Fill prefix.
   (mdw-standard-fill-prefix "\\([ \t]*\\(?:#+\\|\\<dnl\\>\\)[ \t]*\\)"))
 
+(dolist (hook '(m4-mode-hook autoconf-mode-hook autotest-mode-hook))
+  (add-hook hook #'mdw-misc-mode-config t)
+  (add-hook hook #'mdw-setup-m4 t))
+
+;; Make.
+
+(progn
+  (add-hook 'makefile-mode-hook 'mdw-misc-mode-config t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Text mode.
 
@@ -3993,6 +4238,9 @@ that character only to be normal punctuation.")
 (eval-after-load "flyspell"
   '(define-key flyspell-mode-map "\C-\M-i" nil))
 
+(progn
+  (add-hook 'text-mode-hook 'mdw-text-mode t))
+
 ;;;--------------------------------------------------------------------------
 ;;; Outline and hide/show modes.