(if (< emacs-major-version 23)
    (defun characterp (obj) 
      (and (char-or-string-p obj) (not (stringp obj)))))

(add-to-list 'load-path "~/.emacs.d")
(add-to-list 'load-path "~/.emacs.d/auto-complete")

; Requires
(require 'vimpulse)
(require 'color-theme)
(require 'color-theme-autoloads)
(require 'tabbar)
;(require 'highlight-symbol)
(require 'auto-complete-config)

(add-to-list 'ac-dictionary-directories "~/.emacs.d/auto-complete/dict")
(ac-config-default)
(setq ac-dwim t)
(setq ac-expand-on-auto-complete nil)
(setq ac-use-fuzzy t) 
(setq viper-search-wrap-around t) 
;(define-key ac-completing-map "\t" 'ac-fuzzy-complete)
;(define-key ac-completing-map "\r" nil)

; This is the other Vim-mode. Maybe should delete this..
;
;(add-to-list 'load-path "~/.emacs.d/vim-mode")
;(require 'vim)
;(vim-mode 1)

; Tabbar settings (Simple groups)
 (defun tabbar-buffer-groups ()
   "Return the list of group names the current buffer belongs to.
 This function is a custom function for tabbar-mode's tabbar-buffer-groups.
 This function group all buffers into 3 groups:
 Those Dired, those user buffer, and those emacs buffer.
 Emacs buffer are those starting with “*”."
   (list
    (cond
     ((string-equal "*" (substring (buffer-name) 0 1))
      "Emacs Buffer"
      )
     ((eq major-mode 'dired-mode)
      "Dired"
      )
     (t
      "User Buffer"
      )
     ))) ;; from Xah Lee
 (setq tabbar-buffer-groups-function 'tabbar-buffer-groups)

(tabbar-mode)

(add-to-list 'ex-token-alist '("ls" (list-buffers)))
(vimpulse-map "gn" 'tabbar-forward-tab)
(vimpulse-map "gp" 'tabbar-backward-tab)
(vimpulse-map "gw" 'vimpulse-search-forward-for-symbol-at-point)
(vimpulse-map "gK" 'kill-buffer-and-window)
;(define-key viper-insert-global-user-map "\C-d" 'delete-char))
(add-hook 'window-setup-hook 'delete-other-windows)

; Basic frame defaults
(let ((background-color "#2F2F2F")
      (foreground-color "LightGrey")
      (fname "Deja Vu Sans Mono-15")
      (fheight 45)
      (fwidth 115))
     
  (set-default-font fname)
  (add-to-list 'default-frame-alist (cons 'font fname))
;  (set-background-color background-color)
;  (add-to-list 'default-frame-alist (cons 'background-color background-color))  
;  (set-foreground-color foreground-color)  
  (add-to-list 'default-frame-alist (cons 'foreground-color foreground-color))  
  (add-to-list 'default-frame-alist (cons 'height fheight))  
  (add-to-list 'default-frame-alist (cons 'width fwidth))  
)
(custom-set-variables '(inhibit-startup-screen t))
(custom-set-faces)

; Run color-theme
(color-theme-initialize)
;(require 'color-theme-barak)

(color-theme-barak)

;
;(defun my-emacs-startup-hook () (my-close-scratch)) (add-hook 'emacs-startup-hook 'my-emacs-startup-hook)
(defadvice viper-maybe-checkout (around viper-svn-checkin-fix activate)
"Advise viper-maybe-checkout to ignore svn files."
(let ((file (expand-file-name (buffer-file-name buf))))
(when (and (featurep 'vc-hooks)
	   (not (memq (vc-backend file) '(nil SVN))))
  ad-do-it)))
