(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) (add-to-list 'auto-mode-alist '("\\.f$" . forth-mode)) (add-to-list 'auto-mode-alist '("\\.mbox$" . vm-summary-mode)) ;; (add-to-list 'auto-mode-alist '("\\.xml$" . nxml-mode)) ; navigation keys, in case some of them are overridden (defun keys-local-navigation () (my-navigation-keys 'local-set-key)) (defun keys-local (bindings) (mapc (lambda (x) (local-set-key (car x) (cadr x))) bindings)) (defun keys-dabbrev () (interactive) (local-set-key [TAB] 'dabbrev-completion)) ;; RCIRC (defun irc-buffer (server) (let ((bufname (format "*%s*" server))) (let ((buf (get-buffer bufname))) (if buf (switch-to-buffer buf) (rcirc-connect server)))) (switch-to-buffer (get-buffer bufname))) (defun zwizwa () (interactive) (irc-buffer "zwizwa.i")) (setq rcirc-default-nick "doelie") (setq rcirc-default-user-name "tom") (setq rcirc-default-user-full-name "Tom Schouten") ;;; Minimal logging to `~/.rcirc-logs/channel' ;;; by courtesy of Trent Buck. (add-hook 'rcirc-print-hooks 'rcirc-write-log) (defcustom rcirc-log-directory "~/.rcirc-logs" "Where logs should be kept. If nil, logs aren't kept.") (defun rcirc-write-log (process sender response target text) (when rcirc-log-directory (with-temp-buffer ;; Sometimes TARGET is a buffer :-( (when (bufferp target) (setq target (with-current-buffer buffer rcirc-target))) ;; Sometimes buffer is not anything at all! (unless (or (null target) (string= target "")) ;; Print the line into the temp buffer. (insert (format-time-string "%Y-%m-%d %H:%M ")) (insert (format "%-16s " (rcirc-user-nick sender))) (unless (string= response "PRIVMSG") (insert "/" (downcase response) " ")) (insert text "\n") ;; Append the line to the appropriate logfile. (let ((coding-system-for-write 'no-conversion)) (write-region (point-min) (point-max) (concat rcirc-log-directory "/" (downcase target)) t 'quietly)))))) ;; LISP (defun keys-lisp-interaction () (keys-local '(("\C-x\C-j" pp-eval-last-sexp) ))) (add-hook 'lisp-interaction-mode-hook 'keys-lisp-interaction) (defun keys-scheme () (keys-local '(([tab] dabbrev-completion)))) ;; TERM ; (define-key term-mode-map "\M- " 'other-window) ;; GUD (require 'gud) (defun gud-x-osd2 () (interactive) (gud-stop-subjob) (gud-basic-call "quit")) (defun gud-x-backtrace () (interactive) (gud-basic-call "echo \\n\\n") (gud-basic-call "bt")) (defun keys-gud () (interactive) (keys-local '(([s-left] gud-finish) ([s-down] gud-next) ([s-right] gud-step) ([s-up] gud-x-backtrace) ; ([s-prior] gud-up) ; ([s-next] gud-down) ; ([s-delete] gud-remove) ; ([s-insert] gud-break) ; ([s-end] gud-cont) ; ([s-up] gud-finish) ; ([s-down] gud-step) ; ([s-left] gud-tbreak) ; ([s-right] gud-next) ))) (add-hook 'gud-mode-hook 'keys-gud) (defun keys-shell () (interactive) ;; considering the significant amount of arbitrary output shell ;; programs spew, font locking makes no sense.. ;; (keys-local-navigation) (keys-local '(("\C-j" comint-send-input) ("\C-l" comint-clear-buffer) ([return] comint-send-input) ; newline) ("\M-k" comint-previous-matching-input-from-input) ;; kill-sentence ("\M-l" comint-next-matching-input-from-input) ;; downcase-word ))) (add-hook 'shell-mode-hook 'keys-shell) ;; detach gdb from program and exit emacs ;; this is to support the 'attach-debugger' script (defun exit-gdb () (interactive) (gud-basic-call "detach") (gud-basic-call "quit") (kill-emacs)) ;; C (defun c-mode-help () (interactive) (tags-search (word-at-point))) (defun c-mode-stuff () (interactive) (define-key c-mode-map "\C-c\C-h" 'c-mode-help) (c-set-style "cc-mode")) (add-hook 'c-mode-hook 'c-mode-stuff) ;; DIRED (require 'dired) (defun my-dired () (interactive) (local-set-key [s-up] 'dired-up-directory)) (add-hook 'dired-mode-hook 'my-dired) ;; SCHEME ;; (defun my-left-curly-bracket () (interactive) (insert "[")) ;; (defun my-right-curly-bracket () (interactive) (insert "]")) ;; (defun my-paren-forward () (interactive) ;; (search-forward ")")) ;; (defun my-paren-backward () (interactive) ;; (backward-char) ;; (search-backward ")") ;; (forward-char) ;; ) ;; (defun my-lisp-keys () (interactive) ;; (local-set-key "[" 'insert-parentheses) ;; ;; (local-set-key "]" 'move-past-close-and-reindent) ;; (local-set-key "]" 'my-paren-forward) ;; (local-set-key "\M-]" 'my-paren-backward) ;; (local-set-key "{" 'my-left-curly-bracket) ;; (local-set-key "}" 'my-right-curly-bracket) ;; ) (defun my-scheme-hook () (interactive) ;; (local-set-key [\e tab] 'hippie-expand) ;; (local-set-key [\e tab] 'snot-complete-symbol) ;; ??? (local-set-key "\M-\t" 'snot-complete-symbol-scheme) (local-set-key "\C-x\C-e" 'snot-send-last-sexp) (local-set-key "\C-x\C-x" 'snot-send-module) ;; Like DrScheme's RUN button (local-set-key "\e\C-x" 'snot-eval-define) (local-set-key "\C-m" 'newline-and-indent) ;; (my-lisp-keys) ) (defun my-clear-comint-buffer () (interactive) (delete-region (point-min) (point-max))) (add-hook 'scheme-mode-hook 'my-scheme-hook) (defun plt-mzscheme () (interactive) (browse-url "/plt/doc/index.html")) (defun select-s-expression () (interactive) (mouse-set-point) (backward-list) (set-mark (point)) (forward-list)) (defun my-snot-stuff () (interactive) ) (add-hook 'snot-mode-hook 'my-snot-stuff) (setq quack-fontify-treesemi-p t) ;; GNUS ;; (setq gnus-select-method '(nntp "news.kotnet.org")) ;; (setq gnus-select-method '(nntp "news.belnet.be")) ;; (nnfolder "archive" (nnfolder-directory "~/mail/archive/" ;; http://www.emacswiki.org/emacs/MessageMode (setq user-full-name "Tom Schouten") (setq user-mail-address "tom@zwizwa.be") (setq compose-mail-user-agent-warnings nil) ;; (setq mail-sources '((pop :server "your.pop3server2.com" :user "user" :password "password"))) (setq mail-source '((maildir))) (setq gnus-select-method '(nnnil)) ;; ?? no primary (setq gnus-secondary-select-methods '((nnmaildir "" (directory "~/mail")) (nntp "news.i"))) ;; (setq gnus-default-subscribed-newsgroups '("comp.compilers")) (setq gnus-message-archive-method '(nnfolder "archive" (nnfolder-inhibit-expiry t) (nnfolder-active-file "~/mail/active") (nnfolder-directory "~/mail/"))) (setq gnus-message-archive-group "archive") (setq mm-text-html-renderer 'w3m) ;; VM ;; (defun my-vm-mode-hook () ;; (interactive) ;; (local-set-key "j" 'vm-previous-message) ;; (local-set-key ";" 'vm-next-message) ;; ) ;; (add-hook 'vm-mode-hook 'my-vm-mode-hook) ;; (setq vm-preview-lines nil) ;; (setq vm-movemail-program "movemail") ;; (setq vm-spool-files ;; (list (expand-file-name ;; (or (getenv "MAILDIR") "~/mail/INBOX.mdir")))) ;; (setq vm-mutable-frames) ;; leave frames alone ;; (setq vm-primary-inbox "~/mail/INBOX.mbox") ;; TRAMP (setq tramp-default-method "scp") ;; w3m ; (require 'w3m) (setq browse-url-browser-function 'w3m-browse-url) (autoload 'w3m-browse-url "w3m" "Ask a WWW browser to show a URL." t) ;; (global-set-key "\C-xm" 'browse-url-at-point) ;; TEXT (defun my-text-mode-hook () (interactive) ;; (auto-fill-mode 1) (local-set-key "\C-ce" 'log-entry) ) (add-hook 'text-mode-hook 'my-text-mode-hook) ;; IBUFFER ;(defun my-ibuffer () (interactive) ; (local-set-key [j] 'ibuffer-backward-line) ; (local-set-key [\;] 'ibuffer-backward-line)) ; ; (add-hook 'ibuffer-hook 'my-ibuffer) ;; SNOT ;; (add-hook 'snot-mode-hook 'keys-shell) ;; How to deal with files that expect tab with of 4 (i.e. eclipse ;; Java, CDT). ;; TAB WIDTH ;; Eclipse has tab=4 by default? ;; (defun tab-4 () (interactive) (setq tab-with 4)) ;; Setting it like this modifies linux source also to tab=4, but that ;; doesn't seem to pose a problem. (defun my-eclipse-tabs-hook () (interactive) (setq tab-width 4)) (add-hook 'java-mode-hook 'my-eclipse-tabs-hook) (add-hook 'c-mode-hook 'my-eclipse-tabs-hook) (add-hook 'c++-mode-hook 'my-eclipse-tabs-hook)