(require 'revbufs (format "%s/.elisp.d/revbufs.el" (getenv "HOME")) t) (require 'xcscope "xcscope" t) ; Load cscope support if available( (setq viper-mode t) (require 'viper) ;; A boolean that is true if the current user is logged in from a UNH ;; AI research machine. (setq logged-in-from-ai-machine (or (equal (getenv "HOME") (format "/home/aifs2/%s" (getenv "USER"))) (equal (getenv "HOME") (format "/home/aifs1/%s" (getenv "USER"))))) ;; ;; Environment ;; ;; Add ~/bin to PATH. (setenv "PATH" (format "%s:%s/bin" (getenv "PATH") (getenv "HOME"))) (if logged-in-from-ai-machine ;; If logged on from a RAI machine, add some paths (setenv "PATH" (format "%s:%s:%s:%s" "/home/aifs2/ruml/bin" "/home/aifs2/group/bin" "/home/aifs2/group/bin/x86_64-linux" (getenv "PATH")))) (if logged-in-from-ai-machine (setenv "LD_LIBRARY_PATH" (format "%s/lib" (getenv "HOME")))) ;; ;; Misc customizations ;; (server-start) (iswitchb-mode) ; Better read-buffer (global-set-key "\C-xb" 'electric-buffer-list) ; Electric buffer list (setq default-major-mode 'text-mode) ; Default to text-mode (setq make-backup-files nil) ; Do not make backup files (setq require-final-newline t) ; Always add a newline at EOF (setq compile-command "make -j8") ; Use make instead of make -k (setq grep-command "grep -Irn ") ; A better grep command (setq cscope-allow-arrow-overlays nil) ; Do not show an => overlay (set-default-file-modes #o775) ; Set the umask to 0002 (setq visible-bell t) ; Don't beep! (setq add-log-mailing-address "eaburns@unh.edu") ; E-mail to use in ChangeLog (setq woman-use-own-frame nil) ; Don't open WoMan in another frame ;; ;; Display settings ;; (global-font-lock-mode 1) ; Enable colors (setq inhibit-startup-message 1) ; Do not show startup msg.ar (setq display-time-day-and-date t) ; Display time and date (setq display-time-24hr-format t) ; Display the time in 24hr format (display-time) ; (setq line-number-mode t) ; Display line number (setq column-number-mode t) ; Display column number ;; ;; GUI configuration (for non-terminal mode) ;; (if (not (eq window-system nil)) ((lambda () (if (require 'color-theme "color-theme" t) ; Use color-theme (color-theme-jb-simple)) (fringe-mode 0) ; Get rid of useles window fringes (add-to-list 'default-frame-alist '(menu-bar-lines . 0)) (add-to-list 'default-frame-alist '(tool-bar-lines . 0)) (add-to-list 'default-frame-alist '(fringe-columns . 0)) (add-to-list 'default-frame-alist '(vertical-scroll-bars . nil)) ;;(add-to-list 'default-frame-alist '(font . "7x14")) (add-to-list 'default-frame-alist '(font . "9x15")) (add-to-list 'default-frame-alist '(height . 72)) ;;(add-to-list 'default-frame-alist '(height . 50)) (add-to-list 'default-frame-alist '(width . 80))))) ;; ;; Mercurial ;; (if (boundp 'viper-mode) ;; Don't ask if a file (backed by a mercurial repository) should ;; be checked out every time it is saved. (defadvice viper-maybe-checkout (around viper-hg-checkin-fix activate) "Advise viper-maybe-checkout to ignore Hg files." (let ((file (expand-file-name (buffer-file-name buf)))) (when (and (featurep 'vc-hooks) (not (memq (vc-backend file) '(nil Hg)))) ad-do-it)))) ;; ;; Dired ;; (setq dired-recursive-deletes t) ; It will ask at each dir (if (boundp 'viper-mode) ;; Change the keymap in dired-mode to use some more VI friendly ;; bindings (progn (setq viper-dired-mode-map (make-sparse-keymap)) (define-key viper-dired-mode-map "j" 'dired-next-line) (define-key viper-dired-mode-map "J" 'dired-goto-file) (define-key viper-dired-mode-map "k" 'dired-previous-line) (define-key viper-dired-mode-map "K" 'dired-do-kill-lines) (viper-modify-major-mode 'dired-mode 'emacs-state viper-dired-mode-map))) ;; ;; eshell initialization ;; (add-hook 'eshell-mode-hook '(lambda () (setenv "TERM" "vt100") (setenv "EDITOR" "/usr/bin/emacsclient") (setenv "PAGER" ""))) (setq eshell-save-history-on-exit t) ;; ;; Set custom c style ;; (add-hook 'c-mode-common-hook (lambda () (add-hook 'before-save-hook 'delete-trailing-whitespace) (setq show-trailing-whitespace t) (c-set-style "linux") ; Use Linux C (show-paren-mode 1) (if (equal (buffer-size) 0) (progn (insert "/**\n") (insert " * \\file ") (insert (buffer-name)) (insert "\n") (insert " *\n") (insert " *\n") (insert " *\n") (insert (format " * \\author %s\n" (getenv "USER"))) (insert " * \\date ") (insert (format-time-string "%d-%m-%Y")) (insert "\n") (insert " */\n") (insert "\n") (insert "#define _POSIX_C_SOURCE 200112L\n") (insert "\n"))))) ;; ;; text mode hooks ;; (add-hook 'text-mode-hook (lambda () (auto-fill-mode 1) (show-paren-mode 1) (flyspell-mode 1) (setq indent-tabs-mode nil) (setq show-trailing-whitespace t))) ;; ;; OCaml hook ;; (add-hook 'tuareg-mode-hook (lambda () (add-hook 'before-save-hook 'delete-trailing-whitespace) (if (not (boundp 'viper-mode)) (auto-fill-mode 1)) ;; broken in viper-mode (show-paren-mode 1) (setq show-trailing-whitespace t) (if (equal (buffer-size) 0) (progn (insert "(**\n") (insert "\n") (insert (format " @author %s\n" (getenv "USER"))) (insert " @since ") (insert (format-time-string "%Y-%m-%d")) (insert "\n") (insert "*)\n"))))) (if logged-in-from-ai-machine ;; If logged in from a RAI machine, use the RAI ocaml top. (setq tuareg-interactive-program "/home/aifs2/group/bin/x86_64-linux/ocamltop")) ;; ;; TLA+ ;; (if (require 'tla-mode (format "%s/.elisp.d/tla-mode.el" (getenv "HOME")) t) (setq auto-mode-alist (append '(("\\.tla$" . tla-mode)) auto-mode-alist)))