X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/1db6f8da9c563c98cfdf54e3d28d3d228cde0cb8..2d18398ae92f3da8ef49fe8e376ff5cdab53608a:/dot-emacs.el diff --git a/dot-emacs.el b/dot-emacs.el index 14d06a6..5b9408f 100644 --- a/dot-emacs.el +++ b/dot-emacs.el @@ -188,6 +188,43 @@ symbols `sunday', `monday', etc. (or a mixture). If the date stored in (nth 2 when)))))))) (eq w d))) +;; --- Fighting with Org-mode's evil key maps --- + +(defvar mdw-evil-keymap-keys + '(([S-up] . [?\C-c up]) + ([S-down] . [?\C-c down]) + ([S-left] . [?\C-c left]) + ([S-right] . [?\C-c right]) + (([M-up] [?\e up]) . [C-up]) + (([M-down] [?\e down]) . [C-down]) + (([M-left] [?\e left]) . [C-left]) + (([M-right] [?\e right]) . [C-right])) + "Defines evil keybindings to clobber in `mdw-clobber-evil-keymap'. +The value is an alist mapping evil keys (as a list, or singleton) +to good keys (in the same form).") + +(defun mdw-clobber-evil-keymap (keymap) + "Replace evil key bindings in the KEYMAP. +Evil key bindings are defined in `mdw-evil-keymap-keys'." + (dolist (entry mdw-evil-keymap-keys) + (let ((binding nil) + (keys (if (listp (car entry)) + (car entry) + (list (car entry)))) + (replacements (if (listp (cdr entry)) + (cdr entry) + (list (cdr entry))))) + (catch 'found + (dolist (key keys) + (setq binding (lookup-key keymap key)) + (when binding + (throw 'found nil)))) + (when binding + (dolist (key keys) + (define-key keymap key nil)) + (dolist (key replacements) + (define-key keymap key binding)))))) + ;;;----- Mail and news hacking ---------------------------------------------- (define-derived-mode mdwmail-mode mail-mode "[mdw] mail" @@ -395,6 +432,7 @@ get itself into a twist." (mdw-check-autorevert)) (defadvice write-file (after mdw-autorevert activate) (mdw-check-autorevert)) + ;;;----- Dired hacking ------------------------------------------------------ (defadvice dired-maybe-insert-subdir