Files
dotfiles/Doom/.config/doom/modules/private/bindings

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
 "-"   #'dired-jump
 "_"   #'dired-jump-other-window
 ";"   #'eval-expression
 "h"   #'help-command
 "w"   #'ace-window)

Files

(map!
 :leader
 :prefix "f"
 "r"  #'counsel-recentf
 "f"  #'find-file
 "p"  #'(lambda () (interactive) (doom-project-find-file "~/Dotfiles"))
 "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
 :desc   "Switch to p-buffer" ">"     #'projectile-switch-to-buffer
 :desc   "Projects"           "p"     #'projectile-switch-project
 (:prefix ("p" . "project")
  :desc "Regen tags"          "g"     #'projectile-regenerate-tags
  :desc "Open project files"  "f"     #'projectile-find-file))

Code

(map!
 :leader
 :prefix ("c" . "code") ; Code
 :desc "Compile"            "c"       #'compile
 :desc "Compile via make"   "m"       #'+make/run
 :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
 :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)

Company

(map!
 :after company
 :map company-active-map
 "C-j"   #'company-select-next
 "C-k"   #'company-select-previous
 "C-SPC" #'company-complete)

Multi cursors

Setup bindings for multi cursors. As it's a motion based system, use the "gz" namespace.

(map!
 :prefix "g"
 (:prefix "z"
   "m" #'evil-mc-resume-cursors
   "p" #'evil-mc-pause-cursors
   "d" #'evil-mc-make-all-cursors
   "j" #'evil-mc-make-cursor-move-next-line
   "k" #'evil-mc-make-cursor-move-prev-line
   "z" #'evil-mc-make-cursor-at-pos))

Quit

Quit Emacs or restart it

(map!
 :prefix "q"
 "q" #'save-buffers-kill-terminal
 "r" #'doom/restart)

Remaps

(define-key!
  [remap org-goto] #'counsel-org-goto)

Misc

Misc bindings that don't fit to any other category.

(map!
 "C-x C-z" #'text-scale-adjust
 "TAB" #'evil-jump-item
 "M-c" #'count-words-region
 "M-s" #'occur)