 ;; ...
 ;; Uh. Good question.
 
-(@map
+(eval-when-compile (require 'core-defuns))
+
+(bind!
  -
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;; Global keymaps                     ;;

 ;; Local keymaps                      ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 :nmv ";" evil-ex

 (:leader "m"
   :n ","   (λ (if (narf/project-p) (helm-projectile-switch-to-buffer) (helm-buffers-list)))
   :n "<"   'helm-buffers-list
   :n "."   'narf:ido-find-file
   :n ">"   'narf:ido-find-file-other-window
   :n "/"   'helm-projectile-find-file
   :n ";"   'helm-semantic-or-imenu

   :n "]"   'helm-etags-select
   :n "a"   'helm-projectile-find-other-file
   :n "E"   'narf::initfiles
   :n "h"   'helm-apropos
   :n "n"   'narf::notes
   :n "m"   'helm-recentf
   :n "M"   'helm-projectile-recentf  ; recent PROJECT files
   :n "p"   'helm-projectile-switch-project
   :n "r"   'emr-show-refactor-menu

   :n "qq"  'evil-save-and-quit
   :n "QQ"  (λ (let ((confirm-kill-emacs nil)) (narf::kill-buffers t) (evil-quit-all)))

   ;; insert lines in-place)
   :n "jj"  (λ (save-excursion (evil-insert-newline-below)))
   :n "kk"  (λ (save-excursion (evil-insert-newline-above)))

   :n "oo"  'narf:open-with
   :n "ob"  (λ (narf:open-with "Google Chrome"))
   :n "of"  (λ (narf:open-with "Finder.app" default-directory))
   :n "oF"  (λ (narf:open-with "Finder.app" (narf/project-root)))
   :n "ou"  (λ (narf:open-with "Transmit"))
   :n "oU"  (λ (narf:open-with "Transmit" default-directory))
   :n "ol"  (λ (narf:open-with "LaunchBar"))
   :n "oL"  (λ (narf:open-with "LaunchBar" default-directory))
   :n "ot"  (λ (narf::tmux-chdir nil t))
   :n "oT"  'narf::tmux-chdir)

 (:localleader "\\"
   :n "\\"  'narf:neotree-toggle
   :n "."   'narf:neotree-find
   :n ";"   'narf:nlinum-toggle
   :n "="   'toggle-transparency
   :n "E"   'evil-emacs-state

   :n "]"   'next-buffer
   :n "["   'previous-buffer

   :n "s"   (λ (narf::snippets t))        ; ido snippets dir
   :n "g"   'diff-hl-diff-goto-hunk
   :n "e"   (λ (call-interactively 'flycheck-buffer) (flycheck-list-errors))
   :n "p"   'helm-show-kill-ring
   :n "b"   'helm-bookmarks
   :n "w"   'helm-wg)

 :m :remap "j" "gj"
 :m :remap "k" "gk"

 :n "Y" "y$"

 :n "zr"  'narf:open-folds
 :n "zm"  'narf:close-folds

 :n "zx"  'narf:kill-real-buffer
 :n "zX"  'bury-buffer

 :n "]b"  'narf:next-real-buffer
 :n "[b"  'narf:previous-real-buffer
 :n "]w"  'wg-switch-to-workgroup-right
 :n "[w"  'wg-switch-to-workgroup-left

 ;; don't move cursor on indent
 :n "="   (λ (save-excursion (call-interactively 'evil-indent)))

 ;; Increment/decrement number under cursor
 :n "g="  'evil-numbers/inc-at-pt
 :n "g-"  'evil-numbers/dec-at-pt
 :n "gR"  'narf::eval-buffer
 :n "gc"  'evil-commentary
 :n "gy"  'evil-commentary-yank

 ;; VISUAL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 :v "."   'evil-repeat
 :v "gR"  'narf::eval-region-and-replace
 :v ",="  'align-regexp

 ;; vnoremap < <gv
 :v "<"   (λ (evil-shift-left (region-beginning) (region-end))


 :m "M-j"  "6j"
 :m "M-k"  "6k"
 :n "M-r"  'narf:eval-buffer
 :v "M-r"  'narf:eval-region
 :n "M-d"  'dash-at-point
 :n "M-o"  'narf/ido-find-file
 :n "M-O"  'narf/ido-find-project-file

 (:when IS-MAC
   "<A-left>"       'backward-word
   "<A-right>"      'forward-word
   "<M-backspace>"  'narf/backward-kill-to-bol-and-indent
   "A-SPC"          'just-one-space
   "M-a"            'mark-whole-buffer
   "M-c"            'evil-yank
