;; -*- Mode: Emacs-Lisp -*-

(set-face-background 'default "black")  ;screen background
(set-face-foreground 'default "bisque") ;normal text (not really - just do it before setting it properly later, in case of failures during init

(require 'desktop)
(require 'redo)
(require 'font-lock)
(require 'paren)


(setq options-file-xemacs-version '(20 4))
(setq-default case-fold-search t)
(setq-default overwrite-mode nil)
(setq-default case-fold-search t)
(setq-default case-replace t)
(setq-default zmacs-regions t)
(setq-default mouse-yank-at-point nil)
(setq-default require-final-newline t)
(setq-default next-line-add-newlines nil)
(setq-default teach-extended-commands-p t)
(setq-default teach-extended-commands-timeout 4)
(setq-default debug-on-error nil)
(setq-default debug-on-quit nil)
(setq-default lpr-switches nil)
(setq-default ps-print-color-p nil)
(setq-default ps-paper-type 'letter)
(setq-default get-frame-for-buffer-default-instance-limit nil)
(setq-default temp-buffer-show-function 'show-temp-buffer-in-current-frame)
(setq-default font-lock-auto-fontify t)
(setq-default font-lock-use-fonts nil)
(setq-default font-lock-use-colors '(color))
(setq-default font-lock-maximum-decoration t)
(setq-default font-lock-maximum-size 256000)
(setq-default font-lock-mode-enable-list nil)
(setq-default font-lock-mode-disable-list nil)
(remove-hook 'font-lock-mode-hook 'turn-on-fast-lock)
(remove-hook 'font-lock-mode-hook 'turn-on-lazy-shot)
(paren-set-mode 'blink-paren)
(if (featurep 'scrollbar) (progn (add-spec-list-to-specifier scrollbar-width 'nil) (add-spec-list-to-specifier scrollbar-height 'nil)))
(add-spec-list-to-specifier modeline-shadow-thickness '((global (nil . 2))))
(setq-default truncate-lines nil)
(setq-default bar-cursor nil)
(setq-default buffers-menu-max-size 25)
(setq-default complex-buffers-menu-p nil)
(setq-default buffers-menu-sort-function 'sort-buffers-menu-by-mode-then-alphabetically)
(setq-default buffers-menu-grouping-function 'group-buffers-menu-by-mode-then-alphabetically)
(setq-default buffers-menu-submenus-for-groups-p nil)
(setq-default font-menu-ignore-scaled-fonts t)
(setq-default font-menu-this-frame-only-p nil)
(if (featurep 'toolbar) (progn (set-default-toolbar-position 'top) (add-spec-list-to-specifier default-toolbar-visible-p 'nil) (add-spec-list-to-specifier toolbar-buttons-captioned-p 'nil)))
(setq-default mouse-avoidance-mode nil)
(setq-default browse-url-browser-function 'browse-url-w3)


(make-face 'c-number-face)
(set-face-foreground 'c-number-face "#ff9999")

(let
    ((c-keyword-names
      (concat "\\b\\(0[xX][0-9a-fA-F]+[lL]?\\|[0-9]+\\.?[0-9]*"
              "\\([eE][-+]?[0-9]+\\)?\\([lL]\\|[fF]\\|[dD]\\)?\\)\\b")))
  (setq c-font-lock-keywords-4 
        (list
         (list (concat "\\<\\(" c-keyword-names "\\)\\>") 1 'c-number-face)
         )))




(defun myCodeSettingsHook ()
  (define-key c-mode-base-map "\C-m" 'newline-and-indent)
  (c-set-style "k&r")
  (c-set-offset 'case-label 2)
  (setq c-font-lock-keywords  (append c-font-lock-keywords-4 c-font-lock-keywords-3)))


;;(vc-load-vc-hooks)
(require 'vc)

(add-hook 'c-mode-common-hook 'myCodeSettingsHook)

(defun perl-mode-hook-fn ()
  (local-set-key [delete] 'delete-char))

(add-hook 'cperl-mode-hook  'perl-mode-hook-fn)

;; auto wraparound
;;(defun tex-mode-hook-fn ()
;;   (auto-fill-mode 1))
;;(add-hook 'tex-mode-hook 'tex-mode-hook-fn)
;;(setq tex-mode-hook 'tex-mode-hook-fn)
;;(add-hook 'latex-mode-hook 'tex-mode-hook-fn)

;; ANSI color mode for shells, etc
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

(add-hook 'LaTeX-mode-hook 'turn-on-auto-fill)   
(add-hook 'TeX-mode-hook   'turn-on-auto-fill)

;;(require 'backup)
;;(backup-set-directory "~/xemacs-backups/")


;;If already making use of a desktop (through xemacs -f desktop-read), save it when buffers are updated.
(defun save-desktop ()
  (if desktop-dirname
;;      (ding t)))
      (desktop-save "/home/tconnors/")))

(add-hook 'after-set-visited-file-name-hooks 'save-desktop)
(add-hook 'find-file-hooks 'save-desktop)
(add-hook 'kill-buffer-hook 'save-desktop)

;;(defun do-you-really-want-to-save-buffers-kill-emacs ()
;;  "avoids premature ejection"
;;  (interactive)
;;  (if (yes-or-no-p "Really? ")
;;      (save-buffers-kill-emacs)
;;    (message "stop jerking me around")))
;;(global-set-key "\C-x\C-c"
;;'do-you-really-want-to-save-buffers-kill-emacs)

(defun yes-or-no-p (prompt)
  "replace tedious yes/no+enter with y/n keypress"
  (ding t)
  (y-or-n-p prompt))

(global-set-key "\C-x\C-b" 'electric-buffer-list)


(make-face 'bufperlface)
(set-face-foreground 'bufperlface "#ee4444")

(make-face 'bufemacslispface)
(set-face-foreground 'bufemacslispface "#ee4400")

(make-face 'bufshellscriptface)
(set-face-foreground 'bufshellscriptface "#ee4488")

(make-face 'buftextface)
(set-face-foreground 'buftextface "#ee8888")

(make-face 'buflatexface)
(set-face-foreground 'buflatexface "#ee0088")

(make-face 'bufbibtexface)
(set-face-foreground 'bufbibtexface "#ee0044")

(make-face 'bufmakefileface)
(set-face-foreground 'bufmakefileface "#eebbbb")

(make-face 'bufcface)
(set-face-foreground 'bufcface "#eebb88")

(make-face 'bufforface)
(set-face-foreground 'bufforface "#eebbff")

(make-face 'bufremoteface)
(set-face-foreground 'bufremoteface "#88bbff")


(defconst Electric-buffer-menu-mode-font-lock-keywords
  (purecopy
   (list
    '("^ MR Buffer.*"                 . font-lock-preprocessor-face) ;hdr 1
       '("^ -- ------.*"              . font-lock-preprocessor-face) ;hdr 2
       '("/r@.*"           . bufremoteface) ; remote connections file
       '("/.*@.*"           . bufremoteface) ; remote connections file
       '("^\\(....Man: .*\\)"         1 font-lock-variable-name-face t) ;Manpg (new)
       '("^[. ][*][^%].[^*].*"        . font-lock-comment-face) ;Mod x temp
       '("^....[*]Buffer List[*].*"   . font-lock-doc-string-face) ;Buffer list
       '("^\\(....[*]shell.*\\)"      1 font-lock-reference-face t) ;shell buff
       '("^....[*].*"                 . font-lock-string-face) ;Temp buffer
       '("^....[+].*"                 . font-lock-keyword-face) ;Mail buffer
       '("^....[A-Za-z0-9/]*[-][+].*" . font-lock-keyword-face) ;Mail buffer
       '(".*Dired"                  . font-lock-function-name-face)
       '(".*CPerl"                  . bufperlface) ; Perl source file
       '(".*Emacs[^ ]*"                  . bufemacslispface) ; Emacs Lisp source file
       '(".*Shell[^ ]*"                  . bufshellscriptface) ; Perl source file
       '(".*Text"                  . buftextface) ; Perl source file
       '(".*LaTeX"                 . buflatexface) ; Perl source file
       '(".*BibTeX"                . bufbibtexface) ; Perl source file
       '(".*C "                     . bufcface) ; Perl source file
       '(".*Fortran"               . bufforface) ; Perl source file
       '(".*[^ ]  Makefile"              . bufmakefileface) ; Perl source file
       )))

; This hook run after buffer formatted, so it is necessary to re-fontify it...
(add-hook 'electric-buffer-menu-mode-hook
          '(lambda ()
             (font-lock-mode 1)
             (font-lock-fontify-buffer)))



(load "/home/tconnors/.xemacs/funckeybindings.el")
