[Emacs] Better keybinds definition
Also some noweb improvements
This commit is contained in:
		
							parent
							
								
									35ef17c7d0
								
							
						
					
					
						commit
						7252623ada
					
				@ -801,25 +801,28 @@ can still feel some influence from my Spacemacs years here.
 | 
			
		||||
 | 
			
		||||
#+name: general-keybindings-gen
 | 
			
		||||
#+headers: :tangle no :exports none :results value :cache yes
 | 
			
		||||
#+begin_src emacs-lisp :var table=mu4e-keybindings-view-tbl
 | 
			
		||||
#+begin_src emacs-lisp :var table=keybinds-windows prefix=""
 | 
			
		||||
(mapconcat (lambda (line)
 | 
			
		||||
             (let* ((key      (car line))
 | 
			
		||||
                    (function (cadr line))
 | 
			
		||||
                    (function (if (or (string= "nil" function)
 | 
			
		||||
                                      (string= ""    function))
 | 
			
		||||
                                  ":ignore"
 | 
			
		||||
                                function))
 | 
			
		||||
                    (comment  (caddr line)))
 | 
			
		||||
               (format "\"%s\" %s" key
 | 
			
		||||
               (format "\"%s%s\" %s"
 | 
			
		||||
                       prefix
 | 
			
		||||
                       key
 | 
			
		||||
                       (if (string= "" comment)
 | 
			
		||||
                           (if (string= "nil" function)
 | 
			
		||||
                           (if (or (string= "" function)
 | 
			
		||||
                                   (string= "nil" function))
 | 
			
		||||
                               "nil"
 | 
			
		||||
                             (concat "#'" function))
 | 
			
		||||
                        (format "'(%s :which-key \"%s\")"
 | 
			
		||||
                                function
 | 
			
		||||
                                (if (string= "" function)
 | 
			
		||||
                                    "nil"
 | 
			
		||||
                                  comment))))))
 | 
			
		||||
                         (format "'(%s :wk %s)"
 | 
			
		||||
                                 (if (or (string= "" function)
 | 
			
		||||
                                         (string= "nil" function))
 | 
			
		||||
                                     ":ignore t"
 | 
			
		||||
                                   function)
 | 
			
		||||
                                 (if (or (string= "none" comment)
 | 
			
		||||
                                         (string= "nil" comment))
 | 
			
		||||
                                     "t"
 | 
			
		||||
                                   (concat "\"" comment "\"")))))))
 | 
			
		||||
           table
 | 
			
		||||
           "\n")
 | 
			
		||||
#+end_src
 | 
			
		||||
@ -1292,44 +1295,15 @@ in this code block all my keybinds for Elfeed here.
 | 
			
		||||
  (phundrak/evil
 | 
			
		||||
    :keymaps 'elfeed-show-mode-map
 | 
			
		||||
    :packages 'elfeed
 | 
			
		||||
    "+" #'elfeed-show-tag
 | 
			
		||||
    "-" #'elfeed-show-untag
 | 
			
		||||
    "«" #'elfeed-show-prev
 | 
			
		||||
    "»" #'elfeed-show-next
 | 
			
		||||
    "b" #'elfeed-show-visit
 | 
			
		||||
    "C" #'elfeed-kill-link-url-at-point
 | 
			
		||||
    "d" #'elfeed-show-save-enclosure
 | 
			
		||||
    "l" #'elfeed-show-next-link
 | 
			
		||||
    "o" #'elfeed-goodies/show-ace-link
 | 
			
		||||
    "q" #'elfeed-kill-buffer
 | 
			
		||||
    "S" #'elfeed-show-new-live-search
 | 
			
		||||
    "u" #'elfeed-show-tag--unread
 | 
			
		||||
    "y" #'elfeed-show-yank)
 | 
			
		||||
    <<general-keybindings-gen(table=elfeed-keybinds-show-mode)>>)
 | 
			
		||||
  (phundrak/evil
 | 
			
		||||
    :keymaps 'elfeed-search-mode-map
 | 
			
		||||
    :packages 'elfeed
 | 
			
		||||
    "«"  #'elfeed-search-first-entry
 | 
			
		||||
    "»"  #'elfeed-search-last-entry
 | 
			
		||||
    "b"  #'elfeed-search-browse-url
 | 
			
		||||
    "f"  '(nil :which-key "filter")
 | 
			
		||||
    "fc" #'elfeed-search-clear-filter
 | 
			
		||||
    "fl" #'elfeed-search-live-filter
 | 
			
		||||
    "fs" #'elfeed-search-set-filter
 | 
			
		||||
    "u"  '(nil :which-key "update")
 | 
			
		||||
    "us" #'elfeed-search-fetch
 | 
			
		||||
    "uS" #'elfeed-search-update
 | 
			
		||||
    "uu" #'elfeed-update
 | 
			
		||||
    "uU" #'elfeed-search-update--force
 | 
			
		||||
    "y"  #'elfeed-search-yank)
 | 
			
		||||
    <<general-keybindings-gen(table=elfeed-keybinds-search-mode)>>)
 | 
			
		||||
  (phundrak/major-leader-key
 | 
			
		||||
    :keymaps 'elfeed-search-mode-map
 | 
			
		||||
    :packages 'elfeed
 | 
			
		||||
    "c"  #'elfeed-db-compact
 | 
			
		||||
    "t"  '(nil :which-key "tag")
 | 
			
		||||
    "tt" #'elfeed-search-tag-all-unread
 | 
			
		||||
    "tu" #'elfeed-search-untag-all-unread
 | 
			
		||||
    "tT" #'elfeed-search-tag-all
 | 
			
		||||
    "tU" #'elfeed-search-untag-all))
 | 
			
		||||
    <<general-keybindings-gen(table=elfeed-keybinds-search-mode-prefixed)>>))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Last but not least, my Elfeed configuration is stored in an org file
 | 
			
		||||
@ -1345,6 +1319,61 @@ thanks to ~elfeed-org~.
 | 
			
		||||
  (setq rmh-elfeed-org-files '("~/org/elfeed.org")))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
**** Keybinds
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Applications-Elfeed-Keybinds-9oeijjs0baj0
 | 
			
		||||
:END:
 | 
			
		||||
First, here are the keybinds for Elfeed’s ~elfeed-show-mode~. They
 | 
			
		||||
aren’t prefixed by ~SPC~ like most of my keybinds, a direct keypress
 | 
			
		||||
will directly launch the function.
 | 
			
		||||
#+name: elfeed-keybinds-show-mode
 | 
			
		||||
| Key | Function                      | Comment |
 | 
			
		||||
|-----+-------------------------------+---------|
 | 
			
		||||
| +   | elfeed-show-tag               |         |
 | 
			
		||||
| -   | elfeed-show-untag             |         |
 | 
			
		||||
| «   | elfeed-show-prev              |         |
 | 
			
		||||
| »   | elfeed-show-next              |         |
 | 
			
		||||
| b   | elfeed-show-visit             |         |
 | 
			
		||||
| C   | elfeed-kill-link-url-at-point |         |
 | 
			
		||||
| d   | elfeed-show-save-enclosure    |         |
 | 
			
		||||
| l   | elfeed-show-next-link         |         |
 | 
			
		||||
| o   | elfeed-goodies/show-ace-link  |         |
 | 
			
		||||
| q   | elfeed-kill-buffer            |         |
 | 
			
		||||
| S   | elfeed-show-new-live-search   |         |
 | 
			
		||||
| u   | elfeed-show-tag--unread       |         |
 | 
			
		||||
| y   | elfeed-show-yank              |         |
 | 
			
		||||
 | 
			
		||||
Same thing, different mode, here are my keybinds for
 | 
			
		||||
~elfeed-search-mode~.
 | 
			
		||||
#+name: elfeed-keybinds-search-mode
 | 
			
		||||
| Key | Function                    | Comment |
 | 
			
		||||
|-----+-----------------------------+---------|
 | 
			
		||||
| «   | elfeed-search-first-entry   |         |
 | 
			
		||||
| »   | elfeed-search-last-entry    |         |
 | 
			
		||||
| b   | elfeed-search-browse-url    |         |
 | 
			
		||||
| f   |                             | filter  |
 | 
			
		||||
| fc  | elfeed-search-clear-filter  |         |
 | 
			
		||||
| fl  | elfeed-search-live-filter   |         |
 | 
			
		||||
| fs  | elfeed-search-set-filter    |         |
 | 
			
		||||
| u   |                             | update  |
 | 
			
		||||
| us  | elfeed-search-fetch         |         |
 | 
			
		||||
| uS  | elfeed-search-update        |         |
 | 
			
		||||
| uu  | elfeed-update               |         |
 | 
			
		||||
| uU  | elfeed-search-update--force |         |
 | 
			
		||||
| y   | elfeed-search-yank          |         |
 | 
			
		||||
 | 
			
		||||
I have some additional keybinds for ~elfeed-search-mode~, but these one
 | 
			
		||||
are prefixed with ~,~ (and ~M-m~).
 | 
			
		||||
#+name: elfeed-keybinds-search-mode-prefixed
 | 
			
		||||
| Key | Function                       | Comment |
 | 
			
		||||
|-----+--------------------------------+---------|
 | 
			
		||||
| c   | elfeed-db-compact              |         |
 | 
			
		||||
| t   |                                | tag     |
 | 
			
		||||
| tt  | elfeed-search-tag-all-unread   |         |
 | 
			
		||||
| tu  | elfeed-search-untag-all-unread |         |
 | 
			
		||||
| tT  | elfeed-search-tag-all          |         |
 | 
			
		||||
| tU  | elfeed-search-untag-all        |         |
 | 
			
		||||
 | 
			
		||||
*** Email
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Applications-Email9dt0fl6184j0
 | 
			
		||||
@ -1904,15 +1933,20 @@ I’ll also declare two keybinds for mu4e’s headers mode.
 | 
			
		||||
 | 
			
		||||
I will also redefine without a leader key ~ctsr~ in order to be able to
 | 
			
		||||
move freely (remember, bépo layout for me).
 | 
			
		||||
#+name: mu4e-keybindings-header-no-leader-table
 | 
			
		||||
| Key | Function           | Comment |
 | 
			
		||||
|-----+--------------------+---------|
 | 
			
		||||
| c   | evil-backward-char |         |
 | 
			
		||||
| t   | evil-next-line     |         |
 | 
			
		||||
| s   | evil-previous-line |         |
 | 
			
		||||
| r   | evil-forward-char  |         |
 | 
			
		||||
 | 
			
		||||
#+name: mu4e-keybindings-header-no-leader
 | 
			
		||||
#+begin_src emacs-lisp :tangle no
 | 
			
		||||
(phundrak/evil
 | 
			
		||||
  :keymaps 'mu4e-headers-mode-map
 | 
			
		||||
  :packages 'mu4e
 | 
			
		||||
  "c" #'evil-backward-char
 | 
			
		||||
  "t" #'evil-next-line
 | 
			
		||||
  "s" #'evil-previous-line
 | 
			
		||||
  "r" #'evil-forward-char)
 | 
			
		||||
  <<general-keybindings-gen(table=mu4e-keybindings-header-no-leader-table)>>)
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Finally, let’s declare a couple of keybindings for when we are
 | 
			
		||||
@ -1976,14 +2010,20 @@ the major-mode leader and call a simple function.
 | 
			
		||||
  (phundrak/major-leader-key
 | 
			
		||||
    :keymaps 'org-msg-edit-mode-map
 | 
			
		||||
    :packages 'org-msg
 | 
			
		||||
    "," #'message-send-and-exit
 | 
			
		||||
    "c" #'message-send-and-exit
 | 
			
		||||
    "a" #'message-kill-buffer
 | 
			
		||||
    "k" #'message-kill-buffer
 | 
			
		||||
    "s" #'message-dont-send
 | 
			
		||||
    "f" #'org-msg-attach))
 | 
			
		||||
    <<general-keybindings-gen(table=org-msg-edit-mode-keybinds)>>))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
The keybinds are relatively simple ~org-msg-edit-mode~:
 | 
			
		||||
#+name: org-msg-edit-mode-keybinds
 | 
			
		||||
| Key | Function              | Description |
 | 
			
		||||
|-----+-----------------------+-------------|
 | 
			
		||||
| ,   | message-send-and-exit |             |
 | 
			
		||||
| c   | message-send-and-exit |             |
 | 
			
		||||
| a   | message-kill-buffer   |             |
 | 
			
		||||
| k   | message-kill-buffer   |             |
 | 
			
		||||
| s   | message-dont-send     |             |
 | 
			
		||||
| f   | org-msg-attach        |             |
 | 
			
		||||
 | 
			
		||||
**** Email alerts
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Applications-Email-Email-alertsfx81fl6184j0
 | 
			
		||||
@ -2045,14 +2085,14 @@ configuration [[file:mpd.org][here]]).
 | 
			
		||||
    :packages 'emms
 | 
			
		||||
    "a"  #'emms-browser-add-tracks
 | 
			
		||||
    "A"  #'emms-browser-add-tracks-and-play
 | 
			
		||||
    "b"  '(nil :which-key "browse by")
 | 
			
		||||
    "b"  '(:ignore t :which-key "browse by")
 | 
			
		||||
    "bA" #'emms-browse-by-album
 | 
			
		||||
    "ba" #'emms-browse-by-artist
 | 
			
		||||
    "bg" #'emms-browse-by-genre
 | 
			
		||||
    "bs" #'emms-smart-browse
 | 
			
		||||
    "by" #'emms-browse-by-year
 | 
			
		||||
    "c"  #'emms-browser-clear-playlist
 | 
			
		||||
    "S"  '(nil :which-key "search")
 | 
			
		||||
    "S"  '(:ignore t :which-key "search")
 | 
			
		||||
    "SA" '(emms-browser-search-by-album  :which-key "by album")
 | 
			
		||||
    "Sa" '(emms-browser-search-by-artist :which-key "by artist")
 | 
			
		||||
    "Ss" '(emms-browser-search-by-names  :which-key "by name")
 | 
			
		||||
@ -2067,12 +2107,12 @@ configuration [[file:mpd.org][here]]).
 | 
			
		||||
  (phundrak/leader-key
 | 
			
		||||
    :infix "m"
 | 
			
		||||
    :packages 'emms
 | 
			
		||||
    ""   '(nil :which-key "media")
 | 
			
		||||
    ""   '(:ignore t :which-key "media")
 | 
			
		||||
    "."  #'hydra-media/body
 | 
			
		||||
    "«"  #'emms-player-mpd-previous
 | 
			
		||||
    "»"  #'emms-player-mpd-next
 | 
			
		||||
    "c"  #'emms-player-mpd-clear
 | 
			
		||||
    "e"  '(nil :which-key "emms")
 | 
			
		||||
    "e"  '(:ignore t :which-key "emms")
 | 
			
		||||
    "eb" #'emms-browser
 | 
			
		||||
    "ep" #'emms-playlist-mode-go
 | 
			
		||||
    "es" #'emms-player-mpd-show
 | 
			
		||||
@ -2081,14 +2121,19 @@ configuration [[file:mpd.org][here]]).
 | 
			
		||||
             (shell-command-and-echo "mpc toggle"))
 | 
			
		||||
           :which-key "mpc toggle")
 | 
			
		||||
    "s"  #'emms-stop
 | 
			
		||||
    "u"  '(nil :which-key "update")
 | 
			
		||||
    "u"  '(:ignore t :which-key "update")
 | 
			
		||||
    "um" #'emms-player-mpd-update-all
 | 
			
		||||
    "uc" #'emms-cache-set-from-mpd-all))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
**** Keybinds
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Applications-EMMS-and-Media-Keybinds-ue071zv0baj0
 | 
			
		||||
:header-args:emacs-lisp: :tangle no
 | 
			
		||||
:END:
 | 
			
		||||
I also want to create a small hydra for manipulating MPD:
 | 
			
		||||
#+name: emms-media-hydra
 | 
			
		||||
#+begin_src emacs-lisp :tangle no
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun shell-command-and-echo (command &optional echo prefix)
 | 
			
		||||
  "Run COMMAND and display the result of ECHO prefixed by PREFIX.
 | 
			
		||||
 | 
			
		||||
@ -2190,7 +2235,7 @@ dark mode for PDFs.
 | 
			
		||||
  (phundrak/major-leader-key
 | 
			
		||||
    :keymaps 'pdf-view-mode-map
 | 
			
		||||
    :packages 'pdf-tools
 | 
			
		||||
    "a"  '(nil :which-key "annotations")
 | 
			
		||||
    "a"  '(:ignore t :which-key "annotations")
 | 
			
		||||
    "aD" #'pdf-annot-delete
 | 
			
		||||
    "at" #'pdf-annot-attachment-dired
 | 
			
		||||
    "ah" #'pdf-annot-add-highlight-markup-annotation
 | 
			
		||||
@ -2201,12 +2246,12 @@ dark mode for PDFs.
 | 
			
		||||
    "at" #'pdf-annot-add-text-annotation
 | 
			
		||||
    "au" #'pdf-annot-add-underline-markup-annotation
 | 
			
		||||
 | 
			
		||||
    "f"  '(nil :which-key "fit")
 | 
			
		||||
    "f"  '(:ignore t :which-key "fit")
 | 
			
		||||
    "fw" #'pdf-view-fit-width-to-window
 | 
			
		||||
    "fh" #'pdf-view-fit-height-to-window
 | 
			
		||||
    "fp" #'pdf-view-fit-page-to-window
 | 
			
		||||
 | 
			
		||||
    "s"  '(nil :which-key "slice/search")
 | 
			
		||||
    "s"  '(:ignore t :which-key "slice/search")
 | 
			
		||||
    "sb" #'pdf-view-set-slice-from-bounding-box
 | 
			
		||||
    "sm" #'pdf-view-set-slice-using-mouse
 | 
			
		||||
    "sr" #'pdf-view-reset-slice
 | 
			
		||||
@ -2269,7 +2314,7 @@ doing and what Git is doing! In short, I absolutely love it!
 | 
			
		||||
  (phundrak/leader-key
 | 
			
		||||
    :infix   "g"
 | 
			
		||||
    :packages 'magit
 | 
			
		||||
    ""   '(nil :wk "git")
 | 
			
		||||
    ""   '(:ignore t :wk "git")
 | 
			
		||||
    "b"  #'magit-blame
 | 
			
		||||
    "c"  #'magit-clone
 | 
			
		||||
    "d"  #'magit-dispatch
 | 
			
		||||
@ -2278,7 +2323,7 @@ doing and what Git is doing! In short, I absolutely love it!
 | 
			
		||||
    "y"  #'my/yadm
 | 
			
		||||
    "S"  #'magit-stage-file
 | 
			
		||||
    "U"  #'magit-unstage-file
 | 
			
		||||
    "f"  '(nil :wk "file")
 | 
			
		||||
    "f"  '(:ignore t :wk "file")
 | 
			
		||||
    "fd" #'magit-diff
 | 
			
		||||
    "fc" #'magit-file-checkout
 | 
			
		||||
    "fl" #'magit-file-dispatch
 | 
			
		||||
@ -2517,7 +2562,7 @@ region or in a whole buffer.
 | 
			
		||||
  (phundrak/leader-key
 | 
			
		||||
    :infix "r"
 | 
			
		||||
    :packages 'iedit
 | 
			
		||||
    "" '(nil :which-key "refactor")
 | 
			
		||||
    "" '(:ignore t :which-key "refactor")
 | 
			
		||||
    "i" #'iedit-mode))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
@ -3137,7 +3182,8 @@ these will be renamed this way:
 | 
			
		||||
             (let ((buffer-name (car buffer)))
 | 
			
		||||
               (format "(\"%s\" %S)"
 | 
			
		||||
                       (downcase buffer-name)
 | 
			
		||||
                       `(exwm-workspace-rename-buffer (concat ,(concat buffer-name " - %s")
 | 
			
		||||
                       `(exwm-workspace-rename-buffer (concat ,buffer-name
 | 
			
		||||
                                                              " - "
 | 
			
		||||
                                                              exwm-title)))))
 | 
			
		||||
           buffers
 | 
			
		||||
           "\n")
 | 
			
		||||
@ -3328,8 +3374,7 @@ The complete configuration for the ~exwm~ package can be found below.
 | 
			
		||||
 | 
			
		||||
  <<exwm-generate-autostarts()>>
 | 
			
		||||
 | 
			
		||||
  <<exwm-init>>
 | 
			
		||||
  )
 | 
			
		||||
  <<exwm-init>>)
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
*** EXWM-Evil integration
 | 
			
		||||
@ -3424,9 +3469,6 @@ The complete configuration for the ~exwm~ package can be found below.
 | 
			
		||||
(defvar bluetooth-command "bluetoothctl")
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: bluetooth-command
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun bluetooth-turn-on ()
 | 
			
		||||
  (interactive)
 | 
			
		||||
@ -3434,9 +3476,6 @@ The complete configuration for the ~exwm~ package can be found below.
 | 
			
		||||
    (start-process "" nil bluetooth-command "power" "on")))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: bluetooth-turn-on
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun bluetooth-turn-off ()
 | 
			
		||||
  (interactive)
 | 
			
		||||
@ -3444,9 +3483,6 @@ The complete configuration for the ~exwm~ package can be found below.
 | 
			
		||||
    (start-process "" nil bluetooth-command "power" "off")))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: bluetooth-turn-off
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun create-bluetooth-device (raw-name)
 | 
			
		||||
  "Create a bluetooth device cons from RAW NAME.
 | 
			
		||||
@ -3456,9 +3492,6 @@ human-friendly name."
 | 
			
		||||
    `(,(string-join (cddr split-name) " ") . ,(cadr split-name))))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: create-bluetooth-device
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun bluetooth-get-devices ()
 | 
			
		||||
  (let ((literal-devices (string-trim (shell-command-to-string
 | 
			
		||||
@ -3468,9 +3501,6 @@ human-friendly name."
 | 
			
		||||
            (split-string literal-devices "\n"))))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: bluetooth-get-devices
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(defun bluetooth-connect-device ()
 | 
			
		||||
  (interactive)
 | 
			
		||||
@ -3483,9 +3513,6 @@ human-friendly name."
 | 
			
		||||
      (shell-command (string-join `(,bluetooth-command "connect" ,target-address) " ")))))
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: bluetooth-connect-device
 | 
			
		||||
 | 
			
		||||
** Making my life easier
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Packages-Configuration-Making-my-life-easier2kz4fl6184j0
 | 
			
		||||
@ -3879,7 +3906,7 @@ files.
 | 
			
		||||
   :keymaps 'org-mode-map
 | 
			
		||||
   :packages 'preview-org-html-mode
 | 
			
		||||
   :infix "P"
 | 
			
		||||
   ""  '(:ignore :which-key "preview")
 | 
			
		||||
   ""  '(:ignore t :which-key "preview")
 | 
			
		||||
   "h" #'preview-org-html-mode
 | 
			
		||||
   "r" #'preview-org-html-refresh
 | 
			
		||||
   "p" #'preview-org-html-pop-window-to-frame)
 | 
			
		||||
@ -4445,7 +4472,7 @@ The project is then defined like so:
 | 
			
		||||
   "i" #'org-ref-bibtex-hydra/org-ref-bibtex-new-entry/body-and-exit
 | 
			
		||||
   "s" #'org-ref-sort-bibtex-entry
 | 
			
		||||
 | 
			
		||||
   "l" '(:ignore :which-key "lookup")
 | 
			
		||||
   "l" '(:ignore t :which-key "lookup")
 | 
			
		||||
   "la" #'arxiv-add-bibtex-entry
 | 
			
		||||
   "lA" #'arxiv-get-pdf-add-bibtex-entry
 | 
			
		||||
   "ld" #'doi-utils-add-bibtex-entry-from-doi
 | 
			
		||||
@ -4919,54 +4946,54 @@ And let’s enable some intergration with ~ivy~.
 | 
			
		||||
  :defer t
 | 
			
		||||
  :straight (:build t)
 | 
			
		||||
  :requires treemacs)
 | 
			
		||||
 | 
			
		||||
(phundrak/leader-key
 | 
			
		||||
  :infix "at"
 | 
			
		||||
  :packages 'treemacs
 | 
			
		||||
  ""   '(:ignore :which-key "treemacs")
 | 
			
		||||
  "c"  '(:ignore :which-key "create")
 | 
			
		||||
  "cd" #'treemacs-create-dir
 | 
			
		||||
  "cf" #'treemacs-create-file
 | 
			
		||||
  "ci" #'treemacs-create-icon
 | 
			
		||||
  "ct" #'treemacs-create-theme
 | 
			
		||||
  "cw" #'treemacs-create-workspace
 | 
			
		||||
  "d"  #'treemacs-delete-file
 | 
			
		||||
  "f"  '(:ignore :which-key "files")
 | 
			
		||||
  "ff" #'treemacs-find-file
 | 
			
		||||
  "ft" #'treemacs-find-tag
 | 
			
		||||
  "l"  '(:ignore :which-key "lsp")
 | 
			
		||||
  "ls" #'treemacs-expand-lsp-symbol
 | 
			
		||||
  "ld" #'treemacs-expand-lsp-treemacs-deps
 | 
			
		||||
  "lD" #'treemacs-collapse-lsp-treemacs-deps
 | 
			
		||||
  "lS" #'treemacs-collapse-lsp-symbol
 | 
			
		||||
  "p"  '(:ignore :which-key "projects")
 | 
			
		||||
  "pa" #'treemacs-add-project
 | 
			
		||||
  "pf" #'treemacs-project-follow-mode
 | 
			
		||||
  "pn" #'treemacs-project-of-node
 | 
			
		||||
  "pp" #'treemacs-project-at-point
 | 
			
		||||
  "pr" #'treemacs-remove-project-from-workspace
 | 
			
		||||
  "pt" #'treemacs-move-project-down
 | 
			
		||||
  "ps" #'treemacs-move-project-up
 | 
			
		||||
  "r"  '(:ignore :which-key "rename")
 | 
			
		||||
  "rf" #'treemacs-rename-file
 | 
			
		||||
  "rp" #'treemacs-rename-project
 | 
			
		||||
  "rr" #'treemacs-rename
 | 
			
		||||
  "rw" #'treemacs-rename-workspace
 | 
			
		||||
  "t"  #'treemacs
 | 
			
		||||
  "T"  '(:ignore :which-key "toggles")
 | 
			
		||||
  "Td" #'treemacs-toggle-show-dotfiles
 | 
			
		||||
  "Tn" #'treemacs-toggle-node
 | 
			
		||||
  "v"  '(:ignore :wk "visit node")
 | 
			
		||||
  "va" #'treemacs-visit-node-ace
 | 
			
		||||
  "vc" #'treemacs-visit-node-close-treemacs
 | 
			
		||||
  "vn" #'treemacs-visit-node-default
 | 
			
		||||
  "y"  '(:ignore :which-key "yank")
 | 
			
		||||
  "ya" #'treemacs-copy-absolute-path-at-point
 | 
			
		||||
  "yp" #'treemacs-copy-project-path-at-point
 | 
			
		||||
  "yr" #'treemacs-copy-relative-path-at-point
 | 
			
		||||
  "yf" #'treemacs-copy-file)
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+name: treemacs-keybinds
 | 
			
		||||
| Key | Function                               | Description |
 | 
			
		||||
|-----+----------------------------------------+-------------|
 | 
			
		||||
|     |                                        | treemacs    |
 | 
			
		||||
| c   |                                        | create      |
 | 
			
		||||
| cd  | treemacs-create-dir                    |             |
 | 
			
		||||
| cf  | treemacs-create-file                   |             |
 | 
			
		||||
| ci  | treemacs-create-icon                   |             |
 | 
			
		||||
| ct  | treemacs-create-theme                  |             |
 | 
			
		||||
| cw  | treemacs-create-workspace              |             |
 | 
			
		||||
| d   | treemacs-delete-file                   |             |
 | 
			
		||||
| f   |                                        | files       |
 | 
			
		||||
| ff  | treemacs-find-file                     |             |
 | 
			
		||||
| ft  | treemacs-find-tag                      |             |
 | 
			
		||||
| l   |                                        | lsp         |
 | 
			
		||||
| ls  | treemacs-expand-lsp-symbol             |             |
 | 
			
		||||
| ld  | treemacs-expand-lsp-treemacs-deps      |             |
 | 
			
		||||
| lD  | treemacs-collapse-lsp-treemacs-deps    |             |
 | 
			
		||||
| lS  | treemacs-collapse-lsp-symbol           |             |
 | 
			
		||||
| p   |                                        | projects    |
 | 
			
		||||
| pa  | treemacs-add-project                   |             |
 | 
			
		||||
| pf  | treemacs-project-follow-mode           |             |
 | 
			
		||||
| pn  | treemacs-project-of-node               |             |
 | 
			
		||||
| pp  | treemacs-project-at-point              |             |
 | 
			
		||||
| pr  | treemacs-remove-project-from-workspace |             |
 | 
			
		||||
| pt  | treemacs-move-project-down             |             |
 | 
			
		||||
| ps  | treemacs-move-project-up               |             |
 | 
			
		||||
| r   |                                        | rename      |
 | 
			
		||||
| rf  | treemacs-rename-file                   |             |
 | 
			
		||||
| rp  | treemacs-rename-project                |             |
 | 
			
		||||
| rr  | treemacs-rename                        |             |
 | 
			
		||||
| rw  | treemacs-rename-workspace              |             |
 | 
			
		||||
| t   | treemacs                               |             |
 | 
			
		||||
| T   |                                        | toggles     |
 | 
			
		||||
| Td  | treemacs-toggle-show-dotfiles          |             |
 | 
			
		||||
| Tn  | treemacs-toggle-node                   |             |
 | 
			
		||||
| v   |                                        | visit node  |
 | 
			
		||||
| va  | treemacs-visit-node-ace                |             |
 | 
			
		||||
| vc  | treemacs-visit-node-close-treemacs     |             |
 | 
			
		||||
| vn  | treemacs-visit-node-default            |             |
 | 
			
		||||
| y   |                                        | yank        |
 | 
			
		||||
| ya  | treemacs-copy-absolute-path-at-point   |             |
 | 
			
		||||
| yp  | treemacs-copy-project-path-at-point    |             |
 | 
			
		||||
| yr  | treemacs-copy-relative-path-at-point   |             |
 | 
			
		||||
| yf  | treemacs-copy-file                     |             |
 | 
			
		||||
 | 
			
		||||
#+begin_src emacs-lisp
 | 
			
		||||
(use-package exec-path-from-shell
 | 
			
		||||
  :defer t
 | 
			
		||||
@ -5165,7 +5192,7 @@ unfortunately.
 | 
			
		||||
    "p"   #'markdown-previous-link
 | 
			
		||||
    "f"   #'markdown-follow-thing-at-point
 | 
			
		||||
    "k"   #'markdown-kill-thing-at-point
 | 
			
		||||
    "c"   '(nil :which-key "command")
 | 
			
		||||
    "c"   '(:ignore t :which-key "command")
 | 
			
		||||
    "c]"  #'markdown-complete-buffer
 | 
			
		||||
    "cc"  #'markdown-check-refs
 | 
			
		||||
    "ce"  #'markdown-export
 | 
			
		||||
@ -5175,7 +5202,7 @@ unfortunately.
 | 
			
		||||
    "cp"  #'markdown-preview
 | 
			
		||||
    "cv"  #'markdown-export-and-preview
 | 
			
		||||
    "cw"  #'markdown-kill-ring-save
 | 
			
		||||
    "h"   '(nil :which-key "headings")
 | 
			
		||||
    "h"   '(:ignore t :which-key "headings")
 | 
			
		||||
    "hi"  #'markdown-insert-header-dwim
 | 
			
		||||
    "hI"  #'markdown-insert-header-setext-dwim
 | 
			
		||||
    "h1"  #'markdown-insert-header-atx-1
 | 
			
		||||
@ -5186,22 +5213,22 @@ unfortunately.
 | 
			
		||||
    "h6"  #'markdown-insert-header-atx-6
 | 
			
		||||
    "h!"  #'markdown-insert-header-setext-1
 | 
			
		||||
    "h@"  #'markdown-insert-header-setext-2
 | 
			
		||||
    "i"   '(nil :which-key "insert")
 | 
			
		||||
    "i"   '(:ignore t :which-key "insert")
 | 
			
		||||
    "i-"  #'markdown-insert-hr
 | 
			
		||||
    "if"  #'markdown-insert-footnote
 | 
			
		||||
    "ii"  #'markdown-insert-image
 | 
			
		||||
    "il"  #'markdown-insert-link
 | 
			
		||||
    "it"  #'markdown-insert-table
 | 
			
		||||
    "iw"  #'markdown-insert-wiki-link
 | 
			
		||||
    "l"   '(nil :which-key "lists")
 | 
			
		||||
    "l"   '(:ignore t :which-key "lists")
 | 
			
		||||
    "li"  #'markdown-insert-list-item
 | 
			
		||||
    "T"   '(nil :which-key "toggle")
 | 
			
		||||
    "T"   '(:ignore t :which-key "toggle")
 | 
			
		||||
    "Ti"  #'markdown-toggle-inline-images
 | 
			
		||||
    "Tu"  #'markdown-toggle-url-hiding
 | 
			
		||||
    "Tm"  #'markdown-toggle-markup-hiding
 | 
			
		||||
    "Tt"  #'markdown-toggle-gfm-checkbox
 | 
			
		||||
    "Tw"  #'markdown-toggle-wiki-links
 | 
			
		||||
    "t"   '(nil :which-key "table")
 | 
			
		||||
    "t"   '(:ignore t :which-key "table")
 | 
			
		||||
    "tc"  #'markdown-table-move-column-left
 | 
			
		||||
    "tt"  #'markdown-table-move-row-down
 | 
			
		||||
    "ts"  #'markdown-table-move-row-up
 | 
			
		||||
@ -5209,13 +5236,13 @@ unfortunately.
 | 
			
		||||
    "ts"  #'markdown-table-sort-lines
 | 
			
		||||
    "tC"  #'markdown-table-convert-region
 | 
			
		||||
    "tt"  #'markdown-table-transpose
 | 
			
		||||
    "td"  '(nil :which-key "delete")
 | 
			
		||||
    "td"  '(:ignore t :which-key "delete")
 | 
			
		||||
    "tdc" #'markdown-table-delete-column
 | 
			
		||||
    "tdr" #'markdown-table-delete-row
 | 
			
		||||
    "ti"  '(nil :which-key "insert")
 | 
			
		||||
    "ti"  '(:ignore t :which-key "insert")
 | 
			
		||||
    "tic" #'markdown-table-insert-column
 | 
			
		||||
    "tir" #'markdown-table-insert-row
 | 
			
		||||
    "x"   '(nil :which-key "text")
 | 
			
		||||
    "x"   '(:ignore t :which-key "text")
 | 
			
		||||
    "xb"  #'markdown-insert-bold
 | 
			
		||||
    "xB"  #'markdown-insert-gfm-checkbox
 | 
			
		||||
    "xc"  #'markdown-insert-code
 | 
			
		||||
@ -5336,7 +5363,7 @@ or some I write myself.
 | 
			
		||||
  (phundrak/major-leader-key
 | 
			
		||||
   :keymaps 'plantuml-mode-map
 | 
			
		||||
   :packages 'plantuml-mode
 | 
			
		||||
   "c"  '(nil :which-key "compile")
 | 
			
		||||
   "c"  '(:ignore t :which-key "compile")
 | 
			
		||||
   "cc" #'plantuml-preview
 | 
			
		||||
   "co" #'plantuml-set-output-type)
 | 
			
		||||
  :config
 | 
			
		||||
@ -5516,11 +5543,11 @@ comma.
 | 
			
		||||
 "ee"  #'eval-last-sexp
 | 
			
		||||
 "er"  #'eval-region
 | 
			
		||||
 | 
			
		||||
 "h"   '(nil :which-key "help")
 | 
			
		||||
 "h"   '(:ignore t :which-key "help")
 | 
			
		||||
 "hh"  #'helpful-at-point
 | 
			
		||||
 | 
			
		||||
 "t"   '(nil :wk "toggle")
 | 
			
		||||
 "tP"  '(nil :wk "parinfer")
 | 
			
		||||
 "t"   '(:ignore t :wk "toggle")
 | 
			
		||||
 "tP"  '(:ignore t :wk "parinfer")
 | 
			
		||||
 "tPs" #'parinfer-rust-switch-mode
 | 
			
		||||
 "tPd" #'parinfer-rust-mode-disable
 | 
			
		||||
 "tPp" #'parinfer-rust-toggle-paren-mode)
 | 
			
		||||
@ -5926,17 +5953,17 @@ development. First, let’s install the most important package,
 | 
			
		||||
  (phundrak/major-leader-key
 | 
			
		||||
   :keymaps 'web-mode-map
 | 
			
		||||
   :packages 'web-mode
 | 
			
		||||
   "="  '(nil :which-key "format")
 | 
			
		||||
   "E"  '(nil :which-key "errors")
 | 
			
		||||
   "="  '(:ignore t :which-key "format")
 | 
			
		||||
   "E"  '(:ignore t :which-key "errors")
 | 
			
		||||
   "El" #'web-mode-dom-errors-show
 | 
			
		||||
   "gb" #'web-mode-element-beginning
 | 
			
		||||
   "g"  '(nil :which-key "goto")
 | 
			
		||||
   "g"  '(:ignore t :which-key "goto")
 | 
			
		||||
   "gc" #'web-mode-element-child
 | 
			
		||||
   "gp" #'web-mode-element-parent
 | 
			
		||||
   "gs" #'web-mode-element-sibling-next
 | 
			
		||||
   "h"  '(nil :which-key "dom")
 | 
			
		||||
   "h"  '(:ignore t :which-key "dom")
 | 
			
		||||
   "hp" #'web-mode-dom-xpath
 | 
			
		||||
   "r"  '(nil :which-key "refactor")
 | 
			
		||||
   "r"  '(:ignore t :which-key "refactor")
 | 
			
		||||
   "rc" #'web-mode-element-clone
 | 
			
		||||
   "rd" #'web-mode-element-vanish
 | 
			
		||||
   "rk" #'web-mode-element-kill
 | 
			
		||||
@ -6476,144 +6503,269 @@ Undefining some stuff to make keybind prefixes work correctly.
 | 
			
		||||
  "SPC" '(counsel-M-x :wk "M-x")
 | 
			
		||||
  "'"   #'shell-pop
 | 
			
		||||
 | 
			
		||||
  "a"   '(nil :wk "apps")
 | 
			
		||||
  "ac"  #'calc
 | 
			
		||||
  "ad"  #'docker
 | 
			
		||||
  "ae"  #'elfeed
 | 
			
		||||
  "aE"  #'eww
 | 
			
		||||
  "ak"  #'keycast-mode
 | 
			
		||||
  "aK"  #'keycast-log-mode
 | 
			
		||||
  "aT"  #'tetris
 | 
			
		||||
  "aw"  #'wttrin
 | 
			
		||||
  "aC"  #'calendar
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-apps, prefix="a")>>
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-apps-shell, prefix="as")>>
 | 
			
		||||
  <<general-keybindings-gen(table=treemacs-keybinds, prefix="at")>>
 | 
			
		||||
 | 
			
		||||
  "as"  '(nil :wk "shells")
 | 
			
		||||
  "ase" #'eshell-new
 | 
			
		||||
  "asv" #'vterm
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-buffers, prefix="b")>>
 | 
			
		||||
 | 
			
		||||
  "b"   '(nil :wk "buffers")
 | 
			
		||||
  "bb"  #'bufler-switch-buffer
 | 
			
		||||
  "bB"  #'bury-buffer
 | 
			
		||||
  "bl"  #'bufler
 | 
			
		||||
  "bd"  #'kill-this-buffer
 | 
			
		||||
  "bD"  #'kill-buffer
 | 
			
		||||
  "bh"  #'dashboard-refresh-buffer
 | 
			
		||||
  "bm"  #'switch-to-messages-buffer
 | 
			
		||||
  "br"  #'counsel-buffer-or-recentf
 | 
			
		||||
  "bs"  #'switch-to-scratch-buffer
 | 
			
		||||
 | 
			
		||||
  "c"   '(nil :wk "code")
 | 
			
		||||
  "c"   '(:ignore t :wk "code")
 | 
			
		||||
  "cl"  #'evilnc-comment-or-uncomment-lines
 | 
			
		||||
 | 
			
		||||
  "e"   '(nil :wk "email")
 | 
			
		||||
  "ec"  #'mu4e-compose-new
 | 
			
		||||
  "em"  #'mu4e
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-email, prefix="e")>>
 | 
			
		||||
 | 
			
		||||
  "f"   '(nil :wk "files")
 | 
			
		||||
  "fc"  '((lambda ()
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-files, prefix="f")>>
 | 
			
		||||
  <<keybinds-specific-files>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-help, prefix="h")>>
 | 
			
		||||
 | 
			
		||||
  "i"   '(:ignore t :wk "insert")
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-jump, prefix="j")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-project, prefix="p")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-toggle, prefix="t")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-text, prefix="T")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-project, prefix="p")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-windows, prefix="w")>>
 | 
			
		||||
 | 
			
		||||
  <<general-keybindings-gen(table=keybinds-quit, prefix="q")>>
 | 
			
		||||
 | 
			
		||||
  "u"   #'universal-argument
 | 
			
		||||
  "U"   #'undo-tree-visualize)
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Apps
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Apps-wz2ajup0baj0
 | 
			
		||||
:END:
 | 
			
		||||
Here are my apps keybinds. Each one of them is prefixed by ~a~.
 | 
			
		||||
#+name: keybinds-apps
 | 
			
		||||
| Key | Function         | Description |
 | 
			
		||||
|-----+------------------+-------------|
 | 
			
		||||
|     |                  | apps        |
 | 
			
		||||
| c   | calc             |             |
 | 
			
		||||
| d   | docker           |             |
 | 
			
		||||
| e   | elfeed           |             |
 | 
			
		||||
| E   | eww              |             |
 | 
			
		||||
| k   | keycast-mode     |             |
 | 
			
		||||
| K   | keycast-log-mode |             |
 | 
			
		||||
| T   | tetris           |             |
 | 
			
		||||
| w   | wttrin           |             |
 | 
			
		||||
| C   | calendar         |             |
 | 
			
		||||
 | 
			
		||||
I also have two main shell-related functions, prefixed with ~as~.
 | 
			
		||||
#+name: keybinds-apps-shell
 | 
			
		||||
| Key | Function   | Description |
 | 
			
		||||
|-----+------------+-------------|
 | 
			
		||||
|     |            | shells      |
 | 
			
		||||
| e   | eshell-new |             |
 | 
			
		||||
| v   | vterm      |             |
 | 
			
		||||
 | 
			
		||||
** Buffers
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Buffers-rj5ajup0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My buffer-related keybinds are all prefixed by ~b~.
 | 
			
		||||
#+name: keybinds-buffers
 | 
			
		||||
| Key | Function                  | Description |
 | 
			
		||||
|-----+---------------------------+-------------|
 | 
			
		||||
|     |                           | buffers     |
 | 
			
		||||
| b   | bufler-switch-buffer      |             |
 | 
			
		||||
| B   | bury-buffer               |             |
 | 
			
		||||
| l   | bufler                    |             |
 | 
			
		||||
| d   | kill-this-buffer          |             |
 | 
			
		||||
| D   | kill-buffer               |             |
 | 
			
		||||
| h   | dashboard-refresh-buffer  |             |
 | 
			
		||||
| m   | switch-to-messages-buffer |             |
 | 
			
		||||
| r   | counsel-buffer-or-recentf |             |
 | 
			
		||||
| s   | switch-to-scratch-buffer  |             |
 | 
			
		||||
 | 
			
		||||
** Email
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Email-gv0ltxp0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My two keybinds for my emails are prefixed by ~e~.
 | 
			
		||||
#+name: keybinds-email
 | 
			
		||||
| Key | Function         | Description |
 | 
			
		||||
|-----+------------------+-------------|
 | 
			
		||||
|     |                  | email       |
 | 
			
		||||
| c   | mu4e-compose-new |             |
 | 
			
		||||
| m   | mu4e             |             |
 | 
			
		||||
 | 
			
		||||
** Files
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Files-9lj2j9q0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My keybinds for file manipulation are prefixed by ~f~.
 | 
			
		||||
#+name: keybinds-files
 | 
			
		||||
| Key | Function             | Description |
 | 
			
		||||
|-----+----------------------+-------------|
 | 
			
		||||
|     |                      | files       |
 | 
			
		||||
| f   | counsel-find-file    |             |
 | 
			
		||||
| F   | ivy-quick-find-files |             |
 | 
			
		||||
| h   | hexl-find-file       |             |
 | 
			
		||||
| r   | counsel-recentf      |             |
 | 
			
		||||
| s   | save-buffer          |             |
 | 
			
		||||
 | 
			
		||||
I also have some keybinds dedicated to opening specific files.
 | 
			
		||||
#+name: keybinds-specific-files
 | 
			
		||||
#+begin_src emacs-lisp :tangle no
 | 
			
		||||
"fc"  '((lambda ()
 | 
			
		||||
          (interactive)
 | 
			
		||||
          (find-file "~/org/config/emacs.org"))
 | 
			
		||||
        :wk "emacs.org")
 | 
			
		||||
  "ff"  #'counsel-find-file
 | 
			
		||||
  "fF"  #'ivy-quick-find-files
 | 
			
		||||
  "fh"  #'hexl-find-file
 | 
			
		||||
  "fi"  '((lambda ()
 | 
			
		||||
"fi"  '((lambda ()
 | 
			
		||||
          (interactive)
 | 
			
		||||
          (find-file (concat user-emacs-directory "init.el")))
 | 
			
		||||
        :which-key "init.el")
 | 
			
		||||
  "fr"  #'counsel-recentf
 | 
			
		||||
  "fs"  #'save-buffer
 | 
			
		||||
  "fS"  '((lambda ()
 | 
			
		||||
"fS"  '((lambda ()
 | 
			
		||||
          (interactive)
 | 
			
		||||
          (find-file "~/org/config/stumpwm.org"))
 | 
			
		||||
        :which-key "stumpwm.org")
 | 
			
		||||
 | 
			
		||||
  "h"   '(nil :wk "help")
 | 
			
		||||
  "hk"  #'which-key-show-top-level
 | 
			
		||||
  "hi"  #'info
 | 
			
		||||
  "hI"  #'info-display-manual
 | 
			
		||||
  "hd"  '(nil :wk "describe")
 | 
			
		||||
  "hdc" #'describe-char
 | 
			
		||||
  "hdC" #'helpful-command
 | 
			
		||||
  "hdf" #'helpful-callable
 | 
			
		||||
  "hdi" #'describe-input-method
 | 
			
		||||
  "hdk" #'helpful-key
 | 
			
		||||
  "hdm" #'helpful-macro
 | 
			
		||||
  "hdM" #'helpful-mode
 | 
			
		||||
  "hdp" #'describe-package
 | 
			
		||||
  "hds" #'helpful-symbol
 | 
			
		||||
  "hdv" #'helpful-variable
 | 
			
		||||
 | 
			
		||||
  "i"   '(nil :wk "insert")
 | 
			
		||||
 | 
			
		||||
  "j"   '(nil :wk "jump")
 | 
			
		||||
  "jd"  #'dired-jump
 | 
			
		||||
  "jD"  #'dired-jump-other-window
 | 
			
		||||
 | 
			
		||||
  "p"   '(nil :wk "project")
 | 
			
		||||
  "p!"  #'projectile-run-shell-command-in-root
 | 
			
		||||
  "p&"  #'projectile-run-async-shell-command-in-root
 | 
			
		||||
  "pb"  #'counsel-projectile-switch-to-buffer
 | 
			
		||||
  "pc"  #'counsel-projectile
 | 
			
		||||
  "pd"  #'counsel-projectile-find-dir
 | 
			
		||||
  "pe"  #'projectile-edit-dir-locals
 | 
			
		||||
  "pf"  #'counsel-projectile-find-file
 | 
			
		||||
  "pg"  #'projectile-find-tag
 | 
			
		||||
  "pk"  #'project-kill-buffers
 | 
			
		||||
  "pp"  #'counsel-projectile-switch-project
 | 
			
		||||
  "pt"  #'ivy-magit-todos
 | 
			
		||||
  "pv"  #'projectile-vc
 | 
			
		||||
 | 
			
		||||
  "t"   '(nil :wk "toggles")
 | 
			
		||||
  "tt"  #'counsel-load-theme
 | 
			
		||||
  "ti"  '(nil :wk "input method")
 | 
			
		||||
  "tit" #'toggle-input-method
 | 
			
		||||
  "tis" #'set-input-mode
 | 
			
		||||
 | 
			
		||||
  "u"   #'universal-argument
 | 
			
		||||
  "U"   #'undo-tree-visualize
 | 
			
		||||
 | 
			
		||||
  "w"   '(nil :wk "windows")
 | 
			
		||||
  "w."  #'windows-adjust-size/body
 | 
			
		||||
  "w-"  #'split-window-below-and-focus
 | 
			
		||||
  "w/"  #'split-window-right-and-focus
 | 
			
		||||
  "w$"  #'winum-select-window-by-number
 | 
			
		||||
  "w0"  '(winum-select-window-0-or-10 :wk nil)
 | 
			
		||||
  "w1"  '(winum-select-window-1 :wk nil)
 | 
			
		||||
  "w2"  '(winum-select-window-2 :wk nil)
 | 
			
		||||
  "w3"  '(winum-select-window-3 :wk nil)
 | 
			
		||||
  "w4"  '(winum-select-window-4 :wk nil)
 | 
			
		||||
  "w5"  '(winum-select-window-5 :wk nil)
 | 
			
		||||
  "w6"  '(winum-select-window-6 :wk nil)
 | 
			
		||||
  "w7"  '(winum-select-window-7 :wk nil)
 | 
			
		||||
  "w8"  '(winum-select-window-8 :wk nil)
 | 
			
		||||
  "w9"  '(winum-select-window-9 :wk nil)
 | 
			
		||||
 | 
			
		||||
  "wb"  #'kill-buffer-and-delete-window
 | 
			
		||||
  "wd"  #'delete-window
 | 
			
		||||
  "wo"  #'other-window
 | 
			
		||||
  "wD"  #'delete-other-windows
 | 
			
		||||
  "ww"  '(nil :wk "writeroom")
 | 
			
		||||
  "ww." #'writeroom-buffer-width/body
 | 
			
		||||
  "www" #'writeroom-mode
 | 
			
		||||
 | 
			
		||||
  "wc"  #'evil-window-left
 | 
			
		||||
  "wt"  #'evil-window-down
 | 
			
		||||
  "ws"  #'evil-window-up
 | 
			
		||||
  "wr"  #'evil-window-right
 | 
			
		||||
 | 
			
		||||
  "T"   '(nil :wk "text")
 | 
			
		||||
  "Tz"  #'hydra-zoom/body
 | 
			
		||||
  "Tu"  #'downcase-region
 | 
			
		||||
  "TU"  #'upcase-region
 | 
			
		||||
  "Te"  #'string-edit-at-point
 | 
			
		||||
 | 
			
		||||
  "q"   '(nil :wk "quit")
 | 
			
		||||
  "qf"  #'delete-frame
 | 
			
		||||
  "qq"  #'save-buffers-kill-terminal
 | 
			
		||||
  "qQ"  #'kill-emacs)
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Help
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Help-ock4suq0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My keybinds for help are prefixed by ~h~.
 | 
			
		||||
#+name: keybinds-help
 | 
			
		||||
| Key | Function                 | Description |
 | 
			
		||||
|-----+--------------------------+-------------|
 | 
			
		||||
|     |                          | help        |
 | 
			
		||||
| k   | which-key-show-top-level |             |
 | 
			
		||||
| i   | info                     |             |
 | 
			
		||||
| I   | info-display-manual      |             |
 | 
			
		||||
| d   |                          | describe    |
 | 
			
		||||
| dc  | describe-char            |             |
 | 
			
		||||
| dC  | helpful-command          |             |
 | 
			
		||||
| df  | helpful-callable         |             |
 | 
			
		||||
| di  | describe-input-method    |             |
 | 
			
		||||
| dk  | helpful-key              |             |
 | 
			
		||||
| dm  | helpful-macro            |             |
 | 
			
		||||
| dM  | helpful-mode             |             |
 | 
			
		||||
| dp  | describe-package         |             |
 | 
			
		||||
| ds  | helpful-symbol           |             |
 | 
			
		||||
| dv  | helpful-variable         |             |
 | 
			
		||||
 | 
			
		||||
** Jump
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Jump-dt56n1r0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My keybinds for jumping around are prefixed by ~j~.
 | 
			
		||||
#+name: keybinds-jump
 | 
			
		||||
| Key | Function                | Description |
 | 
			
		||||
|-----+-------------------------+-------------|
 | 
			
		||||
|     |                         | jump        |
 | 
			
		||||
| c   | counsel-dired-jump      |             |
 | 
			
		||||
| f   | counsel-file-jump       |             |
 | 
			
		||||
| d   | dired-jump              |             |
 | 
			
		||||
| D   | dired-jump-other-window |             |
 | 
			
		||||
 | 
			
		||||
** Project
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Project-yfo8z3r0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My keybinds for my projects are prefixed by ~p~.
 | 
			
		||||
#+name: keybinds-project
 | 
			
		||||
| Key | Function                                   | Description |
 | 
			
		||||
|-----+--------------------------------------------+-------------|
 | 
			
		||||
|     |                                            | project     |
 | 
			
		||||
| !   | projectile-run-shell-command-in-root       |             |
 | 
			
		||||
| &   | projectile-run-async-shell-command-in-root |             |
 | 
			
		||||
| b   | counsel-projectile-switch-to-buffer        |             |
 | 
			
		||||
| c   | counsel-projectile                         |             |
 | 
			
		||||
| d   | counsel-projectile-find-dir                |             |
 | 
			
		||||
| e   | projectile-edit-dir-locals                 |             |
 | 
			
		||||
| f   | counsel-projectile-find-file               |             |
 | 
			
		||||
| g   | projectile-find-tag                        |             |
 | 
			
		||||
| k   | project-kill-buffers                       |             |
 | 
			
		||||
| p   | counsel-projectile-switch-project          |             |
 | 
			
		||||
| t   | ivy-magit-todos                            |             |
 | 
			
		||||
| v   | projectile-vc                              |             |
 | 
			
		||||
 | 
			
		||||
** Text
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Text-yf0cb4s0baj0
 | 
			
		||||
:END:
 | 
			
		||||
The prefix here is ~T~.
 | 
			
		||||
#+name: keybinds-text
 | 
			
		||||
| Key | Function             | Description |
 | 
			
		||||
|-----+----------------------+-------------|
 | 
			
		||||
|     |                      | text        |
 | 
			
		||||
| e   | string-edit-at-point |             |
 | 
			
		||||
| u   | downcase-region      |             |
 | 
			
		||||
| U   | upcase-region        |             |
 | 
			
		||||
| z   | hydra-zoom/body      |             |
 | 
			
		||||
 | 
			
		||||
** Toggles
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Toggles-9hoj2br0baj0
 | 
			
		||||
:END:
 | 
			
		||||
My toggle keybinds are prefixed by ~t~.
 | 
			
		||||
#+name: keybinds-toggle
 | 
			
		||||
| Key | Function            | Description  |
 | 
			
		||||
|-----+---------------------+--------------|
 | 
			
		||||
|     |                     | toggles      |
 | 
			
		||||
| t   | counsel-load-theme  |              |
 | 
			
		||||
| i   |                     | input method |
 | 
			
		||||
| it  | toggle-input-method |              |
 | 
			
		||||
| is  | set-input-mode      |              |
 | 
			
		||||
 | 
			
		||||
** Windows
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Windows-fbgcper0baj0
 | 
			
		||||
:END:
 | 
			
		||||
A couple of keybinds are hidden from which-key, otherwise there’s not
 | 
			
		||||
much to say. The prefix here is ~w~.
 | 
			
		||||
#+name: keybinds-windows
 | 
			
		||||
| Key | Function                      | Description |
 | 
			
		||||
|-----+-------------------------------+-------------|
 | 
			
		||||
|     |                               | windows     |
 | 
			
		||||
| c   | evil-window-left              |             |
 | 
			
		||||
| t   | evil-window-down              |             |
 | 
			
		||||
| s   | evil-window-up                |             |
 | 
			
		||||
| r   | evil-window-right             |             |
 | 
			
		||||
| .   | windows-adjust-size/body      |             |
 | 
			
		||||
| -   | split-window-below-and-focus  |             |
 | 
			
		||||
| /   | split-window-right-and-focus  |             |
 | 
			
		||||
| $   | winum-select-window-by-number |             |
 | 
			
		||||
| 0   | winum-select-window-0-or-10   | none        |
 | 
			
		||||
| 1   | winum-select-window-1         | none        |
 | 
			
		||||
| 2   | winum-select-window-2         | none        |
 | 
			
		||||
| 3   | winum-select-window-3         | none        |
 | 
			
		||||
| 4   | winum-select-window-4         | none        |
 | 
			
		||||
| 5   | winum-select-window-5         | none        |
 | 
			
		||||
| 6   | winum-select-window-6         | none        |
 | 
			
		||||
| 7   | winum-select-window-7         | none        |
 | 
			
		||||
| 8   | winum-select-window-8         | none        |
 | 
			
		||||
| 9   | winum-select-window-9         | none        |
 | 
			
		||||
| b   | kill-buffer-and-delete-window |             |
 | 
			
		||||
| d   | delete-window                 |             |
 | 
			
		||||
| o   | other-window                  |             |
 | 
			
		||||
| D   | delete-other-windows          |             |
 | 
			
		||||
| w   |                               | writeroom   |
 | 
			
		||||
| w.  | writeroom-buffer-width/body   |             |
 | 
			
		||||
| ww  | writeroom-mode                |             |
 | 
			
		||||
 | 
			
		||||
** Quit
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Keybindings-Quit-bs8kh6s0baj0
 | 
			
		||||
:END:
 | 
			
		||||
Why would I ever use any of these keybinds? They are prefixed with ~q~.
 | 
			
		||||
#+name: keybinds-quit
 | 
			
		||||
| Key | Function                   | Description |
 | 
			
		||||
|-----+----------------------------+-------------|
 | 
			
		||||
|     |                            | quit        |
 | 
			
		||||
| f   | delete-frame               |             |
 | 
			
		||||
| q   | save-buffers-kill-terminal |             |
 | 
			
		||||
| Q   | kill-emacs                 |             |
 | 
			
		||||
 | 
			
		||||
* Various TODOs                                                    :noexport:
 | 
			
		||||
:PROPERTIES:
 | 
			
		||||
:CUSTOM_ID: Various-TODOsnwt6fl6184j0
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user