-;;; -*-emacs-lisp-*-
-;;;
-;;; $Id: .emacs,v 1.11 1997/01/01 18:47:09 mdw Exp $
+;;; -*- mode: emacs-lisp; coding: utf-8 -*-
;;;
;;; Emacs configuration file
;;;
;; --- Load some other bits of code ---
-(setq load-path (cons "~/lib/emacs" load-path))
-
(maybe-autoload 'cc-mode "cc-mode" nil t)
(maybe-autoload 'rexx-mode "rexx-mode" nil t)
(maybe-autoload 'cvs-update "pcl-cvs" nil t)
(maybe-autoload 'debian-changelog-mode "debian-changelog-mode" nil t)
(maybe-autoload 'git-status "git" nil t)
+(maybe-autoload 'git-blame-mode "git-blame" nil t)
+(maybe-autoload 'stgit "stgit" nil t)
(and (library-exists-p "vc-git")
(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
- (standard-display-european 1)
+ ;; Have top-bit-set characters work properly in terminals.
(let ((im (current-input-mode)))
(apply #'set-input-mode
- (nconc (list (nth 0 im) (nth 1 im) 0) (nthcdr 3 im))))
- (set-language-environment "Latin-1"))
+ (nconc (list (nth 0 im) (nth 1 im) 0) (nthcdr 3 im)))))
;; --- Don't disable any commands ---
(mdw-divvy-window)
+;; --- Postscript printing ---
+
+(setq ps-paper-type 'a4
+ ps-print-color-p nil
+ ps-landscape-mode t
+ ps-number-of-columns 3
+ ps-font-family 'Courier
+ ps-font-size 4)
+
+;; --- Splash screen stuff ---
+
+(or window-system
+ (setq inhibit-splash-screen t
+ inhibit-startup-message t))
+
;; --- Other goodies ---
-(resize-minibuffer-mode 1) ;Make minibuffer grow dynamically
+(trap (resize-minibuffer-mode 1)) ;Make minibuffer grow dynamically
(auto-compression-mode 1) ;Enable automatic compression
(setq dabbrev-case-replace nil) ;Retain case when completing
(setq next-line-add-newlines nil) ;Don't add weird newlines
(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 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)
(setq cltl2-root-url (mdw-config 'cltl-url))
(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)
(vertical-scroll-bars . right))
(and window-system
'((cursor-type . bar)
- (cursor-blink . t)))
+ (cursor-blink . t)
+ (left-fringe . 5)
+ (right-fringe . 5)
+ (scroll-bar-width . 15)))
'((cursor-color . "red"))
(if mdw-black-background
'((background-color . "black")
(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)
(append `(("\\.p[lm]$" . perl-mode)
("\\.m$" . objc-mode)
("\\.mxd$" . c-mode)
+ ("\\.cs" . csharp-mode)
;; ("/[ch]/" . c-mode)
(,(concat "/\\("
"\\.stgit\\.msg" "\\|"
(mapcar (lambda (hook) (add-hook hook 'mdw-misc-mode-config))
'(c-mode-hook c++-mode-hook objc-mode-hook java-mode-hook
perl-mode-hook cperl-mode-hook python-mode-hook awk-mode-hook
- tcl-mode-hook
+ tcl-mode-hook asm-mode-hook
TeX-mode-hook LaTeX-mode-hook TeXinfo-mode-hook
tex-mode-hook latex-mode-hook texinfo-mode-hook
emacs-lisp-mode-hook scheme-mode-hook
(global-font-lock-mode t)
(defalias 'perl-mode 'cperl-mode)
-;;;----- SGML hacking -------------------------------------------------------
-
-(defun mdw-sgml-mode ()
- (interactive)
- (sgml-mode)
- (mdw-standard-fill-prefix "")
- (make-variable-buffer-local 'sgml-delimiters)
- (setq sgml-delimiters
- '("AND" "&" "COM" "--" "CRO" "&#" "DSC" "]" "DSO" "[" "DTGC" "]"
- "DTGO" "[" "ERO" "&" "ETAGO" ":e" "GRPC" ")" "GRPO" "(" "LIT" "\""
- "LITA" "'" "MDC" ">" "MDO" "<!" "MINUS" "-" "MSC" "]]" "NESTC" "{"
- "NET" "}" "OPT" "?" "OR" "|" "PERO" "%" "PIC" ">" "PIO" "<?"
- "PLUS" "+" "REFC" "." "REP" "*" "RNI" "#" "SEQ" "," "STAGO" ":"
- "TAGC" "." "VI" "=" "MS-START" "<![" "MS-END" "]]>"
- "XML-ECOM" "-->" "XML-PIC" "?>" "XML-SCOM" "<!--" "XML-TAGCE" "/>"
- "NULL" ""))
- (setq major-mode 'mdw-sgml-mode)
- (setq mode-name "[mdw] SGML")
- (run-hooks 'mdw-sgml-mode-hook))
-
;;;----- Rootly editingness -------------------------------------------------
(eval-after-load "tramp"
;; --- Configure lazy fontification ---
-(setq font-lock-support-mode 'lazy-lock-mode)
+(and (fboundp 'lazy-lock-mode)
+ (setq font-lock-support-mode 'lazy-lock-mode))
; (setq lazy-lock-defer-contextually t)
(setq lazy-lock-defer-time nil)
(setq font-lock-maximum-decoration 3)
(add-hook 'objc-mode-hook 'mdw-fontify-c-and-c++ t)
(add-hook 'c++-mode-hook 'mdw-fontify-c-and-c++ t)
(add-hook 'linux-c-mode-hook #'(lambda () (setq c-basic-offset 8)))
+(add-hook 'asm-mode-hook 'mdw-fontify-asm t)
(add-hook 'apcalc-mode-hook 'mdw-misc-mode-config t)
(add-hook 'apcalc-mode-hook 'mdw-fontify-apcalc t)
(add-hook 'latex-mode-hook 'mdw-fontify-tex t)
(add-hook 'sh-mode-hook #'mdw-setup-sh-script-mode)
+(add-hook 'autoconf-mode-hook #'mdw-setup-m4)
+(add-hook 'm4-mode-hook #'mdw-setup-m4)
(add-hook 'smalltalk-mode-hook 'mdw-fontify-smalltalk t)
(add-hook 'smalltalk-mode-hook 'mdw-setup-smalltalk t)
(add-hook 'slime-repl-mode-hook 'mdw-fontify-lispy t)
(add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
(trap
- (require 'slime)
- (slime-setup :autodoc t))
-(trap (require 'xscheme))
-(setq-default xscheme-process-command-line "scheme -large -emacs")
+ (if (not mdw-fast-startup)
+ (progn
+ (require 'slime-autoloads)
+ (slime-setup '(slime-autodoc)))))
(add-hook 'inferior-lisp-mode-hook
#'(lambda ()
(local-set-key "\C-m" 'comint-send-and-indent)) t)
(add-hook 'text-mode-hook 'mdw-text-mode t)
+;;;----- TeX stuff ----------------------------------------------------------
+
+(setq TeX-output-view-style
+ '(("^dvi$"
+ ("^landscape$" "^pstricks$\\|^pst-\\|^psfrag$")
+ "%(o?)dvips -t landscape %d -o && evince %f")
+ ("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$"
+ "%(o?)dvips %d -o && evince %f")
+ ("^dvi$"
+ ("^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$" "^landscape$")
+ "%(o?)xdvi %dS -paper a4r -s 0 %d")
+ ("^dvi$" "^a4\\(?:dutch\\|paper\\|wide\\)\\|sem-a4$"
+ "%(o?)xdvi %dS -paper a4 %d")
+ ("^dvi$"
+ ("^a5\\(?:comb\\|paper\\)$" "^landscape$")
+ "%(o?)xdvi %dS -paper a5r -s 0 %d")
+ ("^dvi$" "^a5\\(?:comb\\|paper\\)$" "%(o?)xdvi %dS -paper a5 %d")
+ ("^dvi$" "^b5paper$" "%(o?)xdvi %dS -paper b5 %d")
+ ("^dvi$" "^letterpaper$" "%(o?)xdvi %dS -paper us %d")
+ ("^dvi$" "^legalpaper$" "%(o?)xdvi %dS -paper legal %d")
+ ("^dvi$" "^executivepaper$" "%(o?)xdvi %dS -paper 7.25x10.5in %d")
+ ("^dvi$" "." "%(o?)xdvi %dS %d")
+ ("^pdf$" "." "evince %o")
+ ("^html?$" "." "netscape %o")))
+
+;;;----- SLIME setup --------------------------------------------------------
+
+(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 ---
-(setq shell-prompt-pattern "^[^]#$%>»}\n]*[]#$%>»}] *")
+(setq shell-prompt-pattern "^[^]#$%>»}\n]*[]#$%>»}] *")
(setq comint-password-prompt-regexp
(concat "\\(\\([Oo]ld \\|[Nn]ew \\|[a-zA-Z0-9_]*'s \\|^\\)"
"[Pp]assword\\|pass phrase\\):\\s *\\'"))