;;; along with this program; if not, write to the Free Software Foundation,
;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+;;;----- Check command-line -------------------------------------------------
+
+(defvar mdw-fast-startup nil
+ "Whether .emacs should optimize for rapid startup.
+This may be at the expense of cool features.")
+(let ((probe nil) (next command-line-args))
+ (message "probe = %s" probe)
+ (message "next = %s" next)
+ (while next
+ (cond ((string= (car next) "--mdw-fast-startup")
+ (setq mdw-fast-startup t)
+ (if probe
+ (rplacd probe (cdr next))
+ (setq command-line-args (cdr next))))
+ (t
+ (setq probe next)))
+ (setq next (cdr next))))
+
;;;----- Some general utilities ---------------------------------------------
+(evan-when-compile (or (fboundp 'make-regexp)
+ (load "make-regexp")))
+
+(defmacro mdw-regexps (&rest list)
+ "Turn a LIST of strings into a single regular expression at compile-time."
+ (make-regexp list))
+
;; --- Some error trapping ---
;;
;; If individual bits of this file go tits-up, we don't particularly want
(insert "\nNP: ")
(insert-file np-file)))))
-(trap
- (require 'tramp)
- (require 'autorevert)
- (defun mdw-check-autorevert ()
- (if (and (buffer-file-name)
- (tramp-tramp-file-p (buffer-file-name)))
- (unless global-auto-revert-ignore-buffer
- (setq global-auto-revert-ignore-buffer 'tramp))
- (if (eq global-auto-revert-ignore-buffer 'tramp)
- (setq global-auto-revert-ignore-buffer nil))))
- (defadvice find-file (after mdw-autorevert activate)
- (mdw-check-autorevert))
- (defadvice write-file (after mdw-autorevert activate)
- (mdw-check-autorevert)))
+(defun mdw-check-autorevert ()
+ "Sets global-auto-revert-ignore-buffer appropriately for this buffer,
+taking into consideration whether it's been found using tramp, which seems to
+get itself into a twist."
+ (cond ((and (buffer-file-name)
+ (tramp-tramp-file-p (buffer-file-name)))
+ (unless global-auto-revert-ignore-buffer
+ (setq global-auto-revert-ignore-buffer 'tramp)))
+ ((eq global-auto-revert-ignore-buffer 'tramp)
+ (setq global-auto-revert-ignore-buffer nil))))
+
+(defadvice find-file (after mdw-autorevert activate)
+ (mdw-check-autorevert))
+(defadvice write-file (after mdw-autorevert activate)
+ (mdw-check-autorevert)))
(defun mdwmail-mode ()
"Major mode for editing news and mail messages from external programs
(mdw-number-face :foreground "yellow")
(font-lock-function-name-face :weight bold)
(font-lock-variable-name-face :slant italic)
+ (font-lock-comment-delimiter-face
+ :foreground ,(if window-system "SeaGreen1" "green")
+ :slant italic)
(font-lock-comment-face
:foreground ,(if window-system "SeaGreen1" "green")
:slant italic)
(font-lock-reference-face :weight bold)
(woman-bold-face :weight bold)
(woman-italic-face :slant italic)
- (diff-header-face :foreground "skyblue1")
- (diff-index-face :weight bold)
- (diff-file-header-face)
- (diff-context-face :foreground "grey70")
- (diff-added-face :foreground "white")
- (diff-removed-face :foreground "white" :slant italic)
+ (diff-index :weight bold)
+ (diff-file-header :weight bold)
+ (diff-hunk-header :foreground "SkyBlue1")
+ (diff-function :foreground "SkyBlue1" :weight bold)
+ (diff-header :background "grey10")
+ (diff-added :foreground "green")
+ (diff-removed :foreground "red")
+ (diff-context)
(whizzy-slice-face :background "grey10")
(whizzy-error-face :background "darkred")
(trailing-whitespace :background "red")
(label . 0)
(case-label . +)
(access-label . -)
- (inclass . ++)
+ (inclass . +)
(inline-open . ++)
(statement-cont . 0)
(statement-case-intro . +)))
(make-local-variable 'font-lock-keywords)
(let ((c-keywords
- (make-regexp '(
+ (mdw-regexps '(
"and" ;C++
"and_eq" ;C++
"asm" ;K&R, GCC
"__volatile__" ;GCC
)))
(preprocessor-keywords
- (make-regexp '("assert" "define" "elif" "else" "endif" "error"
+ (mdw-regexps '("assert" "define" "elif" "else" "endif" "error"
"ident" "if" "ifdef" "ifndef" "import" "include"
"line" "pragma" "unassert" "undef" "warning")))
(objc-keywords
- (make-regexp '("class" "defs" "encode" "end" "implementation"
+ (mdw-regexps '("class" "defs" "encode" "end" "implementation"
"interface" "private" "protected" "protocol" "public"
"selector"))))
(make-local-variable 'font-lock-keywords)
(let ((c-keywords
- (make-regexp '("break" "case" "cd" "continue" "define" "default"
+ (mdw-regexps '("break" "case" "cd" "continue" "define" "default"
"do" "else" "exit" "for" "global" "goto" "help" "if"
"local" "mat" "obj" "print" "quit" "read" "return"
"show" "static" "switch" "while" "write"))))
(make-local-variable 'font-lock-keywords)
(let ((java-keywords
- (make-regexp '("abstract" "boolean" "break" "byte" "case" "catch"
+ (mdw-regexps '("abstract" "boolean" "break" "byte" "case" "catch"
"char" "class" "const" "continue" "default" "do"
"double" "else" "extends" "final" "finally" "float"
"for" "goto" "if" "implements" "import" "instanceof"
(make-local-variable 'font-lock-keywords)
(let ((csharp-keywords
- (make-regexp '("abstract" "as" "base" "bool" "break"
+ (mdw-regexps '("abstract" "as" "base" "bool" "break"
"byte" "case" "catch" "char" "checked"
"class" "const" "continue" "decimal" "default"
"delegate" "do" "double" "else" "enum"
(make-local-variable 'font-lock-keywords)
(let ((c-keywords
- (make-regexp '("BEGIN" "END" "ARGC" "ARGIND" "ARGV" "CONVFMT"
+ (mdw-regexps '("BEGIN" "END" "ARGC" "ARGIND" "ARGV" "CONVFMT"
"ENVIRON" "ERRNO" "FIELDWIDTHS" "FILENAME" "FNR"
"FS" "IGNORECASE" "NF" "NR" "OFMT" "OFS" "ORS" "RS"
"RSTART" "RLENGTH" "RT" "SUBSEP"
(make-local-variable 'font-lock-keywords)
(let ((perl-keywords
- (make-regexp '("and" "cmp" "continue" "do" "else" "elsif" "eq"
+ (mdw-regexps '("and" "cmp" "continue" "do" "else" "elsif" "eq"
"for" "foreach" "ge" "gt" "goto" "if"
"last" "le" "lt" "local" "my" "ne" "next" "or"
"package" "redo" "require" "return" "sub"
;; --- Define Python fontification style ---
-(trap (require 'pyrex-mode))
(defun mdw-fontify-python ()
;; --- Miscellaneous fiddling ---
(make-local-variable 'font-lock-keywords)
(let ((python-keywords
- (make-regexp '("and" "as" "assert" "break" "class" "continue" "def"
+ (mdw-regexps '("and" "as" "assert" "break" "class" "continue" "def"
"del" "elif" "else" "except" "exec" "finally" "for"
"from" "global" "if" "import" "in" "is" "lambda"
"not" "or" "pass" "print" "raise" "return" "try"
(make-local-variable 'font-lock-keywords)
(let ((rexx-keywords
- (make-regexp '("address" "arg" "by" "call" "digits" "do" "drop"
+ (mdw-regexps '("address" "arg" "by" "call" "digits" "do" "drop"
"else" "end" "engineering" "exit" "expose" "for"
"forever" "form" "fuzz" "if" "interpret" "iterate"
"leave" "linein" "name" "nop" "numeric" "off" "on"
(make-local-variable 'font-lock-keywords)
(let ((sml-keywords
- (make-regexp '("abstype" "and" "andalso" "as"
+ (mdw-regexps '("abstype" "and" "andalso" "as"
"case"
"datatype" "do"
"else" "end" "eqtype" "exception"
(make-local-variable 'font-lock-keywords)
(let ((haskell-keywords
- (make-regexp '("as" "case" "ccall" "class" "data" "default"
+ (mdw-regexps '("as" "case" "ccall" "class" "data" "default"
"deriving" "do" "else" "foreign" "hiding" "if"
"import" "in" "infix" "infixl" "infixr" "instance"
"let" "module" "newtype" "of" "qualified" "safe"
(make-local-variable 'font-lock-defaults)
(make-local-variable 'message-mode-keywords)
(let ((keywords
- (make-regexp '("array" "bitmap" "callback" "docs[ \t]+enum"
+ (mdw-regexps '("array" "bitmap" "callback" "docs[ \t]+enum"
"export" "enum" "fixed-octetstring" "flags"
"harmless" "map" "nested" "optional"
"optional-tagged" "package" "primitive"
(setq comment-start "/* ")
(setq comment-end " */")
(let ((preprocessor-keywords
- (make-regexp '("assert" "define" "elif" "else" "endif" "error"
+ (mdw-regexps '("assert" "define" "elif" "else" "endif" "error"
"ident" "if" "ifdef" "ifndef" "import" "include"
"line" "pragma" "unassert" "undef" "warning"))))
(setq message-mode-keywords
(make-local-variable 'font-lock-defaults)
(make-local-variable 'mallow-driver-mode-keywords)
(let ((keywords
- (make-regexp '("each" "divert" "file" "if"
+ (mdw-regexps '("each" "divert" "file" "if"
"perl" "set" "string" "type" "write"))))
(setq mallow-driver-mode-keywords
(list
(and mdw-auto-indent
(indent-for-tab-command)))
+(defun mdw-setup-m4 ()
+ (mdw-standard-fill-prefix "\\([ \t]*\\(?:#+\\|\\<dnl\\>\\)[ \t]*\\)"))
+
;;;----- Text mode ----------------------------------------------------------
(defun mdw-text-mode ()
(setq fill-column 72)
(flyspell-mode t)
(mdw-standard-fill-prefix
- "\\([ \t]*\\([A-Za-z0-9]*[>#|:] ?\\)*[ \t]*\\)" 3)
+ "\\([ \t]*\\([>#|:] ?\\)*[ \t]*\\)" 3)
(auto-fill-mode 1))
;;;----- Shell mode ---------------------------------------------------------