;;; My init.el file, used to initialize Emacs ;; Author: Michael W. Olson (mwolson AT gnu DOT org) ;; URL: http://mwolson.org/projects/EmacsConfigFiles.html ;; The code in this file may be used, distributed, and modified ;; without restriction. ;; I use initsplit.el to separate customize settings on a per-project ;; basis. ;; Comment-out any (load ...) statements that load files you haven't ;; downloaded from me by putting `;;' in front of each line you wish ;; to comment out. ;; Also: I like to place all of my emacs-related configuration and ;; settings stuff into the ~/.emacs.d/ directory. Feel free to ;; disagree with me and do a `M-x replace-regexp \.emacs\.d/ ;; '. ;; If this seems to be too much for you, perhaps you should download ;; my `emacs-primer.el' file. The settings are more likely to work on ;; older versions of Emacs and are less tweaked out than what you see ;; here. `emacs-primer.el' was made especially for those who are ;; trying out Emacs and want some sane defaults. ;;; Display ;; Set fonts ;; old: mule-unicode-0100-24ff: ;; -*-gothic-medium-r-normal-*-*-*-*-*-*-*-iso10646-1") (defun my-display-reset-font () (interactive) ;;; (condition-case nil ;;; (set-face-font 'default "Bitstream Vera Sans Mono-11") ;;; (error ;;; (set-face-font 'default ;;; "-jmk-neep-medium-r-normal-*-*-140-*-*-*-*-iso10646-1") (set-face-background 'default "Gainsboro" (selected-frame)) (setq-default line-spacing 0)) (defun my-display-reset-inherited-frame-stuff () "Reset inherited items for frames." (interactive) (let ((inherited '(font background-color))) (dolist (item inherited) (add-to-list 'default-frame-alist (cons item (cdr (assq item (frame-parameters))))))) (add-to-list 'default-frame-alist (cons 'height 45)) (add-to-list 'default-frame-alist (cons 'width 80))) (defun my-display-reset-frame-size () "Reset the size of the current frame according to `default-frame-alist'." (interactive) (dolist (param '(width height)) (set-frame-parameter nil param (cdr (assoc param default-frame-alist))))) (add-hook 'after-init-hook 'my-display-reset-frame-size) (when window-system ;; Make Greek characters look decent ; (create-fontset-from-fontset-spec ; "-*-terminus-medium-r-*-*-14-*-*-*-*-*-iso8859-15, ;mule-unicode-0100-24ff:-*-freemono-medium-r-*-*-17-*-*-*-c-*-iso10646-1, ;mule-unicode-2500-33ff:-*-freemono-medium-r-*-*-17-*-*-*-c-*-iso10646-1") (my-display-reset-font) (my-display-reset-inherited-frame-stuff) (my-display-reset-frame-size) (if (fboundp 'redisplay) (redisplay t) (sit-for 0.1))) ;; Don't show the menu unless we are using X (unless window-system (menu-bar-mode 0)) ;; No tool bar, please (tool-bar-mode 0) ;;; Pre-customization stuff ;; Stuff that might not be in every version of Emacs (add-to-list 'load-path "~/elisp" t) ;;; This was installed by package-install.el. ;;; This provides support for the package system and ;;; interfacing with ELPA, the package archive. ;;; Move this code earlier if you want to reference ;;; packages in your .emacs. (when (load (expand-file-name "~/.emacs.d/elpa/package.el")) (package-initialize)) ;;(setq debug-on-quit t) ;;; Determine whether to start various programs (defun my-parse-commandline-option (opt expect-followup) (let ((ret nil) (args nil)) (while command-line-args (if (string= opt (car command-line-args)) (progn (if expect-followup (progn (setq ret (cadr command-line-args) command-line-args (cddr command-line-args))) (setq ret t command-line-args (cdr command-line-args)))) (add-to-list 'args (car command-line-args) t) (setq command-line-args (cdr command-line-args)))) (setq command-line-args args) ret)) (defvar my-start-gnus (my-parse-commandline-option "--gnus" nil) "Whether Gnus is to be run at startup.") (defvar my-start-planner (not (my-parse-commandline-option "--no-plan" nil)) "Whether Planner is to be run at startup.") (defvar my-start-server (not (my-parse-commandline-option "--no-server" nil)) "Whether a server should be started.") ;;; Debian packages -- I'm eccentric enough to make my own handling of ;;; this. (load "~/.emacs.d/debian-init") ;;; Customizations (custom-set-variables ;; custom-set-variables was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(add-log-keep-changes-together t) '(add-log-mailing-address "mwolson@gnu.org") '(allout-auto-activation t) '(apropos-do-all t) '(archive-downloader-after-download-hook (quote (mwolson/archive-downloader-write-m3u))) '(auto-compression-mode t nil (jka-compr)) '(backup-directory-alist (quote (("." . "~/.emacs.d/backup")))) '(blink-cursor-mode nil nil (frame)) '(blink-matching-delay 10) '(blink-matching-paren-on-screen t) '(bookmark-default-file "~/.emacs.d/.bookmark") '(browse-url-browser-function (quote w3m-browse-url)) '(browse-url-generic-program "gnome-open") '(browse-url-new-window-flag t) '(bsh-classpath (quote ("/usr/share/java"))) '(bsh-jar "/usr/share/java/bsh.jar") '(change-log-mode-hook (quote ((lambda nil (flyspell-mode 1))))) '(column-number-mode t) '(confirm-kill-emacs (quote y-or-n-p)) '(current-language-environment "UTF-8") '(debian-changelog-full-name "Michael W. Olson (GNU address)") '(debian-changelog-mailing-address "mwolson@gnu.org") '(debian-changelog-mode-hook (quote (turn-on-auto-fill flyspell-mode turn-on-muse-list-edit-minor-mode))) '(default-input-method "TeX") '(delete-selection-mode t) '(develock-auto-enable t) '(dict-noauth t) '(dictionary-server "www.flyingtux.com") '(dictionary-use-single-buffer t) '(diff-switches "-u") '(dired-dwim-target t) '(dired-recursive-copies (quote always)) '(dired-recursive-deletes (quote always)) '(ediff-window-setup-function (quote ediff-setup-windows-plain)) '(enable-recursive-minibuffers t) '(eshell-modules-list (quote (eshell-alias eshell-banner eshell-basic eshell-cmpl eshell-dirs eshell-glob eshell-hist eshell-ls eshell-pred eshell-prompt eshell-rebind eshell-script eshell-term))) '(eshell-prefer-to-shell nil nil (eshell)) '(eshell-term-name "vt100") '(eshell-visual-commands (quote ("vi" "screen" "top" "less" "more" "lynx" "ncftp" "pine" "tin" "trn" "elm" "dbaccess" "menu" "senter2" "most" "emacs"))) '(ffap-machine-p-known (quote reject)) '(flyspell-issue-welcome-flag nil) '(footnote-body-tag-spacing 1) '(gc-cons-threshold 4000000) '(grep-find-command "find . -type f ! -regex \".*/\\({arch}\\|\\.arch-ids\\|\\.svn\\|_darcs\\|\\.bzr\\|\\.git\\|\\.hg\\)/.*\" -print0 | xargs -0 -e grep -nH -e ") '(highlight-nonselected-windows t) '(icomplete-mode t) '(ido-default-buffer-method (quote selected-window)) '(ido-everywhere nil) '(ido-mode (quote buffer) nil (ido)) '(ido-save-directory-list-file "~/.emacs.d/.ido.last") '(imaxima-fnt-size "LARGE") '(imaxima-use-maxima-mode-flag t) '(indent-tabs-mode nil) '(initsplit-customizations-alist (quote (("^bbdb-" "~/.emacs.d/bbdb-init.el" t) ("^blosxom-" "~/.emacs.d/blosxom-init.el" t) ("^\\(bzr\\|dvc\\|tla\\|xgit\\)-" "~/.emacs.d/dvc-init.el" nil) ("^emacs-wiki-" "~/.emacs.d/emacs-wiki-init.el" nil) ("^emms-" "~/.emacs.d/emms-init.el" nil) ("^idledo-" "~/.emacs.d/erbot-init.el" t) ("^erc-" "~/.emacs.d/erc-init.el" nil) ("^jde-" "~/.emacs.d/jde-init.el" nil) ("^journal-" "~/.emacs.d/journal-init.el" t) ("^nethack-" "~/.emacs.d/nethack-init.el" t) ("^\\(appt\\|diary\\|planner\\|remember\\|calendar\\)-" "~/.emacs.d/planner-init.el" t) ("^\\(canlock\\|epg\\|gnus\\|message\\|mm\\|nnimap\\|nnmail\\|pgg\\|smtpmail\\|tls\\)-" "~/.emacs.d/.gnus.el" t) ("^muse-" "~/.emacs.d/muse-init.el" t) ("^\\(cperl\\|sepia\\)-" "~/.emacs.d/sepia-init.el" t) ("^\\(w3m\\|swc\\|simple-wiki\\)-" "~/.emacs.d/w3m-init.el" t)))) '(initsplit-sort-customizations t) '(ispell-local-dictionary "american") '(ispell-personal-dictionary nil) '(ispell-program-name "aspell") '(ispell-silently-savep t) '(ledger-data-file "~/ledger-data") '(ls-lisp-dirs-first t) '(ls-lisp-ignore-case t) '(ls-lisp-support-shell-wildcards nil) '(ls-lisp-use-insert-directory-program nil) '(mail-interactive t) '(mail-user-agent (quote gnus-user-agent)) '(mark-diary-entries-in-calendar t) '(max-lisp-eval-depth 1000) '(max-specpdl-size 1000) '(mouse-autoselect-window nil) '(mouse-wheel-mode t) '(mpc-mpd-music-directory "/stuff/music/mpd/tracks") '(post-email-address "mwolson@member.fsf.org") '(post-jump-header nil) '(recentf-mode nil) '(recentf-save-file "~/.emacs.d/.recentf") '(require-final-newline nil) '(safe-local-variable-values (quote ((unibyte . t) (flyspell-mode . -1) (allout-layout * 0 :)))) '(save-place t nil (saveplace)) '(save-place-file "~/.emacs.d/.places") '(save-place-limit 20) '(scroll-bar-mode nil) '(semanticdb-default-save-directory "~/.emacs.d/.semantic" t) '(session-save-file "/home/mwolson/.emacs.d/.session") '(show-paren-mode t) '(show-paren-style (quote parenthesis)) '(sql-product (quote mysql)) '(tab-stop-list (quote (4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 104 108 112 116 120))) '(tab-width 8) '(text-mode-hook (quote (text-mode-hook-identify flyspell-mode-on))) '(todo-initials "mwo") '(tooltip-use-echo-area t) '(tramp-auto-save-directory "~/.emacs.d/.autosave.d") '(tramp-backup-directory-alist (quote (("." . "~/.emacs.d/backup")))) '(tramp-default-method-alist (quote (("\\`localhost\\'" "\\`root\\'" "sudo")))) '(tramp-remote-path (quote ("/usr/xpg4/bin" "/bin" "/usr/bin" "/usr/sbin" "/usr/local/bin" "/usr/ccs/bin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" "/p/perl/bin"))) '(tumme-db-file "~/.emacs.d/.tumme/.tumme_db") '(tumme-dir "~/.emacs.d/.tumme/") '(tumme-external-viewer "display") '(tumme-gallery-dir "~/.emacs.d/.tumme/.tumme_gallery") '(tumme-main-image-directory "/stuff/pics/") '(tumme-temp-image-file "~/.emacs.d/.tumme/.tumme_temp") '(tumme-temp-rotate-image-file "~/.emacs.d/.tumme/.tumme_rotate_temp") '(tumme-thumbs-per-row 4) '(user-full-name "Michael Olson") '(user-mail-address "mwolson@member.fsf.org") '(vc-handled-backends (quote (RCS CVS SVN SCCS MCVS))) '(visible-bell t) '(winner-mode t nil (winner)) '(woman-fill-column 72) '(woman-use-own-frame nil) '(wtf-custom-alist nil) '(wtf-removed-acronyms nil) '(x-select-enable-clipboard t)) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(cperl-array-face ((((class color) (background light)) (:foreground "Blue" :weight bold)))) '(flyspell-duplicate ((t (:foreground "Gold4" :underline t :weight bold)))) '(font-lock-builtin-face ((((class color) (min-colors 88) (background light)) (:foreground "medium purple")))) '(font-lock-constant-face ((((class color) (min-colors 88) (background light)) (:foreground "medium slate blue")))) '(font-lock-string-face ((((class color) (min-colors 88) (background light)) (:foreground "forest green")))) '(font-lock-type-face ((((class color) (min-colors 88) (background light)) (:foreground "dodger blue")))) '(font-lock-variable-name-face ((((class color) (min-colors 88) (background light)) (:foreground "sienna")))) '(region ((((class color) (min-colors 88) (background light)) (:background "RoyalBlue2" :foreground "white")))) '(sh-heredoc ((((class color) (background light)) (:foreground "dark green")))) '(woman-italic ((t (:underline t :slant italic))))) ;;; Process startup files ;; Make additions to global-mode-string work as expected ;(setq global-mode-string '("")) ;; Make sure DEL key does what I want (when window-system (normal-erase-is-backspace-mode 1)) ;;; This should not be evaluated when I use sudo (when (not (string-equal "root" (getenv "USER"))) (load "~/.emacs.d/bbdb-init") (load "~/.emacs.d/emms-init") (unless my-start-gnus (load "~/.emacs.d/erc-init")) (load "~/.emacs.d/gnus-init") (load "~/.emacs.d/muse-init") (unless my-start-gnus (load "~/.emacs.d/nethack-init") (load "~/.emacs.d/planner-init") (load "~/.emacs.d/sepia-init")) (load "~/.emacs.d/dvc-init") (load "~/.emacs.d/w3m-init") (unless my-start-gnus (load "~/.emacs.d/auctex-init"))) ;;; Functions ;; I'd prefer to use the gnome-open command, but it was being a pain (defun my-fsck-gnome-open (url &rest crap) "Just open a browser window in a sane manner." (interactive (browse-url-interactive-arg "URL: ")) (start-process (concat "firefox " url) nil "firefox" url)) (defun count-words (start end) "Print number of words in the region." (interactive "r") (save-excursion (let ((n 0)) (goto-char start) (while (< (point) end) (when (forward-word 1) (setq n (1+ n)))) (message "Region has %d words" n) n))) (defmacro match-data-changed (&rest body) "Determine whether the match data has been modified by BODY." (let ((mdata (make-symbol "temp-buffer"))) `(let ((,mdata (match-data))) (prog1 ,@body (if (equal ,mdata (match-data)) (message "Match data has not been changed") (message "Match data has been changed!")))))) (put 'match-data-changed 'lisp-indent-function 0) (put 'match-data-changed 'edebug-form-spec '(body)) (defun byte-compile-this-file-temporarily () (interactive) (let ((file buffer-file-name)) (byte-compile-file file) (save-match-data (when (string-match "\\.el$" file) (delete-file (concat file "c")))))) ;;; Things that can't be changed easily using `customize' ;; Enable some commands (put 'downcase-region 'disabled nil) (put 'scroll-left 'disabled nil) (put 'upcase-region 'disabled nil) ;; Make URL configuration directory conform (setq url-configuration-directory "~/.emacs.d/.url") ;; Show lots of messages in the *Messages* buffer (setq message-log-max 500) ;; Load `dired' itself, with `tramp' extension (require 'dired) (require 'dired-x) (require 'wdired) (require 'tramp) ;; List directories first in dired (require 'ls-lisp) ;; Prefer woman to man for man pages (require 'man) (require 'woman) (fset 'man-ext (symbol-function 'man)) (defalias 'man 'woman) ;; Pre-load this so it doesn't spew messages at me later (condition-case nil (require 'eieio-opt) (error nil)) ;; Use develock (require 'develock) ;; Enable subversion support (require 'vc-svn) (require 'psvn) ;; Enable darcs support (require 'vc-darcs) (add-to-list 'vc-handled-backends 'DARCS) ;; Bind N and P in ediff so that I don't leave the control buffer (defun my-ediff-next-difference (&rest args) (interactive) (save-selected-window (call-interactively 'ediff-next-difference))) (defun my-ediff-previous-difference (&rest args) (interactive) (save-selected-window (call-interactively 'ediff-previous-difference))) (defun my-ediff-extra-keys () (define-key ediff-mode-map (kbd "N") #'my-ediff-next-difference) (define-key ediff-mode-map (kbd "P") #'my-ediff-previous-difference)) (add-hook 'ediff-keymap-setup-hook 'my-ediff-extra-keys) ;; Make TexInfo easier to work with (defun my-texinfo-view-file () "View the published version of the current file." (interactive) (let ((file (buffer-file-name))) (when (string-match "\\.tex\\(i\\|info\\)?\\'" file) (setq file (replace-match ".info" t t file)) (when (buffer-live-p (get-buffer "*info*")) (kill-buffer "*info*")) (info file)))) (defun my-texinfo-extra-keys () "Make texinfo stuff easier to work with." (define-key texinfo-mode-map (kbd "C-c C-p") #'makeinfo-buffer) (define-key texinfo-mode-map (kbd "C-c C-v") #'my-texinfo-view-file)) (add-hook 'texinfo-mode-hook 'my-texinfo-extra-keys) ;; Check out Stefan Monnier's mpc.el file ;;(add-to-list 'load-path "/stuff/proj/emacs/mpc/") ;;(require 'mpc) ;; Load lisp integration mode ;(add-to-list 'load-path "~/proj/emacs/slime-2.0" t) (setq inferior-lisp-program "clisp") (require 'slime) ;; work around bug in SLIME: nonexistent fn 'slime-quit (define-key slime-repl-mode-map (kbd "C-c M-g") #'slime-quit-lisp) ;; Don't warn me when opening some Common Lisp files (put 'package 'safe-local-variable 'symbolp) (put 'Package 'safe-local-variable 'symbolp) (put 'syntax 'safe-local-variable 'symbolp) (put 'Syntax 'safe-local-variable 'symbolp) (put 'Base 'safe-local-variable 'integerp) (put 'base 'safe-local-variable 'integerp) ;; Deal with javacc stuff (add-to-list 'auto-mode-alist '("\\.jj\\'" . java-mode)) (defun my-java-mode-stuff () "Deal with the love of tabs." (setq indent-tabs-mode nil tab-width 4 c-syntactic-indentation nil)) ;; (eval-after-load "cc-mode" ;; '(progn ;; (define-key java-mode-map "\t" 'self-insert-command))) ;;(require 'beanshell) ; needs eieio, which I detest ;; spellcheck comments and documentation (add-hook 'lisp-mode-hook 'flyspell-prog-mode) (add-hook 'emacs-lisp-mode-hook 'flyspell-prog-mode) (eval-after-load "cc-mode" '(progn (add-hook 'java-mode-hook 'my-java-mode-stuff) (add-hook 'java-mode-hook 'flyspell-prog-mode) (add-hook 'c-mode-hook 'flyspell-prog-mode))) (defun stupid-4tabs-mode () "Deal with the silly programmers who use the assumption TAB=4 spaces." (interactive) (setq indent-tabs-mode t tab-width 4 c-syntactic-indentation nil) (develock-refontify-buffers)) (defun my-fetch-url (url) "Fetch the given URL into a buffer and switch to it." (interactive (list (read-string "URL: "))) (require 'url-handlers) (let ((outer (generate-new-buffer (format "*URL: %s*" (substring url 0 40))))) (message "Fetching URL ...") (url-retrieve url `(lambda (status) (let ((results (current-buffer)) size-and-charset) (with-current-buffer ,outer (setq success (url-insert results)) (kill-buffer results) (unless (cadr size-and-charset) (decode-coding-inserted-region (point-min) (point-max) (buffer-name ,outer))) (goto-char (point-min))) (switch-to-buffer ,outer)))))) ;; Enable wdired on "r" (define-key dired-mode-map "r" 'wdired-change-to-wdired-mode) ;; Make tramp's backup directories the same as the normal ones (setq tramp-backup-directory-alist backup-directory-alist) ;; Find funtions and files at point (ffap-bindings) ;; Grand Unified Debugger (require 'gud) ;; Show Emacs where to find its source files (setq find-function-C-source-directory "/stuff/proj/emacs/emacs/git-emacs/src/") ;; Navigate the kill ring with the greatest of ease when doing M-y (require 'browse-kill-ring) (defadvice yank-pop (around kill-ring-browse-maybe (arg)) "If last action was not a yank, run `browse-kill-ring' instead." (if (not (eq last-command 'yank)) (browse-kill-ring) ad-do-it)) (ad-activate 'yank-pop) ;; Hack CSS mode (setq cssm-newline-before-closing-bracket t) (setq cssm-indent-function #'cssm-c-style-indenter) ;; Load imaxima (add-to-list 'load-path "~/proj/emacs/imaxima-imath") (require 'imaxima) ;; Split up various customizations into different files (require 'initsplit) ;; Load info and sml-mode before trying to deal with their mode maps (require 'info) (require 'sml-mode) ;; Put abbrevs in their proper place (setq abbrev-file-name "~/.emacs.d/.abbrev_defs") ;; Make a passable attempt at using UTF-8 in buffers (setq default-buffer-file-coding-system 'utf-8) (prefer-coding-system 'utf-8) ;; Load some miscellaneous files that I've made (add-to-list 'load-path "~/proj/emacs/misc") ;; an attempt to code some things from my algorithms class as Lisp (require 'algorithms) ;; wtf mode, which provides abbreviations and definitions (require 'wtf) ;; a snazzy downloader of OGG tunes from archive.org (require 'archive-downloader) ;; an editor of a single list (require 'edit-list) ;; I don't know if I'll ever want this, but here's a paperclip ripoff ;; in the spirit of mockery for M$ Office ;;(require 'paperclip) ;; Load ledger ;;(require 'ledger) ;; Load nxml-mode ;; (add-to-list 'load-path "/usr/share/emacs/site-lisp/nxml-mode/") ;; (setq rng-schema-locating-file-schema-file ;; "/usr/share/emacs/site-lisp/nxml-mode/schema/locate.rnc") ;; (setq rng-schema-locating-files ;; '("schemas.xml" "/usr/share/emacs/site-lisp/nxml-mode/schema/schemas.xml")) (defalias 'xml-mode 'nxml-mode) ;; Load xscheme ;; (require 'xscheme) ;; (define-key scheme-interaction-mode-map "\C-c\C-e" ;; #'advertised-xscheme-send-previous-expression) ;; Load scheme48.el (require 'scheme48) ;; (add-hook 'hack-local-variables-hook ;; (lambda () ;; (if (and (boundp 'scheme48-package) ;; scheme48-package) ;; (progn (scheme48-mode) ;; (hack-local-variables-prop-line))))) (defun run-scheme-kali-ref () (interactive) (let ((default-directory "/stuff/proj/research/s48/kali.reference/")) (run-scheme (concat default-directory "scheme48vm -i " default-directory "scheme48.image")))) (defun run-scheme-kali () (interactive) (let ((default-directory "/stuff/proj/research/s48/kali/")) (run-scheme (concat default-directory "scheme48vm -h 6000000 -i " default-directory "scheme48.image")))) (defun run-scheme-kali-initial () (interactive) (let ((default-directory "/stuff/proj/research/s48/kali/")) (run-scheme (concat default-directory "scheme48vm -i " default-directory "build/initial.image-32")))) (defun run-scheme-devel () (interactive) (let ((default-directory "/stuff/proj/research/s48/devel/")) (run-scheme (concat default-directory "scheme48vm -i " default-directory "scheme48.image")))) ;; Load flyspell mode (require 'flyspell) ;; Bring up planner page (when (and (fboundp 'plan) my-start-planner) (plan)) ;;; Key customizations (global-set-key "\C-cb" 'bbdb-display) (global-set-key "\C-xg" 'goto-line) ;; Make adding entries to debian/changelog easy (global-set-key "\C-xD" nil) (global-set-key "\C-xDa" 'debian-changelog-add-entry) ;; Map some keys to find-function/find-variable (global-set-key "\C-xF" nil) (global-set-key "\C-xFf" 'find-function) (global-set-key "\C-xFv" 'find-variable) (global-set-key "\C-xFl" 'find-library) (global-set-key "\C-xFa" 'find-face-definition) ;; Open a location quickly (global-set-key "\C-ca" nil) (global-set-key "\C-caf" (lambda () (interactive) (find-file ; sourceforge server "/bigmike160@hangit.sf.org:/home/groups/h/ha/hangit"))) (global-set-key "\C-cak" (lambda () (interactive) (find-file ; work machine "/mwolson@kilobyte.rcac.purdue.edu:/home/mwolson"))) (global-set-key "\C-cah" nil) (global-set-key "\C-caha" (lambda () (interactive) (find-file ; hcoop shell server "/mwolson@abulafia.hcoop.net:/etc"))) (global-set-key "\C-cahd" (lambda () (interactive) (find-file ; static hcoop server "/mwolson_admin@deleuze.hcoop.net#2222:/etc"))) (global-set-key "\C-cahf" (lambda () (interactive) (find-file ; primary hcoop server "/mwolson@fyodor.hcoop.net:/home/mwolson"))) (global-set-key "\C-cahm" (lambda () (interactive) (find-file ; dynamic hcoop server "/mwolson_admin@mire.hcoop.net:/etc"))) (global-set-key "\C-cap" nil) (global-set-key "\C-capm" (lambda () (interactive) (find-file ; PLUG music "/mwolson@plugmail:/home/mwolson"))) (global-set-key "\C-capo" (lambda () (interactive) (find-file ; PLUG office "/mwolson@plugoffice:/home/mwolson"))) (global-set-key "\C-capp" (lambda () (interactive) (find-file ; PLUG projects "/mwolson@plugprojects:/home/mwolson"))) (global-set-key "\C-capw" (lambda () (interactive) (find-file ; PLUG web "/mwolson@plugweb:/home/mwolson"))) (global-set-key "\C-caw" (lambda () (interactive) (find-file ; webmastering work "/mwolson@csociety.ecn.purdue.edu:/home/plug"))) (global-set-key "\C-cau" (lambda () (interactive) (find-file ; sudo on local server "/sudo::/etc"))) ;; I don't have any lost love for the key, so disable it (global-set-key [insert] (lambda () (interactive))) (global-set-key [insertchar] (lambda () (interactive))) ;; Disable the C-z key and its variant (global-set-key "\C-z" (lambda () (interactive))) (global-set-key "\C-x\C-z" (lambda () (interactive))) ;; Make the `q' key bury the current buffer when viewing help (define-key view-mode-map "q" 'bury-buffer) ;; Make the key scroll backwards in Info mode (define-key Info-mode-map [delete] 'Info-scroll-down) ;; Make the key scroll backwards in View mode (define-key view-mode-map [delete] 'View-scroll-page-backward) ;; Bad diff-mode! Don't mess with M-q (define-key diff-mode-map (kbd "M-q") 'fill-paragraph) ;; Bad SML mode! Don't mess with M-SPC (define-key sml-mode-map (kbd "M-SPC") 'just-one-space) ;; I don't like the buffer list (global-set-key "\C-x\C-b" 'ido-switch-buffer) ;; Boo to transpose (global-set-key "\C-t" (lambda () (interactive))) ;;; Do things differently if I am using sudo (if (string-equal "root" (getenv "USER")) ;; If user is root (sudo-ing), do these things ;; Change default directory to /etc (cd "/etc") ;; If user is normal, do these things ;; Start server (require 'server) (when (and my-start-gnus my-start-server) (server-start)) ;; Change default directory to ~ (cd (expand-file-name "~")) ;; Start gnus (when my-start-gnus (setq inhibit-startup-screen t) (gnus)) ) ;;; init.el ends here