 
 ;;; Code:
 
+(require 'use-package)
+
 (prelude-require-package 'hydra)
 
-(use-package smartparens
-  :bind (("M-s" . hydra-smartparens/body))
-  :init
-  (defhydra hydra-smartparens (:hint nil)
-    "
+
+(use-package hydra
+  :defer 0.5
+  :bind (("M-w" . hydra-window/body)
+         ("M-s" . hydra-smartparens/body)
+         ("M-m" . hydra-magit/body)
+         ("M-y" . hydra-yasnippet/body)
+         ("M-f" . hydra-flycheck/body)
+         ("M-F" . hydra-flyspell/body))
+  )
+
+
+(defhydra hydra-magit (:color blue :hint nil)
+  "
+.: Magit :.
+
+_q_ quit
+
+^New/Clone^       ^Actions^
+^---------^-------^-------^----------------------------------------------------
+_i_ init          _s_ status
+_c_ clone         _b_ blame
+  "
+  ("q" nil)
+  ;; New/Clone
+  ("i" magit-init)
+  ("c" magit-clone)
+  ("s" magit-status)
+  ("b" magit-blame)
+  )
+
+
+(defhydra hydra-smartparens (:hint nil)
+  "
 .: Smartparens :.
 
 _q_ quit

  )


(use-package hydra
  :defer 2
  :bind ("M-F" . hydra-flyspell/body))

(defhydra hydra-flyspell (:color blue :hint nil)
  "
.: Flyspell :.

_w_ copy        _j_ join
_k_ kill        _s_ split
^^              _t_ transpose (swap)"
  ("q" nil)
  ;; Navigation
  ("a" sp-beginning-of-sexp)
  ("e" sp-end-of-sexp)
  ("<left>" sp-backward-sexp)
  ("<right>" sp-forward-sexp)
  ("<up>" sp-up-sexp)
  ("<down>" sp-down-sexp)
  ("S-<up>" sp-backward-up-sexp)
  ("S-<down>" sp-backward-down-sexp)
  ;; Barfing/slurping
  ("C-<right>" sp-forward-slurp-sexp)
  ("C-<left>" sp-forward-barf-sexp)
  ("C-S-<left>" sp-backward-slurp-sexp)
  ("C-S-<right>" sp-backward-barf-sexp)
  ;; Wrapping
  ("(" (lambda (a) (interactive "P") (sp-wrap-with-pair "(")))
  ("[" (lambda (a) (interactive "P") (sp-wrap-with-pair "[")))
  ("{" (lambda (a) (interactive "P") (sp-wrap-with-pair "{")))
  ("\"" (lambda (a) (interactive "P") (sp-wrap-with-pair "\"")))
  ("'" (lambda (a) (interactive "P") (sp-wrap-with-pair "'")))
  ("\\" (lambda (a) (interactive "P") (sp-wrap-with-pair "\\")))
  ("`" (lambda (a) (interactive "P") (sp-wrap-with-pair "`")))
  ("u" sp-unwrap-sexp)
  ("U" sp-backward-unwrap-sexp)
  ;; Kill/copy
  ("w" sp-copy-sexp)
  ("k" sp-kill-sexp)
  ;; Misc
  ("t" sp-transpose-sexp)
  ("j" sp-join-sexp)
  ("s" sp-split-sexp)
  )


(defhydra hydra-window (:hint nil)
  "
.: Windows :.

_q_ quit
