emacs: Pull in foldout along with the outline mode.
[profile] / dot-emacs.el
index f3c28f9..1d550d3 100644 (file)
@@ -1,7 +1,5 @@
 ;;; -*- mode: emacs-lisp; coding: utf-8 -*-
 ;;;
-;;; $Id$
-;;;
 ;;; Functions and macros for .emacs
 ;;;
 ;;; (c) 2004 Mark Wooding
@@ -29,8 +27,6 @@
   "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)
@@ -450,7 +446,10 @@ a list of things:
 (make-variable-buffer-local 'mdw-fill-prefix)
 
 (defvar mdw-hanging-indents
-  "\\(\\(\\([*o]\\|--\\|[0-9]+\\.\\|\\[[0-9]+\\]\\|([a-zA-Z])\\)[ \t]+\\)?\\)"
+  (concat "\\(\\("
+           "\\([*o]\\|-[-#]?\\|[0-9]+\\.\\|\\[[0-9]+\\]\\|([a-zA-Z])\\)"
+           "[ \t]+"
+         "\\)?\\)")
   "*Standard regular expression matching things which might be part of a
 hanging indent.  This is mainly useful in `auto-fill-mode'.")
 
@@ -542,40 +541,6 @@ doesn't cope with anything approximating a complicated case."
 
 ;;;----- Other common declarations ------------------------------------------
 
-(defun mdw-set-frame-transparency (&optional n)
-  (interactive "P")
-  (let* ((alist (frame-parameters))
-        (trans (assq 'transparency alist)))
-    (if trans
-       (rplacd trans (not (if n (zerop n) (cdr trans))))
-      (setq trans (cons 'transparency (not (equal 0 n)))))
-    (modify-frame-parameters (selected-frame) (list trans))))
-
-;; --- Mouse wheel support ---
-
-(defconst mdw-wheel-scroll-amount 15)
-(defun mdw-wheel-up (click)
-  (interactive "@e")
-  (mdw-wheel-scroll click (function scroll-down)))
-(defun mdw-wheel-down (click)
-  (interactive "@e")
-  (mdw-wheel-scroll click (function scroll-up)))
-
-(defun mdw-wheel-scroll (click func)
-  (let ((win (selected-window)))
-    (unwind-protect
-       (progn
-         (select-window (posn-window (event-start click)))
-         (let ((arg 2))
-           (funcall func (/ (window-height) 2))))
-      (select-window win))))
-
-;; --- Going backwards ---
-
-(defun other-window-backwards (arg)
-  (interactive "p")
-  (other-window (- arg)))
-
 ;; --- Common mode settings ---
 
 (defvar mdw-auto-indent t
@@ -591,10 +556,6 @@ doesn't cope with anything approximating a complicated case."
             (t
              (local-set-key "\C-m" 'newline-and-indent))))
   (local-set-key [C-return] 'newline)
-  (or (eq major-mode 'asm-mode)
-      (local-set-key [?\;] 'self-insert-command))
-  (local-set-key [?\#] 'self-insert-command)
-  (local-set-key [?\"] 'self-insert-command)
   (setq comment-column 40)
   (auto-fill-mode 1)
   (setq fill-column 77)
@@ -610,6 +571,26 @@ doesn't cope with anything approximating a complicated case."
 (defvar mdw-number-face 'mdw-number-face "Face to use for numbers")
 (make-face 'mdw-number-face)
 
+;; --- Backup file handling ---
+
+(defvar mdw-backup-disable-regexps nil
+  "*List of regular expressions: if a file name matches any of these then the
+file is not backed up.")
+
+(defun mdw-backup-enable-predicate (name)
+  "[mdw]'s default backup predicate: allows a backup if the
+standard predicate would allow it, and it doesn't match any of
+the regular expressions in `mdw-backup-disable-regexps'."
+  (and (normal-backup-enable-predicate name)
+       (let ((answer t) (list mdw-backup-disable-regexps))
+        (save-match-data
+          (while list
+            (if (string-match (car list) name)
+                (setq answer nil))
+            (setq list (cdr list)))
+          answer))))
+(setq backup-enable-predicate 'mdw-backup-enable-predicate)
+
 ;;;----- General fontification ----------------------------------------------
 
 (defun mdw-set-fonts (frame faces)
@@ -661,7 +642,7 @@ doesn't cope with anything approximating a complicated case."
     (comint-highlight-input)
     (font-lock-builtin-face :weight bold)
     (font-lock-type-face :weight bold)
-    (region :background "grey30")
+    (region :background ,(if window-system "grey30" "blue"))
     (isearch :background "palevioletred2")
     (mdw-punct-face :foreground ,(if window-system "burlywood2" "yellow"))
     (mdw-number-face :foreground "yellow")
@@ -718,7 +699,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-c-style ()
   (c-add-style "[mdw] C and C++ style"
               '((c-basic-offset . 2)
-                (c-tab-always-indent . nil)
                 (comment-column . 40)
                 (c-class-key . "class")
                 (c-offsets-alist (substatement-open . 0)
@@ -735,7 +715,6 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Fiddle with some syntax codes ---
 
-  (modify-syntax-entry ?_ "w")
   (modify-syntax-entry ?* ". 23")
   (modify-syntax-entry ?/ ". 124b")
   (modify-syntax-entry ?\n "> b")
@@ -917,7 +896,6 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Fiddle with some syntax codes ---
 
-  (modify-syntax-entry ?_ "w")
   (modify-syntax-entry ?* ". 23")
   (modify-syntax-entry ?/ ". 14")
 
@@ -974,7 +952,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-java-style ()
   (c-add-style "[mdw] Java style"
               '((c-basic-offset . 2)
-                (c-tab-always-indent . nil)
                 (c-offsets-alist (substatement-open . 0)
                                  (label . +)
                                  (case-label . +)
@@ -990,7 +967,6 @@ doesn't cope with anything approximating a complicated case."
   ;; --- Other stuff ---
 
   (mdw-java-style)
-  (modify-syntax-entry ?_ "w")
   (setq c-hanging-comment-ender-p nil)
   (setq c-backslash-column 72)
   (setq comment-start "/* ")
@@ -1049,7 +1025,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-csharp-style ()
   (c-add-style "[mdw] C# style"
               '((c-basic-offset . 2)
-                (c-tab-always-indent . nil)
                 (c-offsets-alist (substatement-open . 0)
                                  (label . 0)
                                  (case-label . +)
@@ -1065,7 +1040,6 @@ doesn't cope with anything approximating a complicated case."
   ;; --- Other stuff ---
 
   (mdw-csharp-style)
-  (modify-syntax-entry ?_ "w")
   (setq c-hanging-comment-ender-p nil)
   (setq c-backslash-column 72)
   (setq comment-start "/* ")
@@ -1137,7 +1111,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-awk-style ()
   (c-add-style "[mdw] Awk style"
               '((c-basic-offset . 2)
-                (c-tab-always-indent . nil)
                 (c-offsets-alist (substatement-open . 0)
                                  (statement-cont . 0)
                                  (statement-case-intro . +)))
@@ -1149,7 +1122,6 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Miscellaneous fiddling ---
 
-  (modify-syntax-entry ?_ "w")
   (mdw-awk-style)
   (setq c-backslash-column 72)
   (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
@@ -1198,8 +1170,6 @@ doesn't cope with anything approximating a complicated case."
 
 ;; --- Perl indentation style ---
 
-(setq cperl-tab-always-indent nil)
-
 (setq cperl-indent-level 2)
 (setq cperl-continued-statement-offset 2)
 (setq cperl-continued-brace-offset 0)
@@ -1213,7 +1183,6 @@ doesn't cope with anything approximating a complicated case."
 
   ;; --- Miscellaneous fiddling ---
 
-  (modify-syntax-entry ?_ "w")
   (modify-syntax-entry ?$ "\\")
   (modify-syntax-entry ?$ "\\" font-lock-syntax-table)
   (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
@@ -1271,7 +1240,6 @@ strip numbers instead."
 
   ;; --- Miscellaneous fiddling ---
 
-  (modify-syntax-entry ?_ "w")
   (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)")
 
   ;; --- Now define fontification things ---
@@ -1282,7 +1250,7 @@ strip numbers instead."
                      "del" "elif" "else" "except" "exec" "finally" "for"
                      "from" "global" "if" "import" "in" "is" "lambda"
                      "not" "or" "pass" "print" "raise" "return" "try"
-                     "while" "yield")))
+                     "while" "with" "yield")))
     (setq font-lock-keywords
          (list
 
@@ -1438,7 +1406,7 @@ strip numbers instead."
   (local-set-key [?\C-m] 'mdw-rexx-indent-newline-indent)
   (local-set-key [?*] 'mdw-rexx-electric-*)
   (mapcar #'(lambda (ch) (modify-syntax-entry ch "w"))
-         '(?. ?! ?? ?_ ?# ?@ ?$))
+         '(?! ?? ?# ?@ ?$))
   (mdw-standard-fill-prefix "\\([ \t]*/?\*[ \t]*\\)")
 
   ;; --- Set up keywords and things for fontification ---
@@ -1448,7 +1416,6 @@ strip numbers instead."
 
   (setq rexx-indent 2)
   (setq rexx-end-indent rexx-indent)
-  (setq rexx-tab-always-indent nil)
   (setq rexx-cont-indent rexx-indent)
 
   (make-local-variable 'font-lock-keywords)
@@ -1501,7 +1468,6 @@ strip numbers instead."
 
   ;; --- Make underscore an honorary letter ---
 
-  (modify-syntax-entry ?_ "w")
   (modify-syntax-entry ?' "w")
 
   ;; --- Set fill prefix ---
@@ -1557,7 +1523,6 @@ strip numbers instead."
 
   ;; --- Fiddle with syntax table to get comments right ---
 
-  (modify-syntax-entry ?_ "w")
   (modify-syntax-entry ?' "\"")
   (modify-syntax-entry ?- ". 123")
   (modify-syntax-entry ?{ ". 1b")
@@ -1764,8 +1729,6 @@ strip numbers instead."
 (defun message-mode-guts ()
   (setq messages-mode-syntax-table (make-syntax-table))
   (set-syntax-table messages-mode-syntax-table)
-  (modify-syntax-entry ?_ "w" messages-mode-syntax-table)
-  (modify-syntax-entry ?- "w" messages-mode-syntax-table)
   (modify-syntax-entry ?0 "w" messages-mode-syntax-table)
   (modify-syntax-entry ?1 "w" messages-mode-syntax-table)
   (modify-syntax-entry ?2 "w" messages-mode-syntax-table)