;; Preliminary settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(set-face-attribute 'default nil :height 80)
(setq notify-method 'notify-via-libnotify)
(add-to-list 'load-path "~/.emacs.d/")
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
(setq custom-file "~/.emacs.d/custom.el")

; derived from ELPA installation
; http://tromey.com/elpa/install.html
(defun eval-url (url)
  (let ((buffer (url-retrieve-synchronously url)))
  (save-excursion
    (set-buffer buffer)
    (goto-char (point-min))
    (re-search-forward "^$" nil 'move)
    (eval-region (point) (point-max))
    (kill-buffer (current-buffer)))))

 ;; ELPA stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(unless (require 'package nil t)
  (eval-url "http://tromey.com/elpa/package-install.el"))

(setq package-archives '(("ELPA" . "http://tromey.com/elpa/")
                         ("marmalade" . "http://marmalade-repo.org/packages/")
                         ("gnu" . "http://elpa.gnu.org/packages/")))

;; el-get stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq el-get-install-branch "master") ;; live life on the edge
(unless (require 'el-get nil t)
  (eval-url "https://github.com/dimitri/el-get/raw/master/el-get-install.el"))

(setq el-get-sources '(
      (:name nxhtml
             :type http
             :url "http://ourcomments.org/Emacs/DL/elisp/nxhtml/zip/nxhtml-2.08-100425.zip"
             :build ("unzip nxhtml-2.08-100425.zip")
             :load "nxhtml/autostart.el")
      ))

(setq my-el-get-packages
      '(el-get
;        nxhtml
        smarttabs
        ))
                            
;; Now load all of that ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; ELPA
(package-initialize)
;; el-get
(when (require 'el-get nil t) (el-get 'sync my-el-get-packages))
;; custom
(load custom-file 'noerror)

;; General settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;(load "mdmua")
(load "emacsutils")

(tool-bar-mode -1)
(ido-mode t)
(show-paren-mode 1)
(setq org-hide-leading-stars t)
(setq org-log-done 'time)
;(xclip-mode 1)

(load "whitespace")
(setq whitespace-style '(
  tab-mark
  space-mark
  newline-mark
  empty
))


;; These are my preferred settings; we let dtrt-indent detect when we play with other's files
(setq-default tab-width 8)
(setq-default c-basic-offset 8)
(setq-default indent-tabs-mode t)


(setq
 backup-by-copying	t ;; don't clobber symlinks
 backup-directory-alist	'(("." . "~/.emacs.d/saves")) ;; don't litter my fs tree
 delete-old-versions	t
 kept-new-versions	6
 kept-old-versions	2
 version-control	t ;; use versioned backups
)

(setq column-number-mode t
      inhibit-startup-screen t
      line-number-mode t
      server-use-tcp t
      server-mode t
      show-paren-mode t)

(setq browse-url-generic-program (executable-find "v-www-browser")
      browse-url-browser-function 'browse-url-generic)


(defun toggle-fullscreen (&optional f)
  (interactive)
  (let ((current-value (frame-parameter nil 'fullscreen)))
    (set-frame-parameter nil 'fullscreen
                         (if (equal 'fullboth current-value)
                             (if (boundp 'old-fullscreen) old-fullscreen nil)
                           (progn (setq old-fullscreen current-value)
                                  'fullboth)))))

;; Custom keybindings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(global-set-key [f11] 'toggle-fullscreen)
(global-set-key "\C-cw" 'global-whitespace-mode)

;; mode-hooks ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(add-hook 'text-mode-hook 'turn-on-auto-fill)

; for term-mode
;; (add-hook 'after-make-frame-functions
;;           (lambda (frame)
;;             (set-variable 'term-default-fg-color
;;                           (face-foreground 'default))
;;             (set-variable 'term-default-bg-color
;;                           (face-background 'default)))
;;           t)

(add-hook 'lisp-mode-hook
          '(lambda ()
             (set (make-local-variable 'indent-tabs-mode) nil)
             ))

(add-hook 'emacs-lisp-mode-hook
          '(lambda ()
             (set (make-local-variable 'indent-tabs-mode) nil)
             ))

(add-hook 'coffee-mode-hook
          '(lambda ()
             (set (make-local-variable 'tab-width) 2)
             ))

(add-hook 'term-mode-hook
          '(lambda ()
             (setq term-prompt-regexp "^[^#$%>\n]*[#$%>] *")
             (make-local-variable 'mouse-yank-at-point)
             ;(make-local-variable 'transient-mark-mode)
             (setq mouse-yank-at-point t)
             ;(setq transient-mark-mode nil)
             (auto-fill-mode -1)
             (setq tab-width 8 )
             (setq autopair-dont-activate t) ;; Don't let autopair break ansi-term
             ))

(add-hook 'ruby-mode-hook
          '(lambda ()
             (set (make-local-variable 'indent-tabs-mode) t)
             (set (make-local-variable 'ruby-indent-level) 4)
             (set (make-local-variable 'tab-width) 4)
             ))

(add-hook 'coffee-mode-hook
          '(lambda ()
             (set (make-local-variable 'indent-tabs-mode) nil)
             ))

(add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode))

;(require 'flymake)
;(add-hook 'php-mode-hook (lambda() (flymake-mode 1)))
;(define-key php-mode-map '[M-S-up] 'flymake-goto-prev-error)
;(define-key php-mode-map '[M-S-down] 'flymake-goto-next-error)

;(setq tramp-debug-buffer t) 
;(setq tramp-verbose 10)