dot-emacs: Turn mumble-tab-always-indent back on.
[profile] / dot-emacs.el
index 3da4450..3b7af3f 100644 (file)
@@ -1,7 +1,5 @@
 ;;; -*- mode: emacs-lisp; coding: utf-8 -*-
 ;;;
 ;;; -*- mode: emacs-lisp; coding: utf-8 -*-
 ;;;
-;;; $Id$
-;;;
 ;;; Functions and macros for .emacs
 ;;;
 ;;; (c) 2004 Mark Wooding
 ;;; 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))
   "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)
   (while next
     (cond ((string= (car next) "--mdw-fast-startup")
           (setq mdw-fast-startup t)
@@ -302,7 +298,10 @@ input lists are not modified, although they'll probably become garbage."
   "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."
   "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)
+  (cond ((not (boundp 'global-auto-revert-ignore-buffer))
+        nil)
+       ((and (buffer-file-name)
+             (fboundp 'tramp-tramp-file-p)
              (tramp-tramp-file-p (buffer-file-name)))
         (unless global-auto-revert-ignore-buffer
           (setq global-auto-revert-ignore-buffer 'tramp)))
              (tramp-tramp-file-p (buffer-file-name)))
         (unless global-auto-revert-ignore-buffer
           (setq global-auto-revert-ignore-buffer 'tramp)))
@@ -323,6 +322,7 @@ Not much right now.  Just support for doing MailCrypt stuff."
   (setq local-abbrev-table text-mode-abbrev-table)
   (setq major-mode 'mdwmail-mode)
   (setq mode-name "[mdw] mail")
   (setq local-abbrev-table text-mode-abbrev-table)
   (setq major-mode 'mdwmail-mode)
   (setq mode-name "[mdw] mail")
+  (set-buffer-file-coding-system 'utf-8)
   (make-local-variable 'paragraph-separate)
   (make-local-variable 'paragraph-start)
   (setq paragraph-start (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
   (make-local-variable 'paragraph-separate)
   (make-local-variable 'paragraph-start)
   (setq paragraph-start (concat "[ \t]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
@@ -361,6 +361,29 @@ Not much right now.  Just support for doing MailCrypt stuff."
     (perform-replace "\n-- \n" "\n-- " nil nil nil)))
 (add-hook 'mail-setup-hook 'mdwmail-mangle-signature)
 
     (perform-replace "\n-- \n" "\n-- " nil nil nil)))
 (add-hook 'mail-setup-hook 'mdwmail-mangle-signature)
 
+;;;----- Dired hacking ------------------------------------------------------
+
+(defadvice dired-maybe-insert-subdir
+    (around mdw-marked-insertion first activate)
+  "The DIRNAME may be a list of directory names to insert.  Interactively, if
+files are marked, then insert all of them.  With a numeric prefix argument,
+select that many entries near point; with a non-numeric prefix argument,
+prompt for listing options."
+  (interactive
+   (list (dired-get-marked-files nil
+                                (and (integerp current-prefix-arg)
+                                     current-prefix-arg)
+                                #'file-directory-p)
+        (and current-prefix-arg
+             (not (integerp current-prefix-arg))
+             (read-string "Switches for listing: "
+                          (or dired-subdir-switches
+                              dired-actual-switches)))))
+  (let ((dirs (ad-get-arg 0)))
+    (dolist (dir (if (listp dirs) dirs (list dirs)))
+      (ad-set-arg 0 dir)
+      ad-do-it)))
+
 ;;;----- URL viewing --------------------------------------------------------
 
 (defun mdw-w3m-browse-url (url &optional new-session-p)
 ;;;----- URL viewing --------------------------------------------------------
 
 (defun mdw-w3m-browse-url (url &optional new-session-p)
@@ -423,7 +446,10 @@ a list of things:
 (make-variable-buffer-local 'mdw-fill-prefix)
 
 (defvar mdw-hanging-indents
 (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'.")
 
   "*Standard regular expression matching things which might be part of a
 hanging indent.  This is mainly useful in `auto-fill-mode'.")
 
@@ -515,40 +541,6 @@ doesn't cope with anything approximating a complicated case."
 
 ;;;----- Other common declarations ------------------------------------------
 
 
 ;;;----- 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
 ;; --- Common mode settings ---
 
 (defvar mdw-auto-indent t
@@ -583,6 +575,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)
 
 (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)
 ;;;----- General fontification ----------------------------------------------
 
 (defun mdw-set-fonts (frame faces)
@@ -650,8 +662,8 @@ doesn't cope with anything approximating a complicated case."
     (font-lock-keyword-face :weight bold)
     (font-lock-constant-face :weight bold)
     (font-lock-reference-face :weight bold)
     (font-lock-keyword-face :weight bold)
     (font-lock-constant-face :weight bold)
     (font-lock-reference-face :weight bold)
-    (woman-bold-face :weight bold)
-    (woman-italic-face :slant italic)
+    (woman-bold :weight bold)
+    (woman-italic :slant italic)
     (diff-index :weight bold)
     (diff-file-header :weight bold)
     (diff-hunk-header :foreground "SkyBlue1")
     (diff-index :weight bold)
     (diff-file-header :weight bold)
     (diff-hunk-header :foreground "SkyBlue1")
@@ -691,7 +703,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)
 (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)
                 (comment-column . 40)
                 (c-class-key . "class")
                 (c-offsets-alist (substatement-open . 0)
@@ -947,7 +958,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-java-style ()
   (c-add-style "[mdw] Java style"
               '((c-basic-offset . 2)
 (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 . +)
                 (c-offsets-alist (substatement-open . 0)
                                  (label . +)
                                  (case-label . +)
@@ -1022,7 +1032,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-csharp-style ()
   (c-add-style "[mdw] C# style"
               '((c-basic-offset . 2)
 (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 . +)
                 (c-offsets-alist (substatement-open . 0)
                                  (label . 0)
                                  (case-label . +)
@@ -1110,7 +1119,6 @@ doesn't cope with anything approximating a complicated case."
 (defun mdw-awk-style ()
   (c-add-style "[mdw] Awk style"
               '((c-basic-offset . 2)
 (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 . +)))
                 (c-offsets-alist (substatement-open . 0)
                                  (statement-cont . 0)
                                  (statement-case-intro . +)))
@@ -1171,8 +1179,6 @@ doesn't cope with anything approximating a complicated case."
 
 ;; --- Perl indentation style ---
 
 
 ;; --- 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)
 (setq cperl-indent-level 2)
 (setq cperl-continued-statement-offset 2)
 (setq cperl-continued-brace-offset 0)
@@ -1255,7 +1261,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"
                      "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
 
     (setq font-lock-keywords
          (list
 
@@ -1421,7 +1427,6 @@ strip numbers instead."
 
   (setq rexx-indent 2)
   (setq rexx-end-indent rexx-indent)
 
   (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)
   (setq rexx-cont-indent rexx-indent)
 
   (make-local-variable 'font-lock-keywords)