;; -*- lexical-binding: t; -*-
;; BINDINGS
-;; USER SPACE
-(global-set-key (kbd "C-c a") 'org-agenda)
-(global-set-key (kbd "C-c b") 'buffer-menu-other-window)
-(global-set-key (kbd "C-c c") 'org-capture)
-(global-set-key (kbd "C-c C-e") (lambda () (interactive) (dired user-emacs-directory)))
-(global-set-key (kbd "C-c ei") (lambda () (interactive) (find-file user-init-file)))
-(global-set-key (kbd "C-c ep") (lambda () (interactive) (find-file user-packages)))
-(global-set-key (kbd "C-c es") (lambda () (interactive) (find-file user-setqs)))
-(global-set-key (kbd "C-c ew") (lambda () (interactive) (find-file user-work-eqs)))
-(global-set-key (kbd "C-c ed") (lambda () (interactive) (find-file user-defuns)))
-(global-set-key (kbd "C-c eh") (lambda () (interactive) (find-file user-hooks)))
-(global-set-key (kbd "C-c eb") (lambda () (interactive) (find-file user-bindings)))
-(global-set-key (kbd "C-c s") 'eshell)
-(global-set-key (kbd "<f5>") 'scratch-only)
-(global-set-key (kbd "<f8>") 'recentf-open-files)
-;; OVERRIDES
-(global-set-key [remap move-beginning-of-line] 'smart-beginning-of-line)
-(global-set-key (kbd "M-j") 'backward-join-line)
-(global-set-key (kbd "C-S-k") 'kill-whole-line)
-(global-set-key (kbd "C-o") 'open-line-below)
-(global-set-key (kbd "M-o") 'open-line-above)
-(global-set-key (kbd "M-s .") 'isearch-forward-thing-at-point)
-(global-set-key (kbd "M-s M-.") 'isearch-forward-symbol-at-point)
-(global-set-key (kbd "C-u") 'backward-kill-line)
-(global-set-key (kbd "C-w") 'kill-bword-or-region)
-(global-set-key (kbd "C-z") 'zap-up-to-char)
-(global-set-key (kbd "C-M-z") 'eval-region)
-(global-set-key (kbd "C-'") 'universal-argument)
-(global-set-key (kbd "C-x C-b") 'buffer-menu)
-(global-set-key (kbd "C-%") 'replace-regexp)
-(global-set-key (kbd "M-%") 'slot/replace-string-many)
-(global-set-key (kbd "C-M-%") 'slot/query-replace-many)
-(global-set-key (kbd "<home>") 'beginning-of-buffer)
-(global-set-key (kbd "<end>") 'end-of-buffer)
-(global-set-key (kbd "C-<left>") 'previous-window-any-frame)
-(global-set-key (kbd "C-<right>") 'next-window-any-frame)
-(global-set-key (kbd "C-M-<left>") 'previous-buffer)
-(global-set-key (kbd "C-M-<right>") 'next-buffer)
+;; USER SPACE - mode-specific-map C-c by default
+(define-key mode-specific-map [b] 'buffer-menu-other-window)
+(define-key mode-specific-map [ee] (lambda () (interactive) (dired user-emacs-directory)))
+(define-key mode-specific-map [ei] (lambda () (interactive) (find-file user-init-file)))
+(define-key mode-specific-map [ep] (lambda () (interactive) (find-file user-packages)))
+(define-key mode-specific-map [es] (lambda () (interactive) (find-file user-setqs)))
+(define-key mode-specific-map [ew] (lambda () (interactive) (find-file user-work-eqs)))
+(define-key mode-specific-map [ed] (lambda () (interactive) (find-file user-defuns)))
+(define-key mode-specific-map [eh] (lambda () (interactive) (find-file user-hooks)))
+(define-key mode-specific-map [eb] (lambda () (interactive) (find-file user-bindings)))
+(define-key mode-specific-map [s] 'eshell)
+(define-key mode-specific-map [\;] 'comment-or-uncomment-region)
+(define-key mode-specific-map [f5] 'scratch-only)
+(define-key mode-specific-map [f8] 'recentf-open-files)
+;; OVERRIDES - global-map
+(define-key global-map [remap move-beginning-of-line] 'smart-beginning-of-line)
+(define-key global-map [\C-o] 'open-line-below)
+(define-key global-map [\C-u] 'backward-kill-line)
+(define-key global-map [\C-w] 'kill-bword-or-region)
+(define-key global-map [\C-z] 'zap-up-to-char)
+(define-key global-map [\C-'] 'universal-argument)
+(define-key global-map [\C-%] 'replace-regexp)
+(define-key global-map [home] 'beginning-of-buffer)
+(define-key global-map [end] 'end-of-buffer)
+(define-key global-map [?\C-left] 'previous-window-any-frame)
+(define-key global-map [?\C-right] 'next-window-any-frame)
+(define-key global-map [?\C-\S-k] 'kill-whole-line)
+(define-key global-map [?\C-\S-S] 'isearch-forward-regexp)
+(define-key global-map [?\C-\S-R] 'isearch-backward-regexp)
+;; OVERRIDES - ctl-x-map
+(define-key ctl-x-map [\C-b]'buffer-menu)
+;; OVERRIDES - esc-map (M-*)
+(define-key esc-map [j] 'backward-join-line)
+(define-key esc-map [o] 'open-line-above)
+(define-key esc-map [s.] 'isearch-forward-thing-at-point)
+(define-key esc-map [s\M-.] 'isearch-forward-symbol-at-point)
+(define-key esc-map [%] 'slot/replace-string-many)
+(define-key esc-map [\C-z] 'eval-region)
+(define-key esc-map [?\C-%] 'slot/query-replace-many)
+(define-key esc-map [?\C-left] 'previous-buffer)
+(define-key esc-map [?\C-right] 'next-buffer)
+
;; MODE-SPECIFIC
-(add-hook 'eshell-mode-hook (lambda ()
- (define-key eshell-mode-map (kbd ")") 'eshell-send-on-close-paren)))
-(add-hook 'org-mode-hook (lambda ()
- (define-key org-mode-map (kbd "C-'") nil)
- (define-key org-mode-map (kbd "C-,") nil)))
-(add-hook 'org-agenda-mode-hook (lambda ()
- (define-key org-agenda-mode-map (kbd "C-'") nil)
- (define-key org-agenda-mode-map (kbd "C-,") nil)))
+(add-hook 'eshell-mode-hook (lambda () (define-key eshell-mode-map ")" 'eshell-send-on-close-paren)))