doomemacs/init/core-keymaps.el

223 lines
6.8 KiB
EmacsLisp
Raw Normal View History

2014-07-15 02:21:56 -04:00
;; Global keymaps ;;;;;;;;;;;;;;;
2014-08-07 18:35:22 -04:00
(global-set-key (kbd "<C-escape>") 'my/open-scratch)
(global-set-key (kbd "C-c C-p") 'package-list-packages)
(when is-mac
(nmap my/mode-map
(kbd "C-c o") 'send-dir-to-finder
(kbd "C-c u") 'send-to-transmit
(kbd "C-c l") 'send-to-launchbar
(kbd "C-c L") 'send-dir-to-launchbar
;; TODO: Open in tmux
2014-08-09 19:25:06 -04:00
;; (kbd "C-c t") (λ (shell))
2014-08-07 18:35:22 -04:00
)
;; Evaluating elisp
2014-08-09 19:25:06 -04:00
(nmap my/mode-map (kbd "C-c x") 'eval-buffer)
(vmap my/mode-map (kbd "C-c x") 'eval-region)
2014-08-07 18:35:22 -04:00
(when window-system
(global-set-key (kbd "s-+") 'text-scale-increase)
(global-set-key (kbd "s--") 'text-scale-decrease)
(global-set-key (kbd "s-/") 'evilnc-comment-or-uncomment-lines)
(global-set-key (kbd "s-w") 'kill-buffer-and-window)
(global-set-key (kbd "s-<f12>") 'toggle-frame-fullscreen)
(nmap my/mode-map
;; Faster scrolling
(kbd "s-j") "5j"
(kbd "s-k") "5k"
;; Leader alternatives
(kbd "s-f") 'projectile-find-file
(kbd "s-F") 'projectile-ag
(kbd "s-m") 'helm-recentf
(kbd "s-M") 'projectile-recentf
(kbd "s-o") 'ido-find-file
(kbd "s-O") 'open-major-mode-conf
2014-08-10 19:42:06 -04:00
(kbd "s-'") 'mc/mark-next-like-this
(kbd "s-\"") 'mc/mark-previous-like-this
(kbd "C-s-'") 'mc/mark-all-like-this
(kbd "s-d") 'dash-at-point)
2014-08-07 18:35:22 -04:00
;; Newlines from insert mode
(imap my/mode-map
(kbd "<s-return>") 'evil-open-below
(kbd "<S-s-return>") 'evil-open-above
;; Fix OSX text navigation shortcuts
(kbd "<s-left>") 'move-beginning-of-line
(kbd "<s-right>") 'move-end-of-line
(kbd "<s-backspace>") 'backward-kill-line
;; Fixes delete
(kbd "<kp-delete>") 'delete-char)
)
)
2014-07-15 02:21:56 -04:00
;; Local keymaps ;;;;;;;;;;;;;;;;
(evil-leader/set-leader ",")
(evil-leader/set-key
2014-08-07 18:35:22 -04:00
"`" 'my/notes
2014-08-10 19:42:06 -04:00
"'" 'mc/mark-next-like-this
"\"" 'mc/mark-all-like-this
2014-07-16 03:28:06 -04:00
"e" 'ido-find-file
2014-08-07 18:35:22 -04:00
"E" 'my/initfiles
2014-07-16 03:28:06 -04:00
"f" 'projectile-find-file
"F" 'projectile-ag
2014-07-23 23:16:28 -04:00
"m" 'helm-recentf ; recent GLOBAL files
"M" 'projectile-recentf ; recent PROJECT files
"p" 'projectile-switch-project
"/" 'evilnc-comment-or-uncomment-lines
2014-07-23 23:16:28 -04:00
"\\" 'neotree-show
"|" 'neotree-hide
2014-07-16 03:28:06 -04:00
";" 'helm-imenu
"," 'ido-switch-buffer
"=" 'align-regexp
2014-08-09 19:25:06 -04:00
"x" 'my/kill-other-buffers
"X" 'my/kill-all-buffers
2014-08-07 18:35:22 -04:00
(kbd "RET") 'org-capture
2014-07-16 03:28:06 -04:00
)
2014-08-07 18:35:22 -04:00
(nmap my/mode-map
";" 'evil-ex ; Remap ; to : - SPC and shift-SPC replace ; and ,
(kbd "C-;") 'eval-expression ; Elisp command
2014-07-16 03:28:06 -04:00
;; Moving rows rather than lines (in case of wrapping)
2014-08-07 18:35:22 -04:00
"j" 'evil-next-visual-line
2014-07-16 03:28:06 -04:00
"k" 'evil-previous-visual-line
"X" 'evil-destroy ; Delete without yanking
;; copy to end of line
2014-08-09 19:25:06 -04:00
"Y" (λ (evil-yank (point) (point-at-eol)))
"zz" 'kill-this-buffer ; Close buffer
2014-07-16 03:28:06 -04:00
"]b" 'previous-buffer
"[b" 'next-buffer
;; winner-mode: window layout undo/redo (see init-core.el)
2014-07-16 03:28:06 -04:00
(kbd "C-w u") 'winner-undo
(kbd "C-w C-r") 'winner-redo
;; Increment/decrement number under cursor
2014-07-16 03:28:06 -04:00
(kbd "<C-tab>") 'evil-numbers/inc-at-pt
(kbd "<S-C-tab>") 'evil-numbers/dec-at-pt
)
2014-08-07 18:35:22 -04:00
(vmap my/mode-map
2014-07-16 03:28:06 -04:00
; vnoremap < <gv
2014-08-09 19:25:06 -04:00
"<" (λ (evil-shift-left (region-beginning) (region-end))
2014-07-16 03:28:06 -04:00
(evil-normal-state)
(evil-visual-restore))
; vnoremap > >gv
2014-08-09 19:25:06 -04:00
">" (λ (evil-shift-right (region-beginning) (region-end))
2014-07-16 03:28:06 -04:00
(evil-normal-state)
(evil-visual-restore))
)
2014-08-07 18:35:22 -04:00
(imap my/mode-map
2014-07-22 23:24:02 -04:00
(kbd "s-j") 'evil-join
(kbd "M-SPC") 'expand-space
(kbd "<C-return>") 'indent-new-comment-line
)
2014-08-10 19:42:06 -04:00
(emap my/mode-map
;; Preserve buffer-movement in emacs mode
"j" 'evil-next-line
"k" 'evil-previous-line
(kbd "C-w h") 'evil-window-left
(kbd "C-w l") 'evil-window-right
(kbd "C-w j") 'evil-window-down
(kbd "C-w k") 'evil-window-up
(kbd "s-j") "5j"
(kbd "s-k") "5k"
)
2014-07-16 03:28:06 -04:00
;; Commenting lines
2014-08-07 18:35:22 -04:00
(nmap my/mode-map "gcc" 'evilnc-comment-or-uncomment-lines)
(vmap my/mode-map "gc" 'evilnc-comment-or-uncomment-lines)
2014-07-16 03:28:06 -04:00
;; Rotate-text (see elisp/rotate-text.el)
2014-08-07 18:35:22 -04:00
(nmap my/mode-map "!" 'rotate-word-at-point)
(vmap my/mode-map "!" 'rotate-region)
2014-07-16 03:28:06 -04:00
;; Enable TAB to do matchit
2014-08-07 18:35:22 -04:00
(nmap evil-matchit-mode-map (kbd "TAB") 'evilmi-jump-items)
2014-07-15 02:21:56 -04:00
;; Easy escape from insert mode
(ichmap "jj" 'evil-normal-state)
2014-08-10 19:42:06 -04:00
(nmap emacs-lisp-mode-map "gd"
(λ (let ((func (function-called-at-point)))
(if func (find-function func)))))
2014-07-15 02:21:56 -04:00
2014-07-16 03:28:06 -04:00
;;;; Ex Commands ;;;;;;;;;;;;;;;;
2014-08-07 18:35:22 -04:00
(evil-ex-define-cmd "retab" 'untabify) ; TODO: Implement proper retab defun
(evil-ex-define-cmd "msg" 'view-echo-area-messages)
2014-07-16 03:28:06 -04:00
;;;; Keymap fixes ;;;;;;;;;;;;;;;
2014-07-15 02:21:56 -04:00
;; Make ESC quit all the things
2014-08-07 18:35:22 -04:00
(nmap my/mode-map [escape] 'keyboard-quit)
(vmap my/mode-map [escape] 'keyboard-quit)
2014-07-16 03:28:06 -04:00
(mapc (lambda (map)
(define-key map [escape] 'minibuffer-quit))
(list
minibuffer-local-map
minibuffer-local-ns-map
minibuffer-local-completion-map
minibuffer-local-must-match-map
minibuffer-local-isearch-map))
2014-07-15 02:21:56 -04:00
(global-set-key [escape] 'evil-exit-emacs-state)
2014-07-16 03:28:06 -04:00
;; Close help window with escape
(define-key global-map [escape] 'quit-window)
2014-07-15 02:21:56 -04:00
2014-07-22 23:24:02 -04:00
;; Restore bash-esque keymaps in insert mode and the minibuffer
2014-07-16 03:28:06 -04:00
(mapc (lambda (map)
(define-key map (kbd "C-a") 'move-beginning-of-line)
(define-key map (kbd "C-e") 'move-end-of-line)
(define-key map (kbd "C-u") 'backward-kill-line))
2014-07-22 23:24:02 -04:00
(list minibuffer-local-map minibuffer-local-ns-map evil-insert-state-map))
2014-07-16 03:28:06 -04:00
(define-key evil-insert-state-map (kbd "C-w") 'backward-kill-word)
(define-key minibuffer-local-map (kbd "C-w") 'ido-delete-backward-word-updir)
2014-07-16 03:28:06 -04:00
(add-hook 'ido-setup-hook '(lambda ()
;; take that "Text is read-only" and stick it where emacs don't shine!
(define-key ido-completion-map (kbd "<backspace>") 'ido-delete-backward-updir)
(define-key ido-completion-map "\C-n" 'ido-next-match)
(define-key ido-completion-map "\C-f" 'ido-next-match)
(define-key ido-completion-map "\C-p" 'ido-prev-match)
(define-key ido-completion-map "\C-b" 'ido-prev-match)
;; Auto-complete on tab/space (why is it called ido-exit-minibuffer?)
(define-key ido-completion-map " " 'ido-exit-minibuffer)
))
2014-07-16 03:28:06 -04:00
2014-08-07 18:35:22 -04:00
;;
(defun backward-kill-line ()
(interactive)
(evil-delete (point-at-bol) (point)))
(defun minibuffer-quit ()
"Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
(interactive)
(if (and delete-selection-mode transient-mark-mode mark-active)
(setq deactivate-mark t)
(when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
(abort-recursive-edit)))
2014-07-16 03:28:06 -04:00
;;
2014-07-15 02:21:56 -04:00
(provide 'core-keymaps)