X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/10fa241442b70ae50e73f747daa4751aced1db6d..3dbf05efefb880a79fb340a591d02bcf6b47234a:/dot-emacs.el diff --git a/dot-emacs.el b/dot-emacs.el index d123512..1d550d3 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) @@ -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") + (set-buffer-file-coding-system 'utf-8) (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) +;;;----- 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) @@ -521,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 @@ -570,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) @@ -589,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) @@ -640,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") @@ -697,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) @@ -714,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") @@ -896,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") @@ -953,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 . +) @@ -969,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 "/* ") @@ -1028,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 . +) @@ -1044,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 "/* ") @@ -1116,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 . +))) @@ -1128,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]*\\)") @@ -1177,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) @@ -1192,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]*\\)") @@ -1250,7 +1240,6 @@ strip numbers instead." ;; --- Miscellaneous fiddling --- - (modify-syntax-entry ?_ "w") (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)") ;; --- Now define fontification things --- @@ -1417,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 --- @@ -1427,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) @@ -1480,7 +1468,6 @@ strip numbers instead." ;; --- Make underscore an honorary letter --- - (modify-syntax-entry ?_ "w") (modify-syntax-entry ?' "w") ;; --- Set fill prefix --- @@ -1536,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") @@ -1743,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)