(nth 2 when))))))))
(eq w d)))
+;; --- Fighting with Org-mode's evil key maps ---
+
+(defvar mdw-evil-keymap-keys
+ '(([S-up] . [?\C-c up])
+ ([S-down] . [?\C-c down])
+ ([S-left] . [?\C-c left])
+ ([S-right] . [?\C-c right])
+ (([M-up] [?\e up]) . [C-up])
+ (([M-down] [?\e down]) . [C-down])
+ (([M-left] [?\e left]) . [C-left])
+ (([M-right] [?\e right]) . [C-right]))
+ "Defines evil keybindings to clobber in `mdw-clobber-evil-keymap'.
+The value is an alist mapping evil keys (as a list, or singleton)
+to good keys (in the same form).")
+
+(defun mdw-clobber-evil-keymap (keymap)
+ "Replace evil key bindings in the KEYMAP.
+Evil key bindings are defined in `mdw-evil-keymap-keys'."
+ (dolist (entry mdw-evil-keymap-keys)
+ (let ((binding nil)
+ (keys (if (listp (car entry))
+ (car entry)
+ (list (car entry))))
+ (replacements (if (listp (cdr entry))
+ (cdr entry)
+ (list (cdr entry)))))
+ (catch 'found
+ (dolist (key keys)
+ (setq binding (lookup-key keymap key))
+ (when binding
+ (throw 'found nil))))
+ (when binding
+ (dolist (key keys)
+ (define-key keymap key nil))
+ (dolist (key replacements)
+ (define-key keymap key binding))))))
+
+;;;----- 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)
(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
;;;----- 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)
(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"
"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))
'("\\(\\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 ()
(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 "# ")
(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 "/* ")
(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]*\\(<[^>]+\\(>\\|\\)\\)")
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))
(make-variable-buffer-local 'lisp-indent-function)
(setq lisp-indent-function 'common-lisp-indent-function))
+(setq lisp-simple-loop-indentation 2
+ lisp-loop-keyword-indentation 6
+ lisp-loop-forms-indentation 6)
+
(defun mdw-fontify-lispy ()
;; --- Set fill prefix ---