;;; 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
(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
(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 ---------------------------------------------------------
(not (memq 'GIT vc-handled-backends))
(setq vc-handled-backends (cons 'GIT vc-handled-backends)))
(and (library-exists-p "quilt")
+ (not mdw-fast-startup)
(load "quilt"))
-(trap
- (or (fboundp 'make-regexp)
- (load "make-regexp")))
-
-(trap (require 'tex-site))
+(trap (or mdw-fast-startup (require 'tex-site)))
;; --- Skeleton stuff ---
-(trap (require 'skel-init))
+(trap (or mdw-fast-startup (require 'skel-init)))
;; --- Window system-dependent things ---
(setq dired-deletion-confirmer ;Make deletion easier in dired
(symbol-function 'y-or-n-p))
(setq dired-listing-switches "-alF") ;Do `ls -F' things in dired windows
+(setq wdired-allow-to-change-permissions t)
(setq case-fold-file-names nil) ;Don't translate file names (grr...)
(setq scroll-step 5) ;Don't scroll too much at a time
(setq-default fill-column 77) ;I use rather narrow windows
(trap
(and (string-match "linux" (symbol-name system-type))
+ (not mdw-fast-startup)
(progn (require 'mailcrypt-init)
(require 'mailcrypt)
(setq mc-default-scheme 'mc-scheme-gpg)
(add-hook 'slime-repl-mode-hook 'mdw-fontify-lispy t)
(add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
(trap
- (require 'slime-autoloads)
- (slime-setup '(slime-autodoc)))
-;;(trap (require 'xscheme))
-;;(setq-default xscheme-process-command-line "scheme -large -emacs")
+ (if (not mdw-fast-startup)
+ (progn
+ (require 'slime-autoloads)
+ (slime-setup '(slime-autodoc)))))
(add-hook 'inferior-lisp-mode-hook
#'(lambda ()
(local-set-key "\C-m" 'comint-send-and-indent)) t)