                           'slime
                           'tuareg
                           'magit
+                          'free-keys
+                          'bind-key
                           )
 
+;; Make reloading .emacs changes easier
+(defun reload-emacs ()
+  (interactive)
+  (load-file "~/.emacs"))
+(bind-key "C-x r e" 'reload-emacs)
+
+;; Set default font
 (add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-11"))
 (set-face-attribute 'default t :font "DejaVu Sans Mono-11")
 
 ;; Cleanup whitespace on every save
 (add-hook 'before-save-hook 'whitespace-cleanup)
 
+;; Show the time
+(display-time-mode t)
+
 (require 'multi-term)
 (setq multi-term-program "/bin/bash")
 
+;; Smoother window transitions
 (require 'ace-window)
-(global-set-key (kbd "M-p") 'ace-window)
+(bind-key "<C-tab>" 'ace-window)
+;; May remove these...
+;; (bind-key "M-p" 'ace-window)
+;; (bind-key "<C-tab>" 'other-window)
+;; Allow easy window switching with shift-<dir>
+;; (windmove-default-keybindings)
+;; (setq windmove-wrap-around t)
 
 (require 'cider)
 (setq cider-show-error-buffer nil)

(require 'rainbow-delimiters)
(rainbow-delimiters-mode t)

(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode t)

;(add-to-list 'default-frame-alist '(width . 120))

;; Make linum-mode a keyboard toggle
(bind-key "C-M-l" 'linum-mode)
(column-number-mode t)

(require 'evil)
(evil-mode t)

(require 'evil-surround)
(global-evil-surround-mode 1)

;; Easily resize windows in a frame.
;; Acts weirdly in different windows
(global-set-key (kbd "S-C-<left>")  'shrink-window-horizontally)
(global-set-key (kbd "S-C-<right>") 'enlarge-window-horizontally)
(global-set-key (kbd "S-C-<down>")  'shrink-window)
(global-set-key (kbd "S-C-<up>")    'enlarge-window)

;; Forcefully remove evil-mode (basically) from term states
;; One can use `ctl-z` to toggle evil-mode back on
