X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/eef6be35771d171e4cb89fd9fd94ec5b41f1dac4..b582b09b2b13639beac408bbb2134b2a2cd32675:/dot/emacs diff --git a/dot/emacs b/dot/emacs index a0ceee5..16006ae 100644 --- a/dot/emacs +++ b/dot/emacs @@ -46,6 +46,11 @@ ;; Load some other bits of code. +;; Magic to make ELPA packages work. +(trap +(package-initialize) +) + (maybe-autoload 'cc-mode "cc-mode" nil t) (maybe-autoload 'rexx-mode "rexx-mode" nil t) (maybe-autoload 'cvs-update "pcl-cvs" nil t) @@ -88,9 +93,9 @@ (setq semanticdb-default-save-directory "~/.emacs.d/semanticdb/") (eval-after-load "senator" '(setq isearch-mode-hook - (remq 'senator-isearch-mode-hook isearch-mode-hook) + (remq 'senator-isearch-mode-hook isearch-mode-hook) isearch-mode-end-hook - (remq 'senator-isearch-mode-hook isearch-mode-end-hook))) + (remq 'senator-isearch-mode-hook isearch-mode-end-hook))) ;; Skeleton stuff. @@ -101,9 +106,10 @@ (require 'paren) (trap (show-paren-mode t)) (or window-system (mdw-emacs-version-p 22) (menu-bar-mode -1)) -(setq x-select-enable-clipboard nil - x-select-enable-primary t - mouse-drag-copy-region t) +(if (eq window-system 'x) + (setq x-select-enable-clipboard nil + x-select-enable-primary t)) +(setq mouse-drag-copy-region t) ;; Multiple cursors. @@ -158,27 +164,33 @@ (setq backup-by-copying-when-mismatch t) (setq mdw-backup-disable-regexps - '("/\\.git/COMMIT_EDITMSG$" - "/\\.stgit\\(-edit\\.txt\\|msg\\.txt\\|\\.msg\\)$" - "^/tmp/" "^/var/tmp/")) + '("/\\.git/COMMIT_EDITMSG$" + "/\\.stgit\\(-edit\\.txt\\|msg\\.txt\\|\\.msg\\)$" + "^/tmp/" "^/var/tmp/")) ;; Safe variables. (setq safe-local-variable-values - '((make-backup-files . nil))) + '((make-backup-files . nil))) ;; Calculator fiddling. (setq calc-settings-file "~/.emacs-calc") (load calc-settings-file) +;; Saving window-configuration state. + +(or mdw-fast-startup + (winner-mode 1)) + ;; Some mail and news configuration. (setq mail-from-style 'angles mail-signature t mail-yank-prefix "> " mail-archive-file-name nil - message-default-mail-headers "X-Auto-Response-Suppress: DR, RN, NRN, OOF\n" + message-default-mail-headers + "X-Auto-Response-Suppress: DR, RN, NRN, OOF\n" message-default-news-headers "" compose-mail-user-agent-warnings nil) @@ -188,13 +200,15 @@ (setq sendmail-program "~/bin/sendmail-hack" send-mail-function 'sendmail-send-it mail-interactive t + mail-specify-envelope-from t + mail-envelope-from 'header sendmail-error-reporting-interactive '("-odb" "-oee")) (autoload 'sendmail-send-it "sendmail") (autoload 'smtpmail-send-it "smtpmail") (setq mail-user-agent 'message-user-agent read-mail-command 'gnus) -(setq message-signature-separator "^-- \\(\\|\\[mdw\\]\\)$" +(setq message-signature-separator "^-- \\(\\[mdw\\]\\)?$" message-yank-prefix "> " message-yank-cited-prefix "> " message-send-mail-function 'message-send-mail-with-sendmail @@ -223,56 +237,62 @@ bbdb-extract-address-components-func 'bbdb-extract-address-components bbdb-allow-duplicates t bbdb/news-auto-create-p - (lambda () - (let ((group gnus-newsgroup-name)) - (and (string-match "^nn\\(imap\\|folder\\)\\+" group) - (not (string-match ":\\(crap\\|spam\\|lists\\|corpus\\)\\." - group))))) + (lambda () + (let ((group gnus-newsgroup-name)) + (and (string-match "^nn\\(imap\\|folder\\)\\+" group) + (not (string-match (concat ":" "\\(" "\\(" "crap" + "\\|" "spam" + "\\|" "lists" + "\\|" "corpus" + "\\)" "\\." + "\\|" "Junk Email$" + "\\)") + group))))) bbdb-user-mail-names - (concat "^" - "\\(" "\\(mdw\\|markw\\|root\\|postmaster\\)" - "\\([-+][^@]*\\|\\)" - "@\\(\\(dist\\|esc\\)orted\\.org\\.uk\\|odin\\.gg\\)" - "\\|" "\\(" "\\(mdw\\|mwooding\\)" - "\\(\\+[^@]*\\)?" - "\\|" "0" "\\(mdw\\|mwooding\\)" "k\\.[^@]*" - "\\)" "@" - "\\(chiark\\|slimy\\|coriolis\\)\\.greenend\\.org\\.uk" - "\\|" "distorted\\.mdw@g\\(\\|oogle\\)mail.com" - "\\|" "mwooding@\\(good\\|blackberry\\)\\.com" - "\\|" "mark\\.wooding@trustonic\\.com" - "\\)$") + (concat "^" + "\\(" "\\(mdw\\|markw\\|root\\|postmaster\\)" + "\\([-+][^@]*\\)?" + "@\\(\\(dist\\|esc\\)orted\\.org\\.uk\\|odin\\.gg\\)" + "\\|" "\\(" "\\(mdw\\|mwooding\\)" + "\\(\\+[^@]*\\)?" + "\\|" "0" "\\(mdw\\|mwooding\\)" "k\\.[^@]*" + "\\)" "@" + "\\(chiark\\|slimy\\|coriolis\\)\\.greenend\\.org\\.uk" + "\\|" "distorted\\.mdw@g\\(oogle\\)?mail.com" + "\\|" "mwooding@\\(good\\|blackberry\\)\\.com" + "\\|" "mark\\.wooding@trustonic\\.com" + "\\)$") bbdb-canonicalize-net-hook - (lambda (addr) - (cond ((null addr) - nil) - ((or (string-match "^mailer-daemon@" addr) - (string-match "\.invalid$" addr) - (string-match (concat "^reply-[0-9a-f]+-[0-9a-f]+_" - "HTML-[0-9]+-[0-9]+-[0-9]+" - "@\\(nationwide-communications\\." - "co\\.uk\\)$") - addr) - (string-match (concat "^[0-9]+@bugs\\." - "\\(" "debian\\.org" - "\\|" "distorted\\.org\\.uk" - "\\)$") - addr) - (string-match (concat "^MicrosoftExchange[0-9a-f]*" - "@newincco\\.onmicrosoft\\.com") - addr) - (member (md5 addr) - '("8815c5583970856799c85a3ee0eb6a9f" ;work wiki spam - "0b94ab4d25dacaa5ac07243a09c9e22e" ;work bug spam - "35fb1633379a1e4d4be3b139cae20111" ;work crucible spam - )) - (and (string-match "^news\\([0-9]+\\)@\\(.*\\)$" addr) - (string= (md5 (match-string 2 addr)) - "879b795aed959b1a000e9f95c132b16c"))) - nil) - ((string-match "^\\([^@+]+\\)\\+[^@]*\\(@.*\\)$" addr) - (concat (match-string 1 addr) (match-string 2 addr))) - (t addr)))) + (lambda (addr) + (cond ((null addr) + nil) + ((or (string-match "^mailer-daemon@" addr) + (string-match "\.invalid$" addr) + (string-match (concat "^reply-[0-9a-f]+-[0-9a-f]+_" + "HTML-[0-9]+-[0-9]+-[0-9]+" + "@\\(nationwide-communications\\." + "co\\.uk\\)$") + addr) + (string-match (concat "^[0-9]+@bugs\\." + "\\(" "debian\\.org" + "\\|" "distorted\\.org\\.uk" + "\\)$") + addr) + (string-match (concat "^MicrosoftExchange[0-9a-f]*" + "@newincco\\.onmicrosoft\\.com") + addr) + (member (md5 addr) + '("8815c5583970856799c85a3ee0eb6a9f" ;work wiki spam + "0b94ab4d25dacaa5ac07243a09c9e22e" ;work bug spam + "35fb1633379a1e4d4be3b139cae20111" ;work crucible spam + )) + (and (string-match "^news\\([0-9]+\\)@\\(.*\\)$" addr) + (string= (md5 (match-string 2 addr)) + "879b795aed959b1a000e9f95c132b16c"))) + nil) + ((string-match "^\\([^@+]+\\)\\+[^@]*\\(@.*\\)$" addr) + (concat (match-string 1 addr) (match-string 2 addr))) + (t addr)))) ;; Customization. @@ -308,12 +328,25 @@ ;; Postscript printing. -(setq ps-paper-type 'a4 - ps-print-color-p nil - ps-landscape-mode t - ps-number-of-columns 2 - ps-font-family 'Courier - ps-font-size 6.5) +(let ((mm (/ 72 25.4))) + (setq ps-paper-type 'a4 + ps-print-only-one-header t + ps-print-color-p t + ps-landscape-mode t ps-number-of-columns 4 + ps-line-number t ps-line-number-step 5 ps-line-number-start 5 + ps-zebra-stripes nil ps-zebra-stripe-height 5 + ps-spool-duplex t ps-spool-tumble nil ps-spool-config 'setpagedevice + ps-top-margin (* 12 mm) + ps-bottom-margin (* 16 mm) + ps-header-offset (* 8 mm) + ps-left-margin (* 12 mm) + ps-right-margin (* 12 mm) + ps-inter-column (* 4 mm) + ps-font-family 'CourierCondensed ps-font-size '(4.5 . 5.16) + ps-line-number-font 'Palatino ps-line-number-font-size 3 + ps-header-font-family 'Helvetica + ps-header-title-font-size '(8 . 10) + ps-header-font-size '(6 . 8))) ;; Splash screen stuff. @@ -325,16 +358,17 @@ (trap (resize-minibuffer-mode 1)) ;Make minibuffer grow dynamically (auto-compression-mode 1) ;Enable automatic compression +(xterm-mouse-mode 1) (setq enable-local-variables :safe enable-local-eval nil) (setq dabbrev-case-replace nil) ;Retain case when completing (setq linum-format "%7d ") (setq next-line-add-newlines nil) ;Don't add weird newlines (setq split-height-threshold nil) ;Reuse windows where sensible -(setq display-buffer-reuse-frames nil ;Don't confuse me by showing buffers - iswitchb-default-method 'samewindow ;in other random frames - ido-default-file-method 'selected-window - ido-default-buffer-method 'selected-window) +(setq compilation-scroll-output t) +(setq iswitchb-default-method 'samewindow ;Don't confuse me by showing + ido-default-file-method 'selected-window ;buffers in other random + ido-default-buffer-method 'selected-window) ;frames (setq ido-enable-prefix t ido-enable-flex-matching t ido-everywhere t @@ -344,13 +378,16 @@ (setq pcomplete-cycle-completions nil ;Who thought that was a good idea? eshell-cmpl-cycle-completions nil) (setq dired-deletion-confirmer ;Make deletion easier in dired - (symbol-function 'y-or-n-p) + (symbol-function 'y-or-n-p) delete-by-moving-to-trash (mdw-emacs-version-p 24) dired-listing-switches "-alF" ;Do `ls -F' things in dired windows wdired-allow-to-change-permissions 'advanced) (setq read-quoted-char-radix 16) ;C-q HEX-STUFF [RET] (setq case-fold-file-names nil) ;Don't translate file names (grr...) (setq scroll-step 5) ;Don't scroll too much at a time +(setq custom-unlispify-tag-names nil ;Display variable names properly + custom-unlispify-menu-entries nil + custom-buffer-done-kill t) (setq blink-cursor-blinks 0) ;Keep blinking the cursor (setq-default fill-column mdw-text-width) ;I use rather narrow windows (setq adaptive-fill-mode nil) ;I have my own machinery instead @@ -358,6 +395,8 @@ (setq-default comment-column 40) ;Set a standard comment column (setq-default truncate-partial-width-windows nil truncate-lines t) +(setq line-move-visual t + visual-order-cursor-movement t) (setq default-indicate-empty-lines t) (setq view-read-only t) (setq-default view-exit-action #'kill-buffer) @@ -375,6 +414,7 @@ (setq find-ls-option ;Build file lists efficiently '("-print0 | xargs -0r ls -ld" . "ld")) (setq bookmark-save-flag 0) ;Save bookmarks automatically +(setq ediff-grab-mouse nil) (setq vc-follow-symlinks t vc-git-resolve-conflicts nil) (setq x-gtk-file-dialog-help-text nil) @@ -382,6 +422,7 @@ (setq Info-fontify-maximum-menu-size 100000) (setq set-mark-command-repeat-pop t) (setq password-cache-expiry nil) +(setq mouse-autoselect-window nil) (setq-default proced-filter 'all proced-sort 'user) (setq ispell-program-name "aspell-hack" @@ -391,6 +432,20 @@ '(("en_GB-ize-w_accents" "[[:alpha:]]" "[^[:alpha:]]" "'" t ("-d" "en_GB-ize-w_accents") nil utf-8)) ispell-silently-savep t) +(setq-default viper-case-fold-search t + viper-electric-mode t + viper-ex-style-motion nil + viper-ex-style-editing nil + viper-expert-level 5 + viper-inhibit-startup-message t + ;;viper-insert-state-cursor-color "red" + viper-no-multiple-ESC nil + viper-re-query-replace t + viper-re-search t + ;;viper-replace-overlay-cursor-color "red" + viper-shift-width 2 + viper-vi-style-in-minibuffer nil + viper-want-ctl-h-help t) (trap (require 'uniquify) (setq uniquify-buffer-name-style 'post-forward-angle-brackets) @@ -405,7 +460,16 @@ (tool-bar-mode 0)) (trap (or mdw-fast-startup (global-auto-revert-mode t))) -(defvar mdw-black-background t) +(defun mdw-set-viper-cursor-colour () + ;; ?? doesn't seem to work + (set-frame-parameter nil 'cursor-color "green") + (message ";; %S" post-command-hook) + (sit-for 2)) +;;(add-hook 'viper-vi-state-hook 'mdw-set-viper-cursor-colour) + +(defcustom mdw-black-background t + "Whether the Emacs background is black (or dark, at any rate)." + :type 'boolean) (eval-after-load "outline" '(progn @@ -413,6 +477,10 @@ (define-key outline-mode-prefix-map [?\C-r] 'reveal-mode) (define-key outline-mode-prefix-map [?\C--] 'mdw-outline-collapse-all))) +(define-key isearch-mode-map [?\C-?] 'isearch-del-char) +(define-key isearch-mode-map [backspace] 'isearch-del-char) +(define-key isearch-mode-map [?\e ?\C-?] 'isearch-delete-char) + (setq imenu-auto-rescan t imenu-auto-rescan-maxout (* 128 1024) imenu-max-items 60) @@ -423,20 +491,20 @@ (setq ediff-split-window-function 'split-window-horizontally) (setq rfcview-rfc-location-pattern - "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/rfc%s.txt" + "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/rfc%s.txt" rfcview-std-location-pattern - "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/std/std%s.txt" + "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/std/std%s.txt" rfcview-index-location - "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/rfc-index.txt") + "/ftp@mirror.distorted.org.uk:/pub/mirrors/rfc/rfc-index.txt") ;;;-------------------------------------------------------------------------- ;;; W3 and URL fetching stuff. (let ((proxy (mdw-config 'http-proxy))) (setq url-proxy-services - `(("http" . ,proxy) - ("ftp" . ,proxy) - ("gopher" . ,proxy)))) + `(("http" . ,proxy) + ("ftp" . ,proxy) + ("gopher" . ,proxy)))) (setq url-cookie-untrusted-urls '(".")) (setq browse-url-browser-function (mdw-good-url-browser) @@ -451,8 +519,8 @@ ("application/x-pdf" "\\.pdf\\'" ("xdg-open" file) nil)))) (dolist (e entries) (setq w3m-content-type-alist - (cons e (remove* (car e) w3m-content-type-alist - :key #'car :test #'string=)))))) + (cons e (remove* (car e) w3m-content-type-alist + :key #'car :test #'string=)))))) (setq w3-do-incremental-display t w3-use-menus '(file edit view go bookmark options @@ -489,17 +557,17 @@ (setq european-calendar-style t calendar-date-style 'european calendar-time-display-form - '(24-hours ":" minutes - (if time-zone " (") time-zone (if time-zone ")"))) + '(24-hours ":" minutes + (if time-zone " (") time-zone (if time-zone ")"))) (setq diary-date-forms - '((day "[-/]" month "[^-/0-9]") - (day " *" monthname "[ \t]*\\(\^M\\|\n\\)") - (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|[0-9]+[:aApP]\\)") - (day "[-/]" month "[-/]" year "[^0-9]") - (day " *" monthname " *" year "[^0-9]") - (year "[-/]" month "[-/]" day "[^0-9]") - (dayname "\\W"))) + '((day "[-/]" month "[^-/0-9]") + (day " *" monthname "[ \t]*\\(\^M\\|\n\\)") + (backup day " *" monthname "\\W+\\<\\([^*0-9]\\|[0-9]+[:aApP]\\)") + (day "[-/]" month "[-/]" year "[^0-9]") + (day " *" monthname " *" year "[^0-9]") + (year "[-/]" month "[-/]" day "[^0-9]") + (dayname "\\W"))) ;; Fancy diary handling. @@ -552,8 +620,8 @@ ;; Define more mode hooks for MailCrypt. (setq mdw-mc-modes - '((mdwmail-mode (encrypt . mdwmail-mc-encrypt) - (sign . mdwmail-mc-sign)))) + '((mdwmail-mode (encrypt . mdwmail-mc-encrypt) + (sign . mdwmail-mc-sign)))) ;; Load the MailCrypt support. @@ -576,6 +644,8 @@ (define-key mc-write-mode-map "\C-c/E" 'mc-encrypt-region) (add-hook 'text-mode-hook 'mc-install-write-mode)))) +(setq epa-pinentry-mode 'loopback) + ;;;-------------------------------------------------------------------------- ;;; Other common declarations. @@ -584,38 +654,46 @@ (setq frame-background-mode (if mdw-black-background 'dark 'light) frame-inhibit-implied-resize t default-frame-alist - `((width . ,(+ mdw-column-width mdw-frame-width-fudge)) - (height . 33) - (vertical-scroll-bars . right) - (cursor-type . bar) - (cursor-blink . t) - (left-fringe . 5) - (right-fringe . 5) - (scroll-bar-width . 15) - (tool-bar-lines . 0) - (menu-bar-lines . 1) - (cursor-color . "red") - (background-mode . ,frame-background-mode)) + `((width . ,(+ mdw-column-width mdw-frame-width-fudge)) + (height . 33) + (vertical-scroll-bars . right) + (cursor-type . bar) + (cursor-blink . t) + (left-fringe . 5) + (right-fringe . 5) + (scroll-bar-width . 15) + (tool-bar-lines . 0) + (menu-bar-lines . 1) + (cursor-color . "red") + (background-mode . ,frame-background-mode)) initial-frame-alist - `((width . ,(+ mdw-column-width - (if (>= emacs-major-version 21) 0 1))) - (menu-bar-lines . ,(if window-system 1 0))) + `((width . ,(+ mdw-column-width + (if (>= emacs-major-version 21) 0 1))) + (menu-bar-lines . ,(if window-system 1 0))) window-system-default-frame-alist - '((pm (font . "-os2-System VIO-medium-r-normal--*-40-*-*-m-*-cp850") - (menu-font . "8.Helv") - (background-color . "lightgrey")) - (w32 (font . "fixed613 10") - (background-color . "black") - (foreground-color . "white")) - (nil (menu-bar-lines . 0) - (background-color . nil)))) + '((pm (font . "-os2-System VIO-medium-r-normal--*-40-*-*-m-*-cp850") + (menu-font . "8.Helv") + (background-color . "lightgrey")) + (w32 (font . "fixed613 10") + (background-color . "black") + (foreground-color . "white")) + (nil (menu-bar-lines . 0) + (background-color . nil)))) (let ((backg (frame-parameter nil 'background-color))) (if (and backg window-system) (push (cons 'background-color backg) default-frame-alist))) ;; Other frame fiddling. -(setq frame-title-format '("Emacs " user-login-name "@" system-name " – %b")) +(defcustom mdw-hostname + (if (string-match "\\." system-name) + (substring system-name 0 (match-beginning 0)) + system-name) + "Unqualified hostname Emacs is running on." + :type 'string + :safe 'stringp) +(setq frame-title-format '("Emacs " user-login-name "@" mdw-hostname " – %b") + icon-title-format frame-title-format) ;; Global keymap changes. @@ -639,15 +717,15 @@ "\\'")))) (if (boundp 'ido-ubiquitous-command-overrides) (setq ido-ubiquitous-command-overrides - (append ido-ubiquitous-command-overrides - (mapcar (lambda (exclude) - (if (symbolp exclude) - `(enable-old exact - ,(symbol-name exclude)) - `(enable-old regexp ,exclude))) - excludes))) + (append ido-ubiquitous-command-overrides + (mapcar (lambda (exclude) + (if (symbolp exclude) + `(enable-old exact + ,(symbol-name exclude)) + `(enable-old regexp ,exclude))) + excludes))) (setq ido-cr+-function-blacklist - (append ido-cr+-function-blacklist excludes)))) + (append ido-cr+-function-blacklist excludes)))) (setq magit-completing-read-function 'magit-ido-completing-read) (require 'smex) (smex-initialize) (global-set-key [?\M-x] 'smex)) @@ -655,8 +733,8 @@ (global-set-key [?\e ?\e] 'mdw-wrong) (global-set-key [?\e ?\C-\] ?\C-\]] 'keyboard-escape-quit) (global-set-key [?\C-c ?\M-x] 'execute-extended-command) - (global-set-key [?\C-c ?d ?w] 'devhelp-word-at-point) (global-set-key [?\C-c ?d ?a] 'devhelp-assistant-word-at-point) + (global-set-key [?\C-c ?d ?w] 'devhelp-word-at-point) (global-set-key [?\C-c ?g ?a] 'org-agenda) (global-set-key [?\C-c ?g ?b] 'org-iswitchb) (global-set-key [?\C-c ?g ?l] 'org-store-link) @@ -665,6 +743,7 @@ (global-set-key [?\C-c ?m ?b] 'magit-blame) (global-set-key [?\C-c ?m ?d] 'magit-dispatch-popup) (global-set-key [?\C-c ?m ?f] 'magit-find-file) + (global-set-key [?\C-c ?m ?l] 'magit-toggle-buffer-lock) (global-set-key [?\C-c ?m ?m] 'magit-status) (global-set-key [?\C-c ?m ?r] 'magit-list-repositories) (global-set-key [?\C-c ?m ?w] 'magit-wip-log) @@ -686,18 +765,30 @@ (global-set-key [?\C-c ?t ?s] 'timeclock-status-string) (global-set-key [?\C-c ?t ?t] 'gtags-find-tag-from-here) (global-set-key [?\C-c ?t ?w] 'timeclock-workday-remaining-string) + (global-set-key [?\C-c ?v ?f] 'view-file) + (global-set-key [?\C-c ?v ?i] 'vm-visit-imap-folder) + (global-set-key [?\C-c ?v ?m] 'vm-visit-folder) (global-set-key [?\C-c ?v ?v] 'mdw-auto-revert) + (global-set-key [?\C-c ?w ? ] 'mdw-designate-window) + (global-set-key [?\C-c ?w ?b] 'w3m-bookmark-view) + (global-set-key [?\C-c ?w ?c] 'mdw-set-frame-colour) (global-set-key [?\C-c ?w ?d] 'mdw-divvy-window) (global-set-key [?\C-c ?w ?h] 'windmove-left) (global-set-key [?\C-c ?w ?j] 'windmove-down) (global-set-key [?\C-c ?w ?k] 'windmove-up) (global-set-key [?\C-c ?w ?l] 'windmove-right) + (global-set-key [?\C-c ?w ?r] 'winner-redo) + (global-set-key [?\C-c ?w ?s] 'mdw-switch-window-configuration) + (global-set-key [?\C-c ?w ?u] 'winner-undo) (global-set-key [?\C-c ?w ?w] 'mdw-set-frame-width) (global-set-key [?\C-c ?w up] 'windmove-up) (global-set-key [?\C-c ?w down] 'windmove-down) (global-set-key [?\C-c ?w left] 'windmove-left) (global-set-key [?\C-c ?w right] 'windmove-right) (global-set-key [?\C-h ?\C-m] 'manual-entry) + (global-set-key [?\C-x ?4 ?\C-j] 'dired-jump-other-window) + (global-set-key [?\C-x ?4 ?j] 'dired-jump-other-window) + (global-set-key [?\C-x ?\C-j] 'dired-jump) (global-set-key [?\C-x ?\C-n] 'skel-create-file) (global-set-key [?\C-x ?4 ?n] 'skel-create-file-other-window) (global-set-key [?\C-x ?5 ?n] 'skel-create-file-other-frame) @@ -721,10 +812,13 @@ (eval-after-load "hippie-exp" '(setq hippie-expand-try-functions-list - (remove-if (lambda (name) - (memq name '(try-expand-list - try-expand-list-all-buffers))) - hippie-expand-try-functions-list))) + (remove-if (lambda (name) + (memq name '(try-expand-list + try-expand-list-all-buffers))) + hippie-expand-try-functions-list))) + +(autoload 'dired-jump "dired-x") +(autoload 'dired-jump-other-window "dired-x") (eval-after-load "dired" '(progn @@ -735,7 +829,7 @@ (and (fboundp 'dired-do-relsymlink) (define-key dired-mode-map [?\C-c ?\C-s] 'dired-do-relsymlink)))) (setq dired-guess-shell-alist-user - '(("\\.pdf\\'" "mupdf"))) + '(("\\.pdf\\'" "mupdf"))) (add-hook 'org-mode-hook #'(lambda () (mdw-clobber-evil-keymap org-mode-map))) @@ -749,78 +843,78 @@ ;; Minor mode listing (setq minor-mode-alist - (mdw-uniquify-alist '((reveal-mode (hs-minor-mode - " hs/r" - (global-reveal-mode - "" " Reveal"))) - (hs-minor-mode (reveal-mode "" " hs")) - (abbrev-mode "") - (gtags-mode "")) - minor-mode-alist)) + (mdw-uniquify-alist '((reveal-mode (hs-minor-mode + " hs/r" + (global-reveal-mode + "" " Reveal"))) + (hs-minor-mode (reveal-mode "" " hs")) + (abbrev-mode "") + (gtags-mode "")) + minor-mode-alist)) ;; Recognising types of files. (setq auto-mode-alist - (append `(("\\.p[lm]$" . cperl-mode) - ("\\.sage$" . python-mode) - ("\\.m$" . objc-mode) - ("\\.mxd$" . c-mode) - ("\\.cs$" . csharp-mode) - ("\\.go$" . go-mode) - ("\\.org$" . org-mode) - ("\\.make$" . makefile-mode) - ("\\.mk?d$" . markdown-mode) - ;; ("/[ch]/" . c-mode) - (,(concat "/\\(" - "\\.stgit\\.msg" "\\|" - "\\.topmsg" "\\|" - "\\.git/COMMIT_EDITMSG" "\\|" - "svn-commit\\.tmp" "\\|" - "svk-commit[^/.]*\\.tmp" - "\\)$") - . text-mode) - (,(concat "^" tmpdir "/\\(" - "svk-commit[^/.]*\\.tmp" "\\|" - "gitci\\.[^/.]*" "\\|" - "cvs[^/.]\\{6\\}" "\\|" - "quilt_header\.[^/.]\\{6\\}" - "\\)$") - . text-mode) - ("\\.calc?$" . apcalc-mode) - ("/\\(s\\|sh\\)/" . arm-assembler-mode) - ("\\.\\(cmd\\|exec\\|rexx\\)$" . rexx-mode) - ("\\.st$" . smalltalk-mode) - ("\\.msgs$" . messages-mode) - ("/all-cmds\\.in$" . cpp-messages-mode) - ("\\.\\(tex\\|dtx\\)$" . latex-mode) - ("\\.gc$" . haskell.-mode) - (,(concat "^" (getenv "HOME") "/News/") . mdwmail-mode) - (,(concat "^" tmpdir "/\\(SLRN\\|snd\\|pico\\|mutt\\)") - . mdwmail-mode)) - auto-mode-alist)) + (append `(("\\.p[lm]$" . cperl-mode) + ("\\.sage$" . python-mode) + ("\\.m$" . objc-mode) + ("\\.mxd$" . c-mode) + ("\\.cs$" . csharp-mode) + ("\\.go$" . go-mode) + ("\\.org$" . org-mode) + ("\\.make$" . makefile-mode) + ("\\.mk?d$" . markdown-mode) + ;; ("/[ch]/" . c-mode) + (,(concat "/\\(" + "\\.stgit\\.msg" "\\|" + "\\.topmsg" "\\|" + "\\.git/COMMIT_EDITMSG" "\\|" + "svn-commit\\.tmp" "\\|" + "svk-commit[^/.]*\\.tmp" + "\\)$") + . text-mode) + (,(concat "^" tmpdir "/\\(" + "svk-commit[^/.]*\\.tmp" "\\|" + "gitci\\.[^/.]*" "\\|" + "cvs[^/.]\\{6\\}" "\\|" + "quilt_header\.[^/.]\\{6\\}" + "\\)$") + . text-mode) + ("\\.calc?$" . apcalc-mode) + ("/\\(s\\|sh\\)/" . arm-assembler-mode) + ("\\.\\(cmd\\|exec\\|rexx\\)$" . rexx-mode) + ("\\.st$" . smalltalk-mode) + ("\\.msgs$" . messages-mode) + ("/all-cmds\\.in$" . cpp-messages-mode) + ("\\.\\(tex\\|dtx\\)$" . latex-mode) + ("\\.gc$" . haskell.-mode) + (,(concat "^" (getenv "HOME") "/News/") . mdwmail-mode) + (,(concat "^" tmpdir "/\\(SLRN\\|snd\\|pico\\|mutt\\)") + . mdwmail-mode)) + auto-mode-alist)) (setq interpreter-mode-alist - (append `(("runlisp" . lisp-mode) - ("@BASH@" . sh-mode) - ("@PYTHON@" . python-mode) - ("sage" . python-mode) - ("@PERL@" . cperl-mode) - ("perl" . cperl-mode) - ("@TCLSH@" . tcl-mode) - ("@WISH@" . tcl-mode) - ("tclsh" . tcl-mode) - ("wish" . tcl-mode)) - interpreter-mode-alist)) + (append `(("runlisp" . lisp-mode) + ("@BASH@" . sh-mode) + ("@PYTHON@" . python-mode) + ("sage" . python-mode) + ("@PERL@" . cperl-mode) + ("perl" . cperl-mode) + ("@TCLSH@" . tcl-mode) + ("@WISH@" . tcl-mode) + ("tclsh" . tcl-mode) + ("wish" . tcl-mode)) + interpreter-mode-alist)) (setq completion-ignored-extensions - (append `(".hc" ".hi") completion-ignored-extensions)) + (append `(".hc" ".hi") completion-ignored-extensions)) (dolist (dir (remove-if-not (lambda (ext) (= (aref ext (- (length ext) 1)) ?/)) completion-ignored-extensions)) (if (/= (aref dir 0) ?/) (setq completion-ignored-extensions - (cons (concat "/" dir) - (remove dir completion-ignored-extensions))))) + (cons (concat "/" dir) + (remove dir completion-ignored-extensions))))) ;; Some common local definitions. @@ -835,43 +929,43 @@ '(let ((fix-args (if (mdw-version-< tramp-version "2.1") #'append #'list))) (setq tramp-methods - (mdw-uniquify-alist - `(("become" - (tramp-connection-function tramp-open-connection-su) - (tramp-remote-sh "/bin/sh") - (tramp-login-program "become") - (tramp-copy-program nil) - (tramp-copy-args nil) - (tramp-copy-keep-date-arg nil) - (tramp-login-args ,(funcall fix-args `("TERM=dumb" "%u")))) - ("really" - (tramp-connection-function tramp-open-connection-su) - (tramp-login-program "really") - (tramp-login-args ,(funcall fix-args - `("-u" "%u") - `("--") - `("env" "TERM=dumb" "/bin/sh"))) - (tramp-copy-program nil) - (tramp-copy-args nil) - (tramp-copy-keep-date-arg nil) - (tramp-remote-sh "/bin/sh")) - ,@tramp-methods))) + (mdw-uniquify-alist + `(("become" + (tramp-connection-function tramp-open-connection-su) + (tramp-remote-sh "/bin/sh") + (tramp-login-program "become") + (tramp-copy-program nil) + (tramp-copy-args nil) + (tramp-copy-keep-date-arg nil) + (tramp-login-args ,(funcall fix-args `("TERM=dumb" "%u")))) + ("really" + (tramp-connection-function tramp-open-connection-su) + (tramp-login-program "really") + (tramp-login-args ,(funcall fix-args + `("-u" "%u") + `("--") + `("env" "TERM=dumb" "/bin/sh"))) + (tramp-copy-program nil) + (tramp-copy-args nil) + (tramp-copy-keep-date-arg nil) + (tramp-remote-sh "/bin/sh")) + ,@tramp-methods))) (setq tramp-default-method "ssh") (let ((rootlyness (cond ((executable-find "really") "really") ((executable-find "become") "become") ((executable-find "sudo") "sudo") (t "su"))) (this-host (concat "\\`\\(localhost\\|" - (system-name) "\\|\\)\\'")) + (system-name) "\\)?\\'")) (this-user (concat "\\`\\(" (user-login-name) "\\|" - (user-real-login-name) "\\|\\)\\'"))) + (user-real-login-name) "\\)?\\'"))) (setq tramp-default-method-alist - `((,this-host nil ,rootlyness) - (nil ,this-user "ssh") - (nil "." ,rootlyness))) + `((,this-host nil ,rootlyness) + (nil ,this-user "ssh") + (nil "." ,rootlyness))) (setq tramp-default-proxies-alist - `((,this-host nil nil) - (nil "." "/ssh:%h:")))))) + `((,this-host nil nil) + (nil "." "/ssh:%h:")))))) ;;;-------------------------------------------------------------------------- ;;; General fontification. @@ -890,16 +984,16 @@ ;; Late, for `mdw-black-background'. (setq-default py-python-command-args - `("-i" "-colors" ,(if mdw-black-background "Linux" "LightBG"))) + `("-i" "-colors" ,(if mdw-black-background "Linux" "LightBG"))) ;;;-------------------------------------------------------------------------- ;;; Blogging. (setq weblogger-config-alist - '(("vox" - ("user" . "mdw") - ("server-url" . "http://vox.distorted.org.uk/admin/mt-xmlrpc.cgi") - ("weblog" . "1")))) + '(("vox" + ("user" . "mdw") + ("server-url" . "http://vox.distorted.org.uk/admin/mt-xmlrpc.cgi") + ("weblog" . "1")))) ;;;-------------------------------------------------------------------------- ;;; Shell mode. @@ -908,8 +1002,8 @@ (setq shell-prompt-pattern "^[^]#$%>»}\n]*\\([]#$%»}]\\|>>?\\) *") (setq comint-password-prompt-regexp - (concat "\\(\\([Ee]nter \\|[Oo]ld \\|[Nn]ew \\|[a-zA-Z0-9_]*'s \\|^\\)" - "[Pp]assword\\|[Pp]ass ?phrase\\(\\| [-a-zA-Z0-9._]+\\)\\):") + (concat "\\(\\([Ee]nter \\|[Oo]ld \\|[Nn]ew \\|[a-zA-Z0-9_]*'s \\|^\\)" + "[Pp]assword\\|[Pp]ass ?phrase\\( [-a-zA-Z0-9._]+\\)?\\):") comint-file-name-chars "~/A-Za-z0-9+@:_.$#%,={}-" shell-file-name-chars comint-file-name-chars)