Great key rebinding.
[profile] / dot-emacs.el
index dbe689b..25105a9 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)
@@ -326,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]*[-_][-_][-_]+$\\|^-- \\|-----\\|"
@@ -364,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)
@@ -426,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'.")
 
@@ -518,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
@@ -586,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)
@@ -1258,7 +1267,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