dot-emacs.el: Insert missing blank line before section header.
[profile] / dot-emacs.el
index fbb8e06..3311867 100644 (file)
@@ -85,6 +85,17 @@ This may be at the expense of cool features.")
                    (concat "(" (buffer-string) ")")))))))
   (cdr (assq sym mdw-config)))
 
+;; --- Set up the load path convincingly ---
+
+(dolist (dir (append (and (boundp 'debian-emacs-flavor)
+                         (list (concat "/usr/share/"
+                                       (symbol-name debian-emacs-flavor)
+                                       "/site-lisp")))))
+  (dolist (sub (directory-files dir t))
+    (when (and (file-accessible-directory-p sub)
+              (not (member sub load-path)))
+      (setq load-path (nconc load-path (list sub))))))
+
 ;; --- Is an Emacs library available? ---
 
 (defun library-exists-p (name)
@@ -177,6 +188,78 @@ symbols `sunday', `monday', etc. (or a mixture).  If the date stored in
                                (nth 2 when))))))))
     (eq w d)))
 
+;;;----- Mail and news hacking ----------------------------------------------
+
+(define-derived-mode  mdwmail-mode mail-mode "[mdw] mail"
+  "Major mode for editing news and mail messages from external programs
+Not much right now.  Just support for doing MailCrypt stuff."
+  :syntax-table nil
+  :abbrev-table nil
+  (run-hooks 'mail-setup-hook))
+
+(define-key mdwmail-mode-map [?\C-c ?\C-c] 'disabled-operation)
+
+(add-hook 'mdwail-mode-hook
+         (lambda ()
+           (set-buffer-file-coding-system 'utf-8)
+           (make-local-variable 'paragraph-separate)
+           (make-local-variable 'paragraph-start)
+           (setq paragraph-start
+                 (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
+                         paragraph-start))
+           (setq paragraph-separate
+                 (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
+                         paragraph-separate))))
+
+;; --- How to encrypt in mdwmail ---
+
+(defun mdwmail-mc-encrypt (&optional recip scm start end from sign)
+  (or start
+      (setq start (save-excursion
+                   (goto-char (point-min))
+                   (or (search-forward "\n\n" nil t) (point-min)))))
+  (or end
+      (setq end (point-max)))
+  (mc-encrypt-generic recip scm start end from sign))
+
+;; --- How to sign in mdwmail ---
+
+(defun mdwmail-mc-sign (key scm start end uclr)
+  (or start
+      (setq start (save-excursion
+                   (goto-char (point-min))
+                   (or (search-forward "\n\n" nil t) (point-min)))))
+  (or end
+      (setq end (point-max)))
+  (mc-sign-generic key scm start end uclr))
+
+;; --- Some signature mangling ---
+
+(defun mdwmail-mangle-signature ()
+  (save-excursion
+    (goto-char (point-min))
+    (perform-replace "\n-- \n" "\n-- " nil nil nil)))
+(add-hook 'mail-setup-hook 'mdwmail-mangle-signature)
+(add-hook 'message-setup-hook 'mdwmail-mangle-signature)
+
+;; --- Insert my login name into message-ids, so I can score replies ---
+
+(defadvice message-unique-id (after mdw-user-name last activate compile)
+  "Ensure that the user's name appears at the end of the message-id string,
+so that it can be used for convenient filtering."
+  (setq ad-return-value (concat ad-return-value "." (user-login-name))))
+
+;; --- Tell my movemail hack where movemail is ---
+;;
+;; This is needed to shup up warnings about LD_PRELOAD.
+
+(let ((path exec-path))
+  (while path
+    (let ((try (expand-file-name "movemail" (car path))))
+      (if (file-executable-p try)
+         (setenv "REAL_MOVEMAIL" try))
+      (setq path (cdr path)))))
+
 ;;;----- Utility functions --------------------------------------------------
 
 (or (fboundp 'line-number-at-pos)
@@ -313,57 +396,6 @@ get itself into a twist."
 (defadvice write-file (after mdw-autorevert activate)
   (mdw-check-autorevert))
 
-(define-derived-mode  mdwmail-mode mail-mode "[mdw] mail"
-  "Major mode for editing news and mail messages from external programs
-Not much right now.  Just support for doing MailCrypt stuff."
-  :syntax-table nil
-  :abbrev-table nil
-  (run-hooks 'mail-setup-hook))
-
-(define-key mdwmail-mode-map [?\C-c ?\C-c] 'disabled-operation)
-
-(add-hook 'mdwail-mode-hook
-         (lambda ()
-           (set-buffer-file-coding-system 'utf-8)
-           (make-local-variable 'paragraph-separate)
-           (make-local-variable 'paragraph-start)
-           (setq paragraph-start
-                 (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
-                         paragraph-start))
-           (setq paragraph-separate
-                 (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
-                         paragraph-separate))))
-
-;; --- How to encrypt in mdwmail ---
-
-(defun mdwmail-mc-encrypt (&optional recip scm start end from sign)
-  (or start
-      (setq start (save-excursion
-                   (goto-char (point-min))
-                   (or (search-forward "\n\n" nil t) (point-min)))))
-  (or end
-      (setq end (point-max)))
-  (mc-encrypt-generic recip scm start end from sign))
-
-;; --- How to sign in mdwmail ---
-
-(defun mdwmail-mc-sign (key scm start end uclr)
-  (or start
-      (setq start (save-excursion
-                   (goto-char (point-min))
-                   (or (search-forward "\n\n" nil t) (point-min)))))
-  (or end
-      (setq end (point-max)))
-  (mc-sign-generic key scm start end uclr))
-
-;; --- Some signature mangling ---
-
-(defun mdwmail-mangle-signature ()
-  (save-excursion
-    (goto-char (point-min))
-    (perform-replace "\n-- \n" "\n-- " nil nil nil)))
-(add-hook 'mail-setup-hook 'mdwmail-mangle-signature)
-
 ;;;----- Dired hacking ------------------------------------------------------
 
 (defadvice dired-maybe-insert-subdir
@@ -565,9 +597,15 @@ doesn't cope with anything approximating a complicated case."
   (auto-fill-mode 1)
   (setq fill-column 77)
   (setq show-trailing-whitespace t)
+  (and (fboundp 'gtags-mode)
+       (gtags-mode))
   (outline-minor-mode t)
   (mdw-set-font))
 
+(eval-after-load 'gtags
+  '(dolist (key '([mouse-2] [mouse-3]))
+     (define-key gtags-mode-map key nil)))
+
 ;; --- Set up all sorts of faces ---
 
 (defvar mdw-set-font nil)
@@ -726,8 +764,10 @@ the regular expressions in `mdw-backup-disable-regexps'."
 
 ;; --- Make C indentation nice ---
 
-(define-key c-mode-map "*" nil)
-(define-key c-mode-map "/" nil)
+(eval-after-load "cc-mode"
+  '(progn
+     (define-key c-mode-map "*" nil)
+     (define-key c-mode-map "/" nil)))
 
 (defun mdw-c-style ()
   (c-add-style "[mdw] C and C++ style"
@@ -1668,6 +1708,7 @@ strip numbers instead."
 
 (defun mdw-fontify-tex ()
   (setq ispell-parser 'tex)
+  (turn-on-reftex)
 
   ;; --- Don't make maths into a string ---
 
@@ -1794,7 +1835,7 @@ strip numbers instead."
 
 ;;;----- Messages-file mode -------------------------------------------------
 
-(defun message-mode-guts ()
+(defun messages-mode-guts ()
   (setq messages-mode-syntax-table (make-syntax-table))
   (set-syntax-table messages-mode-syntax-table)
   (modify-syntax-entry ?0 "w" messages-mode-syntax-table)
@@ -1813,7 +1854,7 @@ strip numbers instead."
   (setq indent-line-function 'indent-relative)
   (mdw-standard-fill-prefix "\\([ \t]*\\(;\\|/?\\*\\)+[ \t]*\\)")
   (make-local-variable 'font-lock-defaults)
-  (make-local-variable 'message-mode-keywords)
+  (make-local-variable 'messages-mode-keywords)
   (let ((keywords
         (mdw-regexps "array" "bitmap" "callback" "docs[ \t]+enum"
                      "export" "enum" "fixed-octetstring" "flags"
@@ -1822,7 +1863,7 @@ strip numbers instead."
                      "primitive-nullfree" "relaxed[ \t]+enum"
                      "set" "table" "tagged-optional"   "union"
                      "variadic" "vector" "version" "version-tag")))
-    (setq message-mode-keywords
+    (setq messages-mode-keywords
          (list
           (list (concat "\\<\\(" keywords "\\)\\>:")
                 '(0 font-lock-keyword-face))
@@ -1833,7 +1874,7 @@ strip numbers instead."
           '("\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
             (0 mdw-punct-face)))))
   (setq font-lock-defaults
-       '(message-mode-keywords nil nil nil nil))
+       '(messages-mode-keywords nil nil nil nil))
   (run-hooks 'messages-file-hook))
 
 (defun messages-mode ()
@@ -1841,7 +1882,7 @@ strip numbers instead."
   (fundamental-mode)
   (setq major-mode 'messages-mode)
   (setq mode-name "Messages")
-  (message-mode-guts)
+  (messages-mode-guts)
   (modify-syntax-entry ?# "<" messages-mode-syntax-table)
   (modify-syntax-entry ?\n ">" messages-mode-syntax-table)
   (setq comment-start "# ")
@@ -1854,7 +1895,7 @@ strip numbers instead."
   (fundamental-mode)
   (setq major-mode 'cpp-messages-mode)
   (setq mode-name "CPP Messages")
-  (message-mode-guts)
+  (messages-mode-guts)
   (modify-syntax-entry ?* ". 23" messages-mode-syntax-table)
   (modify-syntax-entry ?/ ". 14" messages-mode-syntax-table)
   (setq comment-start "/* ")
@@ -1863,7 +1904,7 @@ strip numbers instead."
         (mdw-regexps "assert" "define" "elif" "else" "endif" "error"
                      "ident" "if" "ifdef" "ifndef" "import" "include"
                      "line" "pragma" "unassert" "undef" "warning")))
-    (setq message-mode-keywords
+    (setq messages-mode-keywords
          (append (list (list (concat "^[ \t]*\\#[ \t]*"
                                      "\\(include\\|import\\)"
                                      "[ \t]*\\(<[^>]+\\(>\\|\\)\\)")
@@ -1872,7 +1913,7 @@ strip numbers instead."
                                      preprocessor-keywords
                                      "\\)\\>\\|[0-9]+\\|$\\)\\)")
                              '(1 font-lock-keyword-face)))
-                 message-mode-keywords)))
+                 messages-mode-keywords)))
   (turn-on-font-lock-if-enabled)
   (run-hooks 'cpp-messages-mode-hook))
 
@@ -2012,6 +2053,10 @@ strip numbers instead."
   (make-variable-buffer-local 'lisp-indent-function)
   (setq lisp-indent-function 'common-lisp-indent-function))
 
+(setq lisp-simple-loop-indentation 1
+      lisp-loop-keyword-indentation 6
+      lisp-loop-forms-indentation 6)
+
 (defun mdw-fontify-lispy ()
 
   ;; --- Set fill prefix ---