;;; -*- mode: emacs-lisp; coding: utf-8 -*-
;;;
-;;; $Id: .emacs,v 1.11 1997/01/01 18:47:09 mdw Exp $
-;;;
;;; Emacs configuration file
;;;
;;; (c) 1996-1999 Mark Wooding
(not (memq 'GIT vc-handled-backends))
(setq vc-handled-backends (cons 'GIT vc-handled-backends)))
(and (library-exists-p "quilt")
+ (not mdw-fast-startup)
(load "quilt"))
-(trap
- (or (fboundp 'make-regexp)
- (load "make-regexp")))
-
-(trap (require 'tex-site))
+(trap (or mdw-fast-startup (require 'tex-site)))
;; --- Skeleton stuff ---
-(trap (require 'skel-init))
+(trap (or mdw-fast-startup (require 'skel-init)))
;; --- Window system-dependent things ---
(setq backup-by-copying-when-linked t)
(setq backup-by-copying-when-mismatch t)
+(setq mdw-backup-disable-regexps
+ '("/\\.git/COMMIT_EDITMSG$"
+ "/\\.stgit\\(-edit\\.txt\\|msg\\.txt\\|\\.msg\\)$"))
+
+;; --- Safe variables ---
+
+(setq safe-local-variable-values
+ '((make-backup-files . nil)))
+
;; --- Calculator fiddling ---
(setq calc-settings-file "~/.emacs-calc")
(setq rmail-display-summary t)
(setq rmail-file-name "~/Mail/rmail")
-;; --- GNUS configuration ---
-
-(setq gnus-select-method '(nntp "tux.nsict.org"))
-(setq gnus-read-active-file 'some)
-(setq gnus-inhibit-startup-message t)
-(setq gnus-large-newsgroup 500)
-
;; --- Internationalization twiddling ---
(trap
ps-landscape-mode t
ps-number-of-columns 3
ps-font-family 'Courier
- ps-font-size 9)
+ ps-font-size 4)
;; --- Splash screen stuff ---
(setq dabbrev-case-replace nil) ;Retain case when completing
(setq next-line-add-newlines nil) ;Don't add weird newlines
(setq split-height-threshold 45) ;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
(setq dired-deletion-confirmer ;Make deletion easier in dired
(symbol-function 'y-or-n-p))
(setq dired-listing-switches "-alF") ;Do `ls -F' things in dired windows
+(setq wdired-allow-to-change-permissions t)
(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-default fill-column 77) ;I use rather narrow windows
(setq-default comment-column 40) ;Set a standard comment column
(setq-default truncate-partial-width-windows nil)
+(setq woman-use-own-frame nil) ;Keep man pages somewhere sensible
(setq diff-switches "-u" ;I like reading unified diffs
cvs-diff-flags (list diff-switches))
(setq echo-keystrokes 10) ;Long delay before keystrokes echo
(setq ange-ftp-ftp-program-name "pftp") ;Use passive FTP
(setq find-ls-option ;Build file lists efficiently
'("-print0 | xargs -0r ls -ld" . "ld"))
+(setq bookmark-save-flag 0) ;Save bookmarks automatically
(setq Info-fontify-maximum-menu-size 60000)
-(setq ispell-dictionary "british"
- flyspell-default-dictionary "british"
+(setq set-mark-command-repeat-pop t)
+(setq ispell-program-name "aspell"
+ ispell-local-dictionary "en_GB-ize-w_accents"
+ flyspell-default-dictionary "en_GB-ize-w_accents"
ispell-silently-savep t)
(trap
(require 'uniquify)
(trap
(tooltip-mode 0)
(tool-bar-mode 0))
-(trap (global-auto-revert-mode t))
+(trap (or mdw-fast-startup (global-auto-revert-mode t)))
(setq psgml-html-build-new-buffer nil)
+(defvar mdw-black-background t)
+
+(eval-after-load "outline" '(require 'foldout))
+
(setq cltl2-root-url (mdw-config 'cltl-url))
(setq common-lisp-hyperspec-root (mdw-config 'hyperspec-url))
;;;----- Calendar configuration ---------------------------------------------
+(setq diary-file "~/etc/diary")
+
;; --- Trivial stuff for the sunrise/sunset calculations ---
(setq calendar-latitude 52.2)
(setq calendar-longitude 0.1)
(setq calendar-location-name "Cambridge, UK")
+;; --- Holidays ---
+
+(and (not mdw-fast-startup)
+ (trap
+ (require 'ew-hols)
+ (setq other-holidays (append english-and-welsh-bank-holidays
+ other-holidays))))
+
;; --- Date format fiddling ---
(setq european-calendar-style t)
(let ((view-diary-entries-initially t))
(calendar))))
-(defvar mdw-black-background t)
+;;;----- MailCrypt ----------------------------------------------------------
;; --- Define more mode hooks for MailCrypt ---
(trap
(and (string-match "linux" (symbol-name system-type))
+ (not mdw-fast-startup)
(progn (require 'mailcrypt-init)
(require 'mailcrypt)
(setq mc-default-scheme 'mc-scheme-gpg)
;; --- Global keymap changes ---
(trap
- (windmove-default-keybindings)
- (setq windmove-wrap-around t))
+ (windmove-default-keybindings))
+(setq windmove-wrap-around t)
(trap (iswitchb-mode))
-(global-set-key "\M-#" 'calc-dispatch)
-(global-set-key [f4] 'query-replace-regexp)
-(global-set-key [f5] 'goto-line)
-(global-set-key [f6] 'auto-fill-mode)
-(global-set-key [f7] 'occur)
-(global-set-key [f8] 'undo)
-(global-set-key [f9] 'mdw-divvy-window)
+(global-set-key [?\C-x ?w left] 'windmove-left)
+(global-set-key [?\C-x ?w ?h] 'windmove-left)
+(global-set-key [?\C-x ?w up] 'windmove-up)
+(global-set-key [?\C-x ?w ?k] 'windmove-up)
+(global-set-key [?\C-x ?w down] 'windmove-down)
+(global-set-key [?\C-x ?w ?j] 'windmove-down)
+(global-set-key [?\C-x ?w right] 'windmove-right)
+(global-set-key [?\C-x ?w ?l] 'windmove-right)
+(global-set-key [?\C-x ?g ?l] 'org-store-link)
+(global-set-key [?\C-x ?g ?a] 'org-agenda)
+(global-set-key [?\C-x ?t ?i] 'timeclock-in)
+(global-set-key [?\C-x ?t ?c] 'timeclock-change)
+(global-set-key [?\C-x ?t ?o] 'timeclock-out)
+(global-set-key [?\C-x ?t ?r] 'timeclock-reread-log)
+(global-set-key [?\C-x ?t ?w] 'timeclock-workday-remaining-string)
+(global-set-key [?\C-x ?t ?s] 'timeclock-status-string)
+(global-set-key [?\M-#] 'calc-dispatch)
+(global-set-key [?\C-x ?/] 'auto-fill-mode)
+(global-set-key [?\C-x ?w ?d] 'mdw-divvy-window)
(global-set-key [insertchar] 'overwrite-mode)
-(global-set-key "\C-xm" 'vm-mail)
-(global-set-key "\C-x\C-n" 'skel-create-file)
-(global-set-key "\C-x4n" 'skel-create-file-other-window)
-(global-set-key "\C-x5n" 'skel-create-file-other-frame)
+(global-set-key [?\C-x ?m] 'vm-mail)
+(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)
(global-set-key [delete] 'delete-char)
-(global-set-key "\C-[\C-m" 'call-last-kbd-macro)
-(global-set-key "\M-q" 'mdw-fill-paragraph)
-(global-set-key "\C-h\C-m" 'manual-entry)
+(global-set-key [?\M-q] 'mdw-fill-paragraph)
+(global-set-key [?\C-h ?\C-m] 'manual-entry)
+(global-set-key [C-M-backspace] 'backward-kill-sexp)
(global-set-key [mode-line C-mouse-1] 'mouse-tear-off-window)
(global-set-key [vertical-scroll-bar C-down-mouse-1]
'mouse-drag-vertical-line)
(global-set-key [vertical-scroll-bar C-mouse-1]
#'(lambda () (interactive)))
-(global-set-key [mouse-4] 'mdw-wheel-up)
-(global-set-key [mouse-5] 'mdw-wheel-down)
;; --- Recognising types of files ---
("\\.m$" . objc-mode)
("\\.mxd$" . c-mode)
("\\.cs" . csharp-mode)
+ ("\\.org$" . org-mode)
;; ("/[ch]/" . c-mode)
(,(concat "/\\("
"\\.stgit\\.msg" "\\|"
(add-hook 'lisp-interaction-mode-hook 'mdw-fontify-lispy t)
(add-hook 'slime-repl-mode-hook 'mdw-fontify-lispy t)
(add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
-(trap
- (require 'slime-autoloads)
- (slime-setup '(slime-autodoc)))
-(trap (require 'xscheme))
-(setq-default xscheme-process-command-line "scheme -large -emacs")
(add-hook 'inferior-lisp-mode-hook
#'(lambda ()
(local-set-key "\C-m" 'comint-send-and-indent)) t)
("^pdf$" "." "evince %o")
("^html?$" "." "netscape %o")))
+;;;----- SLIME setup --------------------------------------------------------
+
+(trap
+ (if (not mdw-fast-startup)
+ (progn
+ (require 'slime-autoloads)
+ (slime-setup '(slime-autodoc slime-c-p-c)))))
+
+(let ((stuff '((cmucl ("cmucl"))
+ (sbcl ("sbcl") :coding-system utf-8-unix)
+ (clisp ("clisp") :coding-system utf-8-unix))))
+ (or (boundp 'slime-lisp-implementations)
+ (setq slime-lisp-implementations nil))
+ (while stuff
+ (let* ((head (car stuff))
+ (found (assq (car head) slime-lisp-implementations)))
+ (setq stuff (cdr stuff))
+ (if found
+ (rplacd found (cdr head))
+ (setq slime-lisp-implementations
+ (cons head slime-lisp-implementations))))))
+(setq slime-default-lisp 'sbcl)
+
;;;----- Shell mode ---------------------------------------------------------
;; --- Make the shell mode aware of my prompt ---