 
 (add-to-list 'load-path "~/.emacs.d/lisp")
 (add-to-list 'load-path "~/.emacs.d/lisp/neotree")
+(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
 
 (require 'neotree)
 (global-set-key (kbd "C-c n") 'neotree-toggle)
 
-;;
-;; UI
-;;
-(menu-bar-mode -1)
-
+(require 'multi-term)
+(setq multi-term-program "/bin/bash")
 
 ;;
 ;; backups

      kept-old-versions 2
      version-control t)


;;
;; modes
;;

(add-to-list 'auto-mode-alist '("\\.cu\\'" . c++-mode))

(autoload 'glsl-mode "glsl-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.frag\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.vert\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.vs\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.fs\\'" . glsl-mode))

(autoload 'markdown-mode "markdown-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

(autoload 'nimrod-mode "nimrod-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.nim\\'" . nimrod-mode))

(autoload 'web-mode "web-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))

(autoload 'elixir-mode "elixir-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-mode))
(add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-mode))

(defun my-web-mode-hook ()
	"Hooks for Web mode."
	(setq web-mode-markup-indent-offset 2)
	(setq web-mode-css-indent-offset 2)
	(setq web-mode-code-indent-offset 2)
	(setq web-mode-indent-style 2)
	)
(add-hook 'web-mode-hook  'my-web-mode-hook)

(autoload 'go-mode "go-mode" "Go Mode." t)
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))

(autoload 'dockerfile-mode "dockerfile-mode" "Dockerfile Mode." t)
(add-to-list 'auto-mode-alist '("\\Dockerfile\\'" . dockerfile-mode))

(autoload 'web-mode "web-mode" "Web Mode." t)
(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))

(autoload 'arc-mode "arc" "Arc Mode." t)
(add-to-list 'auto-mode-alist '("\\.arc\\'" . arc-mode))

(add-to-list 'auto-mode-alist '("\\.rkt\\'" . scheme-mode))

;;
;; code formatting
;;

(setq c-default-style "bsd"
			c-basic-offset 2)
(setq compile-command "make -B")
(global-set-key (kbd "C-x O") 'previous-multiframe-window)
(c-set-offset 'innamespace 0)
(setq indent-namespaces "no")
(setq gdb-many-windows 1)
(setq default-tab-width 2)

;; (global-visual-line-mode 1)
(setq line-move-visual nil)

;; disabling autofill is a pain, so we set the fill column huge instead
(setq-default fill-column 10000000)

(setq js-indent-level 2)
(add-hook 'html-mode-hook
	  (lambda ()
	    (set (make-local-variable 'sgml-basic-offset) 2)))

(add-hook 'js-mode-hook
	(lambda ()
		(set (make-local-variable 'sgml-basic-offset) 2)))

(defun my-go-mode-hook ()
	(require 'go-dlv)
	;; Call Gofmt before saving
	(add-hook 'before-save-hook 'gofmt-before-save)
	;; Customize compile command to run go build
	(if (not (string-match "go" compile-command))
			(set (make-local-variable 'compile-command)
					 ;; "go build -v && go test -v && go vet"))
					 "go build -v"))
	;; Godef jump key binding
	(local-set-key (kbd "M-.") 'godef-jump))
(add-hook 'go-mode-hook 'my-go-mode-hook)

;; save-place (saves last cursor position in each file
(setq save-place-file "~/.emacs.d/saveplace")
(setq-default save-place t)
(require 'saveplace)

(load-theme 'manoj-dark)
(set-face-foreground 'mode-line "black")
(set-face-background 'mode-line "gold")
(set-face-background 'mode-line-inactive "yellow")
(set-face-foreground 'mode-line-inactive "black")

(setq inhibit-startup-screen +1)
(setq initial-scratch-message "")

(setq-default show-trailing-whitespace +1)


;;
;; tabs
;;
(custom-set-faces
 '(my-tab-face ((((class color)) (:foreground "brightblack"))) t)
 )
;; add custom font locks to all buffers and all files
(add-hook
 'font-lock-mode-hook

(standard-display-ascii ?\t "» ")
 ;; (setq-default indent-tabs-mode nil)

;;
;; modes
;;

(add-to-list 'auto-mode-alist '("\\.cu\\'" . c++-mode))

(autoload 'glsl-mode "glsl-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.frag\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.vert\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.vs\\'" . glsl-mode))
(add-to-list 'auto-mode-alist '("\\.fs\\'" . glsl-mode))

(autoload 'markdown-mode "markdown-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))

(autoload 'web-mode "web-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))

(autoload 'elixir-mode "elixir-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-mode))
(add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-mode))

(autoload 'json-mode "json-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.json\\'" . json-mode))

(defun my-web-mode-hook ()
	"Hooks for Web mode."
	(setq web-mode-markup-indent-offset 2)
	(setq web-mode-css-indent-offset 2)
	(setq web-mode-code-indent-offset 2)
	(setq web-mode-indent-style 2)
	)
(add-hook 'web-mode-hook  'my-web-mode-hook)

(autoload 'go-mode "go-mode" "Go Mode." t)
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))

(autoload 'nim-mode "nim-mode" "Nim Mode." t)
(add-to-list 'auto-mode-alist '("\\.nim\\'" . nim-mode))
;; (add-hook 'nim-mode-hook 'nimsuggest-mode)

(autoload 'rust-mode "rust-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))

(autoload 'dockerfile-mode "dockerfile-mode" "Dockerfile Mode." t)
(add-to-list 'auto-mode-alist '("\\Dockerfile\\'" . dockerfile-mode))

(autoload 'web-mode "web-mode" "Web Mode." t)
(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))

(autoload 'arc-mode "arc" "Arc Mode." t)
(add-to-list 'auto-mode-alist '("\\.arc\\'" . arc-mode))

(add-to-list 'auto-mode-alist '("\\.rkt\\'" . scheme-mode))

;;
;; code formatting
;;

(setq c-default-style "bsd"
			c-basic-offset 2)
(setq compile-command "make -B")
(global-set-key (kbd "C-x O") 'previous-multiframe-window)
(c-set-offset 'innamespace 0)
(setq indent-namespaces "no")
(setq gdb-many-windows 1)
(setq-default tab-width 2)

;; (global-visual-line-mode 1)
(setq line-move-visual nil)

;; disabling autofill is a pain, so we set the fill column huge instead
(setq-default fill-column 10000000)

(setq js-indent-level 2)
(add-hook 'html-mode-hook
	  (lambda ()
	    (set (make-local-variable 'sgml-basic-offset) 2)))

(add-hook 'js-mode-hook
	(lambda ()
		(set (make-local-variable 'sgml-basic-offset) 2)))

(add-hook 'go-mode-hook
					(lambda ()
						(require 'go-dlv)
						;; Call Gofmt before saving
						(add-hook 'before-save-hook 'gofmt-before-save)
						;; Customize compile command to run go build
						(if (not (string-match "go" compile-command))
								(set (make-local-variable 'compile-command)
										 ;; "go build -v && go test -v && go vet"))
										 "go build -v"))
						;; Godef jump key binding
						(local-set-key (kbd "M-.") 'godef-jump)))

(setq rust-format-on-save t)
(add-hook 'rust-mode-hook
	(lambda () (setq compile-command "cargo build")))

;; save-place (saves last cursor position in each file
(setq save-place-file "~/.emacs.d/saveplace")
(setq-default save-place t)
(require 'saveplace)

(load-theme 'solarized-light t)
(menu-bar-mode -1)

(setq inhibit-startup-screen +1)
(setq initial-scratch-message "")

(setq-default show-trailing-whitespace +1)

;; gofmt means I don't care if there are tabs or spaces while editing
;; (add-hook 'go-mode-hook (lambda () (standard-display-ascii ?\t "\t")))

(defun my-elixir-hook ()
	(setq indent-tabs-mode nil)
