;;__________________________________________________________________________ ;;;; Directories (defvar home-dir (concat (expand-file-name "~") "/")) (push (concat home-dir "elisp") load-path) (push (concat home-dir "elisp/color-theme-6.6.0") load-path) (push (concat home-dir "lisp/clbuild/source/slime") load-path) (push (concat home-dir "lisp/clbuild/source/slime/contribs") load-path) (push (concat home-dir "elisp/emacs-tiny-tools/lisp/tiny") load-path) (push (concat home-dir "elisp/emacs-tiny-tools/lisp/other") load-path) ;;__________________________________________________________________________ ;;;; System Customizations (require 'cl) (require 'color-theme) (require 'color-theme-billc) (color-theme-billc) (server-start) (defconst use-backup-dir t) (setq backup-directory-alist (quote ((".*" . "~/.backups/"))) version-control t ; Use version numbers for backups kept-new-versions 16 ; Number of newest versions to keep kept-old-versions 2 ; Number of oldest versions to keep delete-old-versions t ; Delete excess backup versions history-delete-duplicates t ; Delete dups in history history-length 100 ; Larger history size than default 30 inhibit-startup-message t ; No initial splash screen dired-listing-switches "-la" ; Don't display dot files dired-recursive-deletes 'top ; Recursive deletes dired-recursive-copies 'top ; Recursive copies backup-by-copying-when-linked t) ; Copy linked files, don't rename (fset 'yes-or-no-p 'y-or-n-p) ;replace y-e-s by y ;; Conventional mouse/arrow movement & selection (pc-selection-mode) (delete-selection-mode t) ;; Display overrides (show-paren-mode 1) (tool-bar-mode nil) (if window-system (menu-bar-mode t) (menu-bar-mode nil)) (iswitchb-mode) (column-number-mode t) ;; Global key overrides (global-set-key [(control c) (F)] 'ffap) (global-set-key [(control c) (j)] 'join-line) (global-set-key [f4] 'kill-this-buffer) (global-set-key [f5] 'bc-slime-connect) (global-set-key [f6] 'other-window) (global-set-key [f7] 'delete-other-windows) ;; Dired mods (defun bc-dired-find-file () (interactive) (let ((file nil)) (save-excursion (setq file (dired-get-filename)) (find-file (file-name-sans-versions file t))))) (add-hook 'dired-mode-hook '(lambda () (define-key dired-mode-map [double-down-mouse-1] 'bc-dired-find-file) (define-key dired-mode-map [return] 'bc-dired-find-file))) ;;__________________________________________________________________________ ;;;; Programming - Common Lisp ;; Specify modes for Lisp file extensions (setq auto-mode-alist (append '( ("\\.lisp$" . lisp-mode) ("\\.lsp$" . lisp-mode) ("\\.cl$" . lisp-mode) ("\\.asd$" . lisp-mode) )auto-mode-alist)) (require 'slime-autoloads) (defun bc-slime-connect () "Connect to Swank with defaults." (interactive) (slime-connect slime-lisp-host (format "%d" slime-port))) (eval-after-load "slime" '(progn (setq inferior-lisp-program "sbcl" slime-complete-symbol*-fancy t slime-complete-symbol-function 'slime-fuzzy-complete-symbol slime-when-complete-filename-expand t slime-truncate-lines nil slime-autodoc-use-multiline-p t) (slime-setup '(slime-fancy slime-asdf)) (define-key slime-repl-mode-map (kbd "C-c ;") 'slime-insert-balanced-comments) (define-key slime-repl-mode-map (kbd "C-c M-;") 'slime-remove-balanced-comments) (define-key slime-mode-map (kbd "C-c ;") 'slime-insert-balanced-comments) (define-key slime-mode-map (kbd "C-c M-;") 'slime-remove-balanced-comments) (define-key slime-mode-map (kbd "RET") 'newline-and-indent) (define-key slime-mode-map (kbd "") 'newline-and-indent) (define-key slime-mode-map (kbd "C-j") 'newline))) (add-hook 'lisp-mode-hook (lambda () (cond ((not (featurep 'slime)) (require 'slime) (normal-mode))) (modify-syntax-entry ?- "w"))) ;;__________________________________________________________________________ ;;;; Programming - Elisp (add-hook 'emacs-lisp-mode-hook '(lambda () (interactive) (define-key emacs-lisp-mode-map (kbd "RET") 'newline-and-indent) (define-key emacs-lisp-mode-map (kbd "") 'newline-and-indent) (define-key emacs-lisp-mode-map (kbd "C-j") 'newline) (define-key emacs-lisp-mode-map (kbd "M-.") 'tinylisp-jump-to-definition-chain) (define-key emacs-lisp-mode-map (kbd "M-,") 'tinylisp-back-to-definition) (modify-syntax-entry ?- "w") ; now '-' is not considered a word-delimiter (require 'eldoc) (turn-on-eldoc-mode) (require 'tiny-setup) (tiny-setup nil) (setq tinylisp-:mode-prefix-key "$") (setq tinylisp-:load-hook 'tinylisp-install) (require 'tinylisp) (setq tinylisp-:load-hook nil))) ;;__________________________________________________________________________ ;;;; IRC Customizations (setq erc-nick "billc") ;;; Thrown together by Rudi Schlatte. ;;; Needs these libraries: ;;; http://www.emacswiki.org/cgi-bin/wiki/XmlRpc ;;; http://www.gnu.org/software/url/ (defvar lisppaste-nick "billc") (defvar lisppaste-channel "#lisp") (defvar lisppaste-prev-title "") (defun lisppaste-region (region-begin region-end &optional channel username title) (interactive "r") (require 'xml-rpc) (let* ((content (buffer-substring region-begin region-end)) (channel (or channel (read-from-minibuffer "Channel: " lisppaste-channel))) (username (or username (read-from-minibuffer "Nick: " lisppaste-nick))) (title (read-from-minibuffer "Title: " lisppaste-prev-title))) (setf lisppaste-prev-title title) (xml-rpc-method-call "http://common-lisp.net:8185/RPC2" 'newpaste channel username title content))) ; use '/ctcp user version' to identify irc client ;;__________________________________________________________________________ ;;;; Initial buffer (find-file "~/")