Convert evil-define-key to :general extension
This seems to look easier on the eyes.
This commit is contained in:
parent
0d47e845ee
commit
c12ffd9028
4 changed files with 132 additions and 118 deletions
185
ha-config.org
185
ha-config.org
|
@ -347,7 +347,7 @@ Oh, and let’s not close the frame, but instead, the window:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(global-set-key (kbd "s-w") 'delete-window)
|
(global-set-key (kbd "s-w") 'delete-window)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*** Undo
|
** Undo
|
||||||
I mean, I /always/ use ~C-/~ for [[help:undo][undo]] (and ~C-?~ for [[help:undo-redo][redo]]), but since I’m on the Mac quite a bit, I want to cover my bases.
|
I mean, I /always/ use ~C-/~ for [[help:undo][undo]] (and ~C-?~ for [[help:undo-redo][redo]]), but since I’m on the Mac quite a bit, I want to cover my bases.
|
||||||
|
|
||||||
Why use [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]] instead of the built-in undo functionality? Well, there isn’t much to the project (that’s a good thing), but It basically doesn’t /cycle/ around the redo, which annoying.
|
Why use [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]] instead of the built-in undo functionality? Well, there isn’t much to the project (that’s a good thing), but It basically doesn’t /cycle/ around the redo, which annoying.
|
||||||
|
@ -361,12 +361,6 @@ Why use [[https://gitlab.com/ideasman42/emacs-undo-fu][undo-fu]] instead of the
|
||||||
(global-set-key (kbd "s-z") 'undo-fu-only-undo)
|
(global-set-key (kbd "s-z") 'undo-fu-only-undo)
|
||||||
(global-set-key (kbd "s-S-z") 'undo-fu-only-redo))
|
(global-set-key (kbd "s-S-z") 'undo-fu-only-redo))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*** Expand Region
|
|
||||||
Magnar Sveen's [[https://github.com/magnars/expand-region.el][expand-region]] project allows me to hit ~v~ repeatedly, having the selection grow by syntactical units.
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package expand-region
|
|
||||||
:bind ("C-=" . er/expand-region))
|
|
||||||
#+END_SRC
|
|
||||||
** Evil-Specific Keybindings
|
** Evil-Specific Keybindings
|
||||||
Can we change Evil at this point? Some tips:
|
Can we change Evil at this point? Some tips:
|
||||||
- [[https://github.com/noctuid/evil-guide]]
|
- [[https://github.com/noctuid/evil-guide]]
|
||||||
|
@ -395,11 +389,6 @@ Can we change Evil at this point? Some tips:
|
||||||
(let ((mode (make-symbol (format "%s-mode" name))))
|
(let ((mode (make-symbol (format "%s-mode" name))))
|
||||||
(add-to-list 'evil-emacs-state-modes mode)))
|
(add-to-list 'evil-emacs-state-modes mode)))
|
||||||
|
|
||||||
;; Use escape to get out of visual mode, but hitting v again expands the selection.
|
|
||||||
(evil-define-key 'visual global-map (kbd "v") 'er/expand-region)
|
|
||||||
|
|
||||||
;; While I normally just use `link-hint', the gx keybinding is used by evil-exchange:
|
|
||||||
(evil-define-key 'normal global-map (kbd "gz") 'browse-url-at-point)
|
|
||||||
(evil-mode))
|
(evil-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -428,7 +417,7 @@ I'm not trying an experiment where specially-placed function keys on my fancy er
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package general
|
(use-package general
|
||||||
:custom
|
:custom
|
||||||
(general-use-package-emit-autoloads nil)
|
(general-use-package-emit-autoloads t)
|
||||||
|
|
||||||
:config
|
:config
|
||||||
(general-evil-setup t)
|
(general-evil-setup t)
|
||||||
|
@ -895,7 +884,6 @@ Let's make Info behave a little more VI-like:
|
||||||
The [[https://github.com/minad/consult][consult project]] aims to use the libraries like [[*Vertico][Vertico]] to enhance specific, built-in, Emacs functions. I particularly appreciate the feature that when selecting an element in the minibuffer, it displays what you are looking at… for instance, it previews a buffer before choosing it. Unlike /Vertico/ and /Orderless/, you need to bind keys to its special functions (or rebind existing keys that do something similar).
|
The [[https://github.com/minad/consult][consult project]] aims to use the libraries like [[*Vertico][Vertico]] to enhance specific, built-in, Emacs functions. I particularly appreciate the feature that when selecting an element in the minibuffer, it displays what you are looking at… for instance, it previews a buffer before choosing it. Unlike /Vertico/ and /Orderless/, you need to bind keys to its special functions (or rebind existing keys that do something similar).
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package consult
|
(use-package consult
|
||||||
:after general
|
|
||||||
;; Enable automatic preview at point in the *Completions* buffer. This is
|
;; Enable automatic preview at point in the *Completions* buffer. This is
|
||||||
;; relevant when you use the default completion UI.
|
;; relevant when you use the default completion UI.
|
||||||
:hook (completion-list-mode . consult-preview-at-point-mode)
|
:hook (completion-list-mode . consult-preview-at-point-mode)
|
||||||
|
@ -905,16 +893,17 @@ The [[https://github.com/minad/consult][consult project]] aims to use the librar
|
||||||
(setq xref-show-xrefs-function #'consult-xref
|
(setq xref-show-xrefs-function #'consult-xref
|
||||||
xref-show-definitions-function #'consult-xref)
|
xref-show-definitions-function #'consult-xref)
|
||||||
|
|
||||||
|
:bind ("s-v" . consult-yank-pop)
|
||||||
|
|
||||||
|
:general
|
||||||
|
(:states 'normal
|
||||||
|
"gp" 'consult-yank-pop
|
||||||
|
"gs" 'consult-line)
|
||||||
:config
|
:config
|
||||||
(ha-leader
|
(ha-leader
|
||||||
"RET" '("bookmark" . consult-bookmark)
|
"RET" '("bookmark" . consult-bookmark)
|
||||||
"o i" '("imenu" . consult-imenu)
|
"o i" '("imenu" . consult-imenu)
|
||||||
"x y" '("preview yank" . consult-yank-pop))
|
"x y" '("preview yank" . consult-yank-pop)))
|
||||||
|
|
||||||
:general
|
|
||||||
(:states 'normal :keymaps 'global-mode-map
|
|
||||||
"gp" 'consult-yank-pop
|
|
||||||
"gs" 'consult-line))
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*** Consult for Projects
|
*** Consult for Projects
|
||||||
One of the reasons that Consult hasn’t been too important to me, is that I often narrow my searching based on projectile. So let’s see what the [[https://gitlab.com/OlMon/consult-projectile][consult-projectile]] can offer.
|
One of the reasons that Consult hasn’t been too important to me, is that I often narrow my searching based on projectile. So let’s see what the [[https://gitlab.com/OlMon/consult-projectile][consult-projectile]] can offer.
|
||||||
|
@ -1009,7 +998,10 @@ In other words, typing ~s-;~ to call Embark, specifies the options in a buffer,
|
||||||
*** Evil Exchange
|
*** Evil Exchange
|
||||||
I often use the Emacs commands, ~M-t~ and whatnot to exchange words and whatnot, but this requires a drop out of normal state mode. The [[https://github.com/Dewdrops/evil-exchange][evil-exchange]] project attempts to do something similar, but in a VI-way.
|
I often use the Emacs commands, ~M-t~ and whatnot to exchange words and whatnot, but this requires a drop out of normal state mode. The [[https://github.com/Dewdrops/evil-exchange][evil-exchange]] project attempts to do something similar, but in a VI-way.
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package evil-exchange
|
(use-package evil-exchange
|
||||||
|
;; While I normally just use `link-hint', the gx keybinding is used by evil-exchange:
|
||||||
|
:general (:states 'normal "gz" 'browse-url-at-point)
|
||||||
|
|
||||||
:config (evil-exchange-install))
|
:config (evil-exchange-install))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
@ -1054,8 +1046,7 @@ Not sure what is in a register? Have it show you when you hit ~”~ or ~@~ with
|
||||||
(evil-owl-mode))
|
(evil-owl-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*** Evil Snipe
|
*** Evil Snipe
|
||||||
Doom introduced me to [[https://github.com/hlissner/evil-snipe][evil-snipe]] which is similar to =f= and =t=, but does two characters, and can, when configured, search more than the current line. When I use it, I stop and analyze to see the two characters to work on, so I’ve changed from the default, single ~s~, to ~g s~ so as not to get it confused with the =evil-surround=.
|
Doom introduced me to [[https://github.com/hlissner/evil-snipe][evil-snipe]] which is similar to =f= and =t=, but does two characters, and can, when configured, search more than the current line. My issue is that [[Evil Surround]] uses the same keybindings.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package evil-snipe
|
(use-package evil-snipe
|
||||||
:after evil
|
:after evil
|
||||||
|
@ -1063,16 +1054,17 @@ Doom introduced me to [[https://github.com/hlissner/evil-snipe][evil-snipe]] whi
|
||||||
(setq evil-snipe-scope 'visible)
|
(setq evil-snipe-scope 'visible)
|
||||||
|
|
||||||
:general
|
:general
|
||||||
(:states '(normal motion operator visual) :keymaps 'global-mode-map
|
(:states '(normal motion operator visual)
|
||||||
"gs" 'evil-snipe-s
|
"s" 'evil-snipe-s
|
||||||
"gS" 'evil-snipe-S))
|
"S" 'evil-snipe-S)
|
||||||
|
:config
|
||||||
|
(evil-snipe-mode +1)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
It highlights all potential matches, use ~;~ to skip to the next match, and ~,~ to jump back.
|
It highlights all potential matches, use ~;~ to skip to the next match, and ~,~ to jump back.
|
||||||
*** Evil Surround
|
*** Evil Surround
|
||||||
I like both [[https://github.com/emacs-evil/evil-surround][evil-surround]] and Henrik's [[https://github.com/hlissner/evil-snipe][evil-snipe]], however, they both start with ~s~, and conflict, and getting them to work together means I have to remember when does ~s~ call sniper and when calls surround. As an original Emacs person, I am not bound by that key history, but I do need them consistent, so I’m choosing the ~s~ to be /surround/.
|
I like both [[https://github.com/emacs-evil/evil-surround][evil-surround]] and Henrik's [[https://github.com/hlissner/evil-snipe][evil-snipe]], however, they both start with ~s~, and conflict, and getting them to work together means I have to remember when does ~s~ call sniper and when it calls surround. As an original Emacs person, I am not bound by that key history, but I do need them consistent, so I’m choosing the ~s~ to be /surround/.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(use-package evil-surround
|
(use-package evil-surround
|
||||||
:after evil-snipe
|
:after evil-snipe
|
||||||
:config
|
:config
|
||||||
|
@ -1085,16 +1077,32 @@ I like both [[https://github.com/emacs-evil/evil-surround][evil-surround]] and H
|
||||||
(push '(?/ . ("/" . "/")) evil-surround-pairs-alist)
|
(push '(?/ . ("/" . "/")) evil-surround-pairs-alist)
|
||||||
(push '(?= . ("=" . "=")) evil-surround-pairs-alist)
|
(push '(?= . ("=" . "=")) evil-surround-pairs-alist)
|
||||||
(push '(?~ . ("~" . "~")) evil-surround-pairs-alist)
|
(push '(?~ . ("~" . "~")) evil-surround-pairs-alist)
|
||||||
|
|
||||||
|
:general
|
||||||
|
(:states 'operator :keymaps 'evil-surround-mode-map
|
||||||
|
"z" 'evil-surround-edit
|
||||||
|
"Z" 'evil-Surround-edit)
|
||||||
|
|
||||||
:hook (text-mode . evil-surround-mode)) ; Don't globally use it on Magit, et. al
|
:hook (text-mode . evil-surround-mode)) ; Don't globally use it on Magit, et. al
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
Notes:
|
Notes:
|
||||||
- ~cs({~ :: to convert surrounding parens to curly braces.
|
- ~cz'"~ :: to convert surrounding single quote string to double quotes.
|
||||||
- ~ds"~ :: to delete the surrounding *double* quotes.
|
- ~dz"~ :: to delete the surrounding double quotes.
|
||||||
- ~yse"~ :: puts double quotes around the next word… but only if you are at the beginning of the word, otherwise,
|
- ~yze"~ :: puts single quotes around the next word.
|
||||||
- ~ysiw'~ :: puts single quotes around the word, no matter where the point is positioned.
|
- ~yziw'~ :: puts single quotes around the word, no matter where the point is positioned.
|
||||||
- ~yS$<p>~ :: surrouds the line with HTML =<p>= tag (with extra carriage returns).
|
- ~yZ$<p>~ :: surrouds the line with HTML =<p>= tag (with extra carriage returns).
|
||||||
- ~(~ :: puts spaces /inside/ the surrounding parens, but ~)~ doesn't. Same with ~[~ and ~]~.
|
- ~(~ :: puts spaces /inside/ the surrounding parens, but ~)~ doesn't. Same with ~[~ and ~]~.
|
||||||
** Jump with Avy
|
** Additional Global Packages
|
||||||
|
*** Visual Replace with Visual Regular Expressions
|
||||||
|
I really appreciated the [[https://github.com/benma/visual-regexp.el][visual-regexp package]] to see what will be changed /before/ executing the replace.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package visual-regexp
|
||||||
|
:bind (("C-c r" . vr/replace)
|
||||||
|
("C-c q" . vr/query-replace))
|
||||||
|
:general (:states 'normal "gR" '("replace" . vr/replace)))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Jump with Avy
|
||||||
While I grew up on =Control S=, I am liking the /mental model/ associated with the [[https://github.com/abo-abo/avy][avy project]] that allows a /jump/ among matches across all visible windows. I use the ~F18~ key on my keyboard that should be easy to use, but ~g o~ seems obvious.
|
While I grew up on =Control S=, I am liking the /mental model/ associated with the [[https://github.com/abo-abo/avy][avy project]] that allows a /jump/ among matches across all visible windows. I use the ~F18~ key on my keyboard that should be easy to use, but ~g o~ seems obvious.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
@ -1109,13 +1117,15 @@ While I grew up on =Control S=, I am liking the /mental model/ associated with t
|
||||||
:config (ha-leader "j" '("jump" . avy-goto-char-timer))
|
:config (ha-leader "j" '("jump" . avy-goto-char-timer))
|
||||||
|
|
||||||
:general
|
:general
|
||||||
(:states '(normal motion operator visual) :keymaps 'global-mode-map
|
(:states 'normal "go" 'avy-goto-char-timer)
|
||||||
"go" 'avy-goto-char-timer)
|
|
||||||
|
|
||||||
:bind ("<f18>" . avy-goto-char-timer))
|
:bind ("<f18>" . avy-goto-char-timer))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
*Note:* The links should be shorter near the point as opposed to starting from the top of the window.
|
*Note:* The links should be shorter near the point as opposed to starting from the top of the window.
|
||||||
** Link Hint, the Link Jumper
|
|
||||||
|
Just realized that if you hit the following keys /before/ you select a target, you get a special action:
|
||||||
|
- ~n~ :: copies the matching target word
|
||||||
|
*** Link Hint, the Link Jumper
|
||||||
I originally appreciated [[https://github.com/abo-abo/ace-link][ace-link]] to work with hyperlinks on Org, EWW and Info pages, however, the [[https://github.com/noctuid/link-hint.el][link-hint]] project works with more types of links:
|
I originally appreciated [[https://github.com/abo-abo/ace-link][ace-link]] to work with hyperlinks on Org, EWW and Info pages, however, the [[https://github.com/noctuid/link-hint.el][link-hint]] project works with more types of links:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package link-hint
|
(use-package link-hint
|
||||||
|
@ -1124,26 +1134,25 @@ I originally appreciated [[https://github.com/abo-abo/ace-link][ace-link]] to wo
|
||||||
("C-c l o" . link-hint-open-link)
|
("C-c l o" . link-hint-open-link)
|
||||||
("C-c l c" . link-hint-copy-link)
|
("C-c l c" . link-hint-copy-link)
|
||||||
:general
|
:general
|
||||||
|
(:states 'normal
|
||||||
|
"gl" 'link-hint-open-link
|
||||||
|
"gL" 'link-hint-copy-link)
|
||||||
(:states 'normal :keymaps 'eww-mode-map
|
(:states 'normal :keymaps 'eww-mode-map
|
||||||
"o" 'link-hint-open-link)
|
"o" 'link-hint-open-link)
|
||||||
(:states 'normal :keymaps 'Info-mode-map
|
(:states 'normal :keymaps 'Info-mode-map
|
||||||
"o" 'link-hint-open-link)
|
"o" 'link-hint-open-link))
|
||||||
(:states 'normal :keymaps 'global-map
|
|
||||||
"gl" 'link-hint-open-link
|
|
||||||
"gL" 'link-hint-copy-link))
|
|
||||||
|
|
||||||
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Miscellaneous Keys
|
*** Expand Region
|
||||||
I really appreciated the [[https://github.com/benma/visual-regexp.el][visual-regexp package]]:
|
Magnar Sveen's [[https://github.com/magnars/expand-region.el][expand-region]] project allows me to hit ~v~ repeatedly, having the selection grow by syntactical units.
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package visual-regexp
|
(use-package expand-region
|
||||||
:bind (("C-c r" . vr/replace)
|
:bind ("C-=" . er/expand-region)
|
||||||
("C-c q" . vr/query-replace)))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
|
:general
|
||||||
|
;; Use escape to get out of visual mode, but hitting v again expands the selection.
|
||||||
|
(:states 'visual "v" 'er/expand-region))
|
||||||
|
#+END_SRC
|
||||||
* Working Layout
|
* Working Layout
|
||||||
While editing any file on disk is easy enough, I like the mental context switch associated with a full-screen window frame showing all the buffers of a /project task/ (often a direct link to a repository project, but not always).
|
While editing any file on disk is easy enough, I like the mental context switch associated with a full-screen window frame showing all the buffers of a /project task/ (often a direct link to a repository project, but not always).
|
||||||
** Projects
|
** Projects
|
||||||
|
@ -1519,9 +1528,9 @@ Web pages look pretty good with EWW, but I'm having difficulty getting it to ren
|
||||||
"u" 'eww-top-url
|
"u" 'eww-top-url
|
||||||
"p" 'eww-previous-url
|
"p" 'eww-previous-url
|
||||||
"n" 'eww-next-url
|
"n" 'eww-next-url
|
||||||
"q" 'eww-buffer-kill)
|
"q" 'bury-buffer)
|
||||||
(:states 'normal :keymaps 'eww-buffers-mode-map
|
(:states 'normal :keymaps 'eww-buffers-mode-map
|
||||||
"q" 'eww-buffer-kill))
|
"q" 'bury-buffer))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
This function allows Imenu to offer HTML headings in EWW buffers, which is especially helpful for navigating long, technical documents.
|
This function allows Imenu to offer HTML headings in EWW buffers, which is especially helpful for navigating long, technical documents.
|
||||||
|
@ -1562,35 +1571,37 @@ The [[https://github.com/alphapapa/pocket-reader.el][pocket-reader]] project con
|
||||||
|
|
||||||
;; Instead of jumping into Emacs mode to get the `pocket-mode-map',
|
;; Instead of jumping into Emacs mode to get the `pocket-mode-map',
|
||||||
;; we just add the keybindings to the normal mode that makes sense.
|
;; we just add the keybindings to the normal mode that makes sense.
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "RET") 'pocket-reader-open-url)
|
:general
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "TAB") 'pocket-reader-pop-to-url)
|
(:states 'normal :keymaps 'pocket-reader-mode-map
|
||||||
|
"RET" 'pocket-reader-open-url
|
||||||
|
"TAB" 'pocket-reader-pop-to-url
|
||||||
|
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "*") 'pocket-reader-toggle-favorite)
|
"*" 'pocket-reader-toggle-favorite
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "B") 'pocket-reader-open-in-external-browser)
|
"B" 'pocket-reader-open-in-external-browser
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "D") 'pocket-reader-delete)
|
"D" 'pocket-reader-delete
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "E") 'pocket-reader-excerpt-all)
|
"E" 'pocket-reader-excerpt-all
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "F") 'pocket-reader-show-unread-favorites)
|
"F" 'pocket-reader-show-unread-favorites
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "M") 'pocket-reader-mark-all)
|
"M" 'pocket-reader-mark-all
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "R") 'pocket-reader-random-item)
|
"R" 'pocket-reader-random-item
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "S") 'tabulated-list-sort)
|
"S" 'tabulated-list-sort
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "a") 'pocket-reader-toggle-archived)
|
"a" 'pocket-reader-toggle-archived
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "c") 'pocket-reader-copy-url)
|
"c" 'pocket-reader-copy-url
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "d") 'pocket-reader)
|
"d" 'pocket-reader
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "e") 'pocket-reader-excerpt)
|
"e" 'pocket-reader-excerpt
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "f") 'pocket-reader-toggle-favorite)
|
"f" 'pocket-reader-toggle-favorite
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "l") 'pocket-reader-limit)
|
"l" 'pocket-reader-limit
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "m") 'pocket-reader-toggle-mark)
|
"m" 'pocket-reader-toggle-mark
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "o") 'pocket-reader-more)
|
"o" 'pocket-reader-more
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "q") 'quit-window)
|
"q" 'quit-window
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "s") 'pocket-reader-search)
|
"s" 'pocket-reader-search
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "u") 'pocket-reader-unmark-all)
|
"u" 'pocket-reader-unmark-all
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "t a") 'pocket-reader-add-tags)
|
"t a" 'pocket-reader-add-tags
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "t r") 'pocket-reader-remove-tags)
|
"t r" 'pocket-reader-remove-tags
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "t s") 'pocket-reader-tag-search)
|
"t s" 'pocket-reader-tag-search
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "t t") 'pocket-reader-set-tags)
|
"t t" 'pocket-reader-set-tags
|
||||||
|
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "g s") 'pocket-reader-resort)
|
"g s" 'pocket-reader-resort
|
||||||
(evil-define-key 'normal pocket-reader-mode-map (kbd "g r") 'pocket-reader-refresh))
|
"g r" 'pocket-reader-refresh))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Use these special keywords when searching:
|
Use these special keywords when searching:
|
||||||
|
@ -1605,14 +1616,12 @@ Use these special keywords when searching:
|
||||||
I primarily use [[https://github.com/jaypei/emacs-neotree][Neotree]] when I am screen-sharing my Emacs session with collegues as it shows a /project/ like an IDE.
|
I primarily use [[https://github.com/jaypei/emacs-neotree][Neotree]] when I am screen-sharing my Emacs session with collegues as it shows a /project/ like an IDE.
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package neotree
|
(use-package neotree
|
||||||
;; :bind (:neotree-mode-map ; Let evil-collection do its thing
|
:general ; evil-collection forgot a couple:
|
||||||
;; ("j" . 'neotree-next-line)
|
(:states 'normal :keymaps 'neotree-mode-map
|
||||||
;; ("k" . 'neotree-previous-line))
|
"TAB" 'neotree-enter
|
||||||
:config ; evil-collection forget a couple:
|
"SPC" 'neotree-quick-look
|
||||||
(evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter)
|
"RET" 'neotree-enter
|
||||||
(evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-quick-look)
|
"H" 'neotree-hidden-file-toggle))
|
||||||
(evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
|
|
||||||
(evil-define-key 'normal neotree-mode-map (kbd "H") 'neotree-hidden-file-toggle))
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
** Annotations
|
** Annotations
|
||||||
Let's try [[https://github.com/bastibe/annotate.el][annotate-mode]], which allows you to drop "notes" and then move to them (yes, serious overlap with bookmarks, which we will return to).
|
Let's try [[https://github.com/bastibe/annotate.el][annotate-mode]], which allows you to drop "notes" and then move to them (yes, serious overlap with bookmarks, which we will return to).
|
||||||
|
|
|
@ -39,27 +39,29 @@ While I would like to share the /status/ of my reads, so ...
|
||||||
(use-package elfeed
|
(use-package elfeed
|
||||||
:config
|
:config
|
||||||
(setq elfeed-db-directory "~/dropbox/.elfeed/")
|
(setq elfeed-db-directory "~/dropbox/.elfeed/")
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "b") 'elfeed-show-visit)
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "n") 'elfeed-show-next)
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "p") 'elfeed-show-prev)
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "y") 'elfeed-show-yank)
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "q") 'evil-delete-buffer)
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "Q") 'delete-window)
|
|
||||||
(evil-define-key 'normal elfeed-search-mode-map (kbd "r") 'ha-elfeed-tag-unread)
|
|
||||||
(evil-define-key 'normal elfeed-search-mode-map (kbd "R") 'elfeed-search-update--force)
|
|
||||||
(evil-define-key 'normal elfeed-search-mode-map (kbd "u") 'elfeed-update)
|
|
||||||
(evil-define-key 'normal elfeed-search-mode-map (kbd "U") 'elfeed-unjam)
|
|
||||||
|
|
||||||
;; This is why this package depends on link-hint:
|
|
||||||
(evil-define-key 'normal elfeed-show-mode-map (kbd "o") 'link-hint-open-link)
|
|
||||||
|
|
||||||
;; And let's make the Space pull of my general leader:
|
;; And let's make the Space pull of my general leader:
|
||||||
(general-unbind elfeed-show-mode-map "SPC")
|
(general-unbind elfeed-show-mode-map "SPC")
|
||||||
(general-unbind elfeed-search-mode-map "SPC")
|
(general-unbind elfeed-search-mode-map "SPC")
|
||||||
|
|
||||||
|
:general
|
||||||
|
(:states 'normal :keymaps 'elfeed-show-mode-map
|
||||||
|
"b" 'elfeed-show-visit
|
||||||
|
"n" 'elfeed-show-next
|
||||||
|
"p" 'elfeed-show-prev
|
||||||
|
"y" 'elfeed-show-yank
|
||||||
|
"q" 'evil-delete-buffer
|
||||||
|
"o" 'link-hint-open-link ; This is why this package depends on link-hint:
|
||||||
|
"Q" 'delete-window)
|
||||||
|
(:states 'normal :keymaps 'elfeed-search-mode-map
|
||||||
|
"r" 'ha-elfeed-tag-unread
|
||||||
|
"R" 'elfeed-search-update--force
|
||||||
|
"u" 'elfeed-update
|
||||||
|
"U" 'elfeed-unjam))
|
||||||
|
|
||||||
(use-package elfeed-org
|
(use-package elfeed-org
|
||||||
:config
|
:after elfeed
|
||||||
(elfeed-org)))
|
:config (elfeed-org))
|
||||||
|
|
||||||
(defun ha-elfeed-tag-unread ()
|
(defun ha-elfeed-tag-unread ()
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
14
ha-org.org
14
ha-org.org
|
@ -551,6 +551,10 @@ Let's hook some spell-checking into org files, and actually all text files. We'l
|
||||||
(use-package flyspell
|
(use-package flyspell
|
||||||
:hook (text-mode . flyspell-mode)
|
:hook (text-mode . flyspell-mode)
|
||||||
:bind ("M-S" . ha-fix-last-spelling)
|
:bind ("M-S" . ha-fix-last-spelling)
|
||||||
|
|
||||||
|
:general
|
||||||
|
(:states 'insert :keymaps 'text-mode-map
|
||||||
|
"M-s M-s" 'ha-fix-last-spelling)
|
||||||
:init
|
:init
|
||||||
;; Tell ispell.el that ’ can be part of a word.
|
;; Tell ispell.el that ’ can be part of a word.
|
||||||
(setq ispell-local-dictionary-alist
|
(setq ispell-local-dictionary-alist
|
||||||
|
@ -565,8 +569,6 @@ Let's hook some spell-checking into org files, and actually all text files. We'l
|
||||||
(evil-prev-flyspell-error count)
|
(evil-prev-flyspell-error count)
|
||||||
(ispell-word)))
|
(ispell-word)))
|
||||||
|
|
||||||
(evil-define-key 'insert text-mode-map (kbd "M-s M-s") 'ha-fix-last-spelling)
|
|
||||||
|
|
||||||
(ha-local-leader :keymaps 'text-mode-map
|
(ha-local-leader :keymaps 'text-mode-map
|
||||||
"s" '(:ignore t :which-key "spellcheck")
|
"s" '(:ignore t :which-key "spellcheck")
|
||||||
"s s" '("correct last misspell" . ha-fix-last-spelling)
|
"s s" '("correct last misspell" . ha-fix-last-spelling)
|
||||||
|
@ -749,10 +751,12 @@ Trying out [[https://protesilaos.com/][Protesilaos Stavrou]]’s [[https://prote
|
||||||
logos-olivetti t)
|
logos-olivetti t)
|
||||||
:config
|
:config
|
||||||
(ha-leader "t L" '("logos" . logos-focus-mode))
|
(ha-leader "t L" '("logos" . logos-focus-mode))
|
||||||
(let ((map global-map))
|
|
||||||
(define-key global-map [remap narrow-to-region] #'logos-narrow-dwim)
|
(define-key global-map [remap narrow-to-region] #'logos-narrow-dwim)
|
||||||
(evil-define-key 'normal map (kbd "g [") 'logos-backward-page-dwim)
|
|
||||||
(evil-define-key 'normal map (kbd "g ]") 'logos-forward-page-dwim)))
|
:general
|
||||||
|
(:states 'normal
|
||||||
|
"g [" 'logos-backward-page-dwim
|
||||||
|
"g ]" 'logos-forward-page-dwim))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
* Technical Artifacts :noexport:
|
* Technical Artifacts :noexport:
|
||||||
Let's provide a name, to allow =require= to work:
|
Let's provide a name, to allow =require= to work:
|
||||||
|
|
|
@ -100,8 +100,7 @@ I’ve used the [[http://kapeli.com/][Dash]] API Documentation browser (an exter
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
(use-package dash-at-point
|
(use-package dash-at-point
|
||||||
:commands (dash-at-point)
|
:commands (dash-at-point)
|
||||||
:config
|
:general (:states 'normal "gD" 'dash-at-point))
|
||||||
(define-key evil-normal-state-map (kbd "g D") 'dash-at-point))
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
However, I’m interested in using [[https://devdocs.io/][devdocs]] instead, which is similar, but keeps it all /inside/ Emacs (and works on my Linux system). There are seems to be two competing Emacs projects for this.
|
However, I’m interested in using [[https://devdocs.io/][devdocs]] instead, which is similar, but keeps it all /inside/ Emacs (and works on my Linux system). There are seems to be two competing Emacs projects for this.
|
||||||
|
|
||||||
|
@ -110,9 +109,9 @@ The Emacs [[https://github.com/astoff/devdocs.el][devdocs]] project is active, a
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package devdocs
|
(use-package devdocs
|
||||||
:after evil
|
:after evil
|
||||||
:config
|
:general (:states 'normal "gD" 'devdocs-lookup)
|
||||||
(define-key evil-normal-state-map (kbd "g D") 'devdocs-lookup)
|
|
||||||
|
|
||||||
|
:config
|
||||||
(ha-prog-leader
|
(ha-prog-leader
|
||||||
"d" '(:ignore t :which-key "docs")
|
"d" '(:ignore t :which-key "docs")
|
||||||
"d d" '("open" . devdocs-lookup)
|
"d d" '("open" . devdocs-lookup)
|
||||||
|
@ -127,9 +126,9 @@ The [[https://github.com/blahgeek/emacs-devdocs-browser][devdocs-browser]] proje
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
(use-package devdocs-browser
|
(use-package devdocs-browser
|
||||||
:config
|
:general (:states 'normal "gD" 'devdocs-browser-open)
|
||||||
(define-key evil-normal-state-map (kbd "g D") 'devdocs-browser-open)
|
|
||||||
|
|
||||||
|
:config
|
||||||
(ha-prog-leader
|
(ha-prog-leader
|
||||||
"d" '(:ignore t :which-key "docs")
|
"d" '(:ignore t :which-key "docs")
|
||||||
"d d" '("open" . devdocs-browser-open)
|
"d d" '("open" . devdocs-browser-open)
|
||||||
|
|
Loading…
Reference in a new issue