private/bindings Literate configuration
Introduction
This is the main document for this module (private/bindings).
To compile, simply execute the source code block below
(org-babel-tangle-file "README.org" "config.el")
Initial
Set the localleader to "SPC ,"
;;; private/bindings/config.el -*- lexical-binding: t; -*-
(setq doom-leader-key "SPC")
(setq doom-localleader-key "SPC ,")
Leader
Bindings for the leader map
Single binds
These are immediate bindings to the leader map that instantly launch functions when pressed. This binding space is reserved for stuff I use quite often.
(map!
:leader
"SPC" #'execute-extended-command
"!" #'async-shell-command
"T" #'eshell
"C" #'calc
"-" #'dired-jump
"_" #'dired-jump-other-window
";" #'eval-expression
"h" #'help-command
"w" #'ace-window)
Files
(map!
:leader
:prefix "f"
"r" #'recentf-open-files
(:after projectile
"p" #'(lambda () (interactive) (doom-project-find-file "~/Dotfiles")))
"f" #'find-file
"s" #'save-buffer
"d" #'dired)
Buffers
(map!
:leader
:prefix "b"
"n" #'next-buffer
"p" #'previous-buffer
"d" #'kill-current-buffer
"b" #'switch-to-buffer
"i" #'ibuffer)
Search
(map!
:leader
:prefix "s"
"i" #'imenu
"o" #'+lookup/online
(:after counsel
"s" #'swiper
"r" #'counsel-rg)
(:after counsel-etags
"t" #'counsel-etags-find-tag))
Projectile
(map!
:leader
:after projectile
">" #'projectile-switch-to-buffer
(:prefix ("p" . "project")
"p" #'projectile-switch-project
"g" #'projectile-regenerate-tags
"f" #'projectile-find-file
"i" #'projectile-invalidate-cache))
Code
(map!
:leader
:prefix ("c" . "code") ; Code
:desc "Compile" "c" #'compile
:desc "Compile via make" "m" #'+make/run
:desc "Flycheck" "v" #'flycheck-list-errors
:desc "Undo tree" "u" #'undo-tree-visualize
(:after lsp
:desc "Format code lsp" "f" #'+default/lsp-format-region-or-buffer
:desc "Execute action" "a" #'lsp-execute-code-action))
Magit and VC
(map!
:leader
:after magit
:prefix "g"
"g" #'magit-status
"c" #'magit-clone
"f" #'magit-fetch
"p" #'magit-pull)
Notes
(map!
:leader
:prefix ("n" . "notes")
:desc "Open notes in dired" "-" #'(lambda () (interactive) (dired org-directory))
:desc "Open quicknotes" "q" #'(lambda () (interactive) (find-file (format "%s/qnotes.org" org-directory))))
Frames
(map!
:leader
:prefix "F"
"d" #'delete-frame)
Toggle
Bindings that usually toggle stuff based bindings
(map!
:leader
:prefix "t"
"s" #'flyspell-mode
"f" #'flycheck-mode
"t" #'toggle-truncate-lines
"l" #'doom/toggle-line-numbers
"F" #'toggle-frame-fullscreen)
Quit
Quit Emacs or restart it
(map!
:leader
:prefix "q"
"q" #'save-buffers-kill-terminal
"r" #'doom/restart)
Ivy
Bindings for ivy based functions
(map!
:after ivy
:map ivy-minibuffer-map
"C-j" #'ivy-next-line-or-history
"C-k" #'ivy-previous-line-or-history)
Company
(map!
:i "C-SPC" #'company-complete-common
:map company-active-map
"C-j" #'company-select-next-or-abort
"C-k" #'company-select-previous-or-abort)
Multi cursors
Setup bindings for multi cursors. As it's a motion based system, use the "gz" namespace.
(map!
:after evil
:m "gzm" #'evil-mc-resume-cursors
:m "gzp" #'evil-mc-pause-cursors
:m "gzd" #'evil-mc-make-all-cursors
:m "gzj" #'evil-mc-make-cursor-move-next-line
:m "gzk" #'evil-mc-make-cursor-move-prev-line
:m "gzz" #'evil-mc-make-cursor-here)
Remaps
Remap certain functions to more useful counterparts
(after! org
(define-key!
[remap org-goto] #'imenu))
Misc
Misc bindings that don't fit to any other category.
(map!
"C-x C-z" #'text-scale-adjust
(:after evil
"TAB" #'evil-jump-item)
"M-c" #'count-words-region
"M-s" #'occur)