X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/bc091e80892712733370dfd970db75dd46926b97..c5e89bcdf719089bb8ebdc2905db9b69dfed7908:/dot-emacs.el diff --git a/dot-emacs.el b/dot-emacs.el index 4cfd386..25105a9 100644 --- a/dot-emacs.el +++ b/dot-emacs.el @@ -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) @@ -365,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) +;;;----- 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) @@ -427,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'.") @@ -519,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 @@ -587,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) +;; --- 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) @@ -1259,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" - "while" "yield"))) + "while" "with" "yield"))) (setq font-lock-keywords (list