├── images
├── master.png
├── concepts.png
├── packages.png
├── keybindings.png
└── master-buffer.png
├── LICENSE
├── README.md
└── learning-spiral-hydras.el
/images/master.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MooersLab/emacs-learning-spiral-hydra/main/images/master.png
--------------------------------------------------------------------------------
/images/concepts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MooersLab/emacs-learning-spiral-hydra/main/images/concepts.png
--------------------------------------------------------------------------------
/images/packages.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MooersLab/emacs-learning-spiral-hydra/main/images/packages.png
--------------------------------------------------------------------------------
/images/keybindings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MooersLab/emacs-learning-spiral-hydra/main/images/keybindings.png
--------------------------------------------------------------------------------
/images/master-buffer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MooersLab/emacs-learning-spiral-hydra/main/images/master-buffer.png
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Blaine Mooers and the OU Board of Regents
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | [](https://opensource.org/licenses/MIT)
3 |
4 |
5 | # Lazy mastery of Emacs with Hydras
6 |
7 | ## Brief introduction for the impatient
8 | The above `learning-spiral-hydras.el` file supports a lazy approach to mastering key bindings (keyboard shortcuts) in the core of GNU Emacs.
9 | The commands you try to master are listed in multi-part pop-up menus.
10 | I could have mapped these commands to the functions that they represent, but I did not do so to force the manual entry of the key bindings.
11 | This is a learning aid, not a crutch.
12 |
13 | The parent pop-up menu is invoked by entering `C-c 1` from any buffer.
14 | Navigate to the child menus by clicking on the blue colored letter.
15 | Each child menu is a separate Hydra.
16 | Feel free to break these Hydras into standalone Hydras.
17 |
18 | Menus (Hydras) specific to particular major modes and packages are under development as separate Hydras to minimize the nesting of Hydras.
19 | One child menu exists for LaTeX-mode.
20 |
21 | The file is easily edited for customization to meet your needs.
22 | I expect it to be used as a template.
23 | If you are a beginning Emacs user, you can use these lists to jump-start your use of Emacs.
24 |
25 | The code blocks and snapshots below show the individual hydras.
26 | The lists of keybindings in these hydras are abbreviated to save space.
27 | The `learning-spiral-hydras.el` contains my current GNU Emacs core hydras, which are more numerous than those in the lists shown below.
28 |
29 | Of course, you can access similar information by using the built-in info system.
30 | However, beginners need help with this extensive system.
31 | The above may Hydras help beginners jump-start using the keybindings, including those that access the info system.
32 |
33 | ## Longer introduction for the curious
34 | [Hydras](https://github.com/abo-abo/hydra) are popup menus in Emacs--the ultimate text editor that is ``hard to learn but easy to use''.
35 | Hydras demonstrate the highly configurable nature of Emacs.
36 | These pop-up menus are called Hydras because one Hydra popup menu can be used to call many other Hydra popup menus.
37 | However, only one Hydra is displayed at a time.
38 |
39 | I use a **Hydras of Hydras** as a port of entry to all my Hydras.
40 | There is no limit to how deeply the Hydras can be nested.
41 | Because of this feature, the analogy with the mythological beast breaks down to the disappointment of those who know their Greek mythology.
42 |
43 | Hydras are often associated with a specific Emacs package to ease the use of the functions in that package.
44 | They provide shortcuts in single or multiple letters that can be entered on the keyboard or clicked on with the cursor to invoke the associated function.
45 | In addition to running elisp functions inside Emacs, Hydras can open external applications from inside Emacs, open specific files for editing or reading, and open specific web pages in your default browser.
46 | The latter two features can be done using the bookmarks package built into Emacs's core.
47 | The blue-colored letters in the snapshot of the Hydra below are mapped to commands invoked by clicking the letter(s) with the cursor.
48 | Hydras are used to evade learning the corresponding key bindings.
49 |
50 |

51 |
52 | Here, we take the opposite approach!
53 | We use Hydras's pop-up menu to quickly access a list of Emacs keybindings for which we are trying to build muscle memory.
54 | We are trying to build up muscle memory of the key bindings so that we do not have to recall them when we need to use them.
55 | We open the pop-up menu by entering `C-c 1`.
56 | We can close the Hydra by clicking on it, the **q** button, or entering **q** on the keyboard.
57 |
58 | The lazy way of using this list is to invoke it at the start of a work session in Emacs.
59 | We can scan the list as a quick reminder of the keybindings we are trying to master.
60 | A more robust approach would be to set aside several minutes to enter each keybinding we are trying to master five or ten times on the keyboard to build muscle memory.
61 | You would unlikely have time to review the complete list, but this approach is practical when working with 5 to 10 new keybindings daily.
62 | The goal is to build the muscle memory of the key bindings on this list.
63 |
64 | After the keybinding is internalized, you can move it to the list of mastered keybindings in another hydra that lists the keybindings you think you have mastered.
65 | The list of mastered key bindings can be reviewed occasionally to ensure you have mastered them.
66 | You invoke this second Hydra by clicking the `km` button: `km` represents `keybindings mastered`.
67 |
68 | You can use the Hydras in the above `learning-spiral-hydra.el` file as templates to make additional Hydras.
69 | For example, you might want a Hydra specific to a particular package or major mode with a long list of key bindings you are trying to master.
70 | These related key bindings could be stored in a separate Hydra to reduce the clutter of the master Hydra.
71 |
72 | There is a limit to how many key bindings you can display in a Hydra.
73 | The font size and the height of your computer screen impose the limit.
74 | You can only zoom out so far before the font grows too tiny to see.
75 |
76 | You can display the keybindings in multiple columns.
77 | I have yet to master setting up multiple columns in an easy way, so I tend to avoid this tactic.
78 | I find it easier to create a second Hydra when there are overflow key bindings.
79 | Just click on `n` to advance to the next section of the list of keybindings.
80 |
81 | ## History
82 | The Hydras in the above file were inspired by a recent Austin Emacs Meetup discussion where Ag mentioned maintaining a list of keybindings that he was trying to master.
83 | I think he was using an org file to store this list.
84 | I am reducing the friction further by negating the need to navigate to such a file.
85 | You do not have to remember the name or location of that org file.
86 | This can be a problem if there has been a long break from viewing this file.
87 | Just enter `C-c 1` from any buffer to display the master learning spiral Hydra.
88 | The use of the master Hydra has a lower energy barrier than navigating to a text file.
89 |
90 |
91 | ## Related repositories
92 | ### Emacs quizzes
93 | A more active means of mastering the keybindings is to take [quizzes](https://github.com/MooersLab/qemacs) about them.
94 | The above PDFs of quiz questions can be printed, and the quiz can be taken when away from the computer.
95 | These quizzes can be taken when you have time to kill, such as standing in the airport boarding line, commuting on public transit, or waiting for a seminar to start.
96 |
97 |
103 |
104 | ### Related Desktop Wallpaper
105 |
106 | I made a desktop [wallpaper of common Emacs keybindings](https://codeberg.org/MooersLab/EmacsWallPaper).
107 | Sometimes this is useful to quickly discover what keybindings you have not mastered in Emacs.
108 | It is a more passive and lazier approach.
109 | It might be helpful for some beginners.
110 | You can use it as a template to create your own.
111 |
112 |
113 | ## Installation
114 |
115 | Install where you see fit.
116 | My emacs directory (i.e., `~/emacs29`) is not a hidden folder, unlike what is recommended.
117 | I store my Hydras in a subfolder called `my-hydras` (i.e., `~/emacs29/my-hydras`).
118 |
119 |
120 | ```elisp
121 | git clone https://github.com/MooersLab/emacs-learning-spiral-hydra.git
122 | ```
123 |
124 | ### Requirements
125 |
126 | Requires the `hydra` package from MELPA.
127 | I also use the `pretty-hydra` package.
128 | I use version 30.0.5 of GNU Emacs on an Intel Mac.
129 | It should work with version 29 of GNU Emacs and perhaps earlier versions of Emacs.
130 |
131 |
132 | ### Configuration
133 |
134 | The configuration below is for the users of the `use-package` package system for managing Emacs packages.
135 |
136 | - Customize the file path. I store the file `learning-spiral-hydra.el` inside of the folder `~/emacs29/my-hydras/`. I do not use hidden files to store my Emacs configuration.
137 | - Customize the keybinding below if it conflicts. Check by entering `C-h k C-c 1`, where `C` stands for the Control key and the `-` means press the Control key with the second key simultaneously.
138 | - Customize the content of each Hydra to meet your learning objectives.
139 | - Add the following lines to your init.el file. The file my-hydra.el is a master Hydra for calling other Hydras. You do not need it if you only use the emacs-learning-spiral Hydra.
140 |
141 | ```elisp
142 | (use-package learning-spiral-hydras
143 | :load-path "~/emacs29/my-hydras/")
144 | (global-set-key (kbd "C-c 1") 'hydra-of-learning-spiral/body)
145 |
146 | ;;;## reload-init
147 | ;; Inspried https://sachachua.com/dotemacs/index.html#org4dd39d0
148 | (defun reload-init ()
149 | "Reload my init.el file. Edit the path to suite your needs."
150 | (interactive)
151 | (load-file "~/emacs29/init.el"))
152 |
153 | ;;;## reload-hydras
154 | (defun reload-hydras ()
155 | "Reload my-hydras.el. Edit the path to suite your needs."
156 | (interactive)
157 | (load-file "~/emacs29/my-hydras/my-hydras.el"))
158 |
159 | ;;;## reload-learning-spiral-hydras
160 | (defun reload-learning-spiral-hydras ()
161 | "Reload learning-spiral-hydras.el. Edit the path to suite your needs."
162 | (interactive)
163 | (load-file "~/emacs29/my-hydras/learning-spiral-hydras.el"))
164 | ```
165 |
166 | #### Caveats
167 | You may have to delete the following line from each Hydra if you lack a master **hydra-of-hydras**.
168 |
169 | ```elisp
170 | ("z" hydra-of-hydras/body :color blue)
171 | ```
172 |
173 | # Learning spiral hydra
174 | Below is a literate programming document.
175 | It was generated using the `elispdoc` package found [here](https://github.com/benleis1/elispdoc).
176 | This document has been extensively edited subsequently.
177 |
178 | This is a nested set of Hydras.
179 | The Hydra at the bottom is the master Hydra: **hydra-of-learning-spiral**.
180 | It has commands for calling the other Hydras above it.
181 |
182 | ## hydra-of-learning-spiral-concepts-mastered
183 |
184 | 
185 |
186 |
187 | This hydra is a to-do list of skills that I am trying to master.
188 | ```elisp
189 | (defhydra hydra-of-learning-spiral-concepts-mastered (:hint nil)
190 | "
191 | ^Concepts and skills trying to master
192 | -----------------------------------------------------------------------------
193 | LaTeX workflow in Emacs
194 | Voice control in Emacs
195 | Snippets of code blocks in org-mode.
196 |
197 | ^----------------------------------------------------------------------------
198 | _km_ learning spral: keybindings mastered
199 | _p_ learning sprial: packages trying to master
200 |
201 | _ls_ Return to learning spiral
202 | _z_ Return to parent hdyra-of-hydras
203 | _q_ quit
204 | ^----------------------------------------------------------------------------
205 | "
206 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
207 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
208 | ("ls" hydra-of-learning-spiral/body :color blue)
209 | ("z" hydra-of-hydras/body :color blue)
210 | ("q" nil :color blue))
211 | ```
212 |
213 |
214 | ## hydra-of-learning-spiral-keybindings-mastered
215 |
216 | 
217 |
218 | This hydra in a list of keybindings that I thought I had mastered.
219 | I list these as a reality check and as a reminder after long gaps in the use of these keybindings.
220 |
221 | ```elisp
222 | (defhydra hydra-of-learning-spiral-keybindings-mastered (:hint nil)
223 | "
224 | ^Keybindings and commands mastered
225 | ------------------------------------------------------------------------------
226 | C-x C-c Quit Emacs
227 | C-g Abort command entry
228 | C-x C-s Save file
229 | C-x C-w Write file
230 | C-x C-f Open a file
231 | C-x d Open dired
232 | C-x C-e Run elisp sexp
233 | C-c C-e Export org-mode to another format
234 | C-c C-a Compile to PDF when in latex-mode or auctex-mode
235 | C-1 Close buffer
236 | C-x 1 Display only one buffer
237 | C-c 0 Display hydra-of-hydras
238 | C-y Paste
239 | C-w Cut
240 | M-w Copy
241 | C-c 0 Display master hydra
242 | C-c 1 Display learning spiral hdyra
243 |
244 | M-x eval-buffer
245 | M-x reload-hdyra
246 |
247 | ^------------------------------------------------------------------------------
248 |
249 | _c_ learning spiral: concepts trying to master
250 | _p_ learning sprial: packages trying to master
251 |
252 | _ls_ Return to learning spiral
253 | _z_ Return to parent hdyra-of-hydras
254 | _q_ quit
255 | ^------------------------------------------------------------------------------
256 | "
257 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
258 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
259 |
260 | ("ls" hydra-of-learning-spiral/body :color blue)
261 | ("z" hydra-of-hydras/body :color blue)
262 | ("q" nil :color blue))
263 | ```
264 |
265 |
266 | ## hydra-of-learning-spiral-packages-mastered
267 |
268 | 
269 |
270 | ```elisp
271 | (defhydra hydra-of-learning-spiral-packages-mastered (:hint nil)
272 | "
273 | ^Packages trying to master
274 | ^------------------------------------------------------------------------------
275 |
276 | auctex
277 | latex-mode
278 | lsp-grammarly
279 | copilot
280 |
281 | ^------------------------------------------------------------------------------
282 |
283 | _km_ learning spiral: keybindings mastered
284 | _c_ learning spiral: concepts trying to master
285 |
286 | _ls_ Return to learning spiral
287 | _z_ Return to parent hdyra-of-hydras
288 | _q_ quit
289 | ^------------------------------------------------------------------------------
290 | "
291 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
292 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
293 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
294 |
295 | ("ls" hydra-of-learning-spiral/body :color blue)
296 | ("z" hydra-of-hydras/body :color blue)
297 | ("q" nil :color blue))
298 | ```
299 |
300 |
301 | ## hydra-of-learning-spiral
302 | This is the master hydra that lists the commands that I am trying to master.
303 | This Hydra also calls several child Hydras that list the following:
304 |
305 | - the keybindings that I think I have mastered
306 | - the concepts that I am trying to master
307 | - the packages that I am trying to master
308 |
309 | The current version of the list of keybindings to master spans multiple Hydras.
310 | There is a blue-colored letter **n** that you click on to advance to the next hydra in the series.
311 |
312 | ```elisp
313 | (defhydra hydra-of-learning-spiral (:hint nil)
314 | "
315 | ^Commands trying to master
316 | --------------------------------------------------------------------------------------------
317 | C-c = Use in auctex-mode to display the TOC of the document in a separate buffer.
318 | C-c d Display pop-up with info about text file, including the word count.
319 | C-h l Display list of the last commands executed.
320 | s-, Open the customize buffer.
321 | C-[scrollwheel-up] Zoom text in.
322 | C-[scrollwheel-down] Zoom text out.
323 |
324 | M-x delete-trailing-whitespace
325 | M-x lsp
326 | M-x query-replace M-percent sign
327 | M-x elispdoc-process-elisp-to-doc-buffer
328 |
329 |
330 | ^-------------------------------------------------------------------------------------------
331 |
332 | _km_ learning spiral: keybindings mastered
333 | _c_ learning spiral: concepts trying to master
334 | _p_ learning spiral: packages trying to master
335 | _he_ edit /emacs29/my-hydras/my-hydras.el
336 | _i_ edit init.el
337 | _ri_ reload init.el
338 | _rh_ reload hydras
339 | _z_ Return to parent hdyra-of-hydras
340 | _q_ quit
341 | ^------------------------------------------------------------------------------
342 | "
343 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
344 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
345 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
346 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
347 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
348 | ("ri" (reload-init) :color blue)
349 | ("rh" (reload-hydras) :color blue)
350 | ("z" hydra-of-hydras/body :color blue)
351 | ("q" nil :color blue))
352 | ```
353 |
354 | ## Funding sources
355 | - NIH: R01 CA242845, R01 AI088011
356 | - NIH: P30 CA225520 (PI: R. Mannel);
357 | - NIH: P20GM103640 and P30GM145423 (PI: A. West)
358 |
359 | ## Update history
360 |
361 | |Version | Changes | Date |
362 | |:--------------|:----------------------------------------------------------------------------------------------------------------------|:--------------------|
363 | | Version 0.6 | Added the funding sources and this update table to README.md. Fixed typos in README.md | 2024 April 16 |
364 | | Version 0.6.1 | Fixed the alignment of this table. Further edits of the README.md to improve the grammar. | 2024 September 7 |
365 |
366 |
367 |
368 |
369 |
370 | > The first draft of this file was auto-generated by [elispdoc.el](https://github.com/benleis1/elispdoc)
371 |
--------------------------------------------------------------------------------
/learning-spiral-hydras.el:
--------------------------------------------------------------------------------
1 | ;;; Learning Spiral Hydras
2 | ;;
3 | ;; These hydras are meant to be an in-line memory aid.
4 | ;; The master learning spiral hydra is invoked with C-c l s
5 | ;; It is meant to support the gradual mastery of Emacs.
6 | ;;
7 | ;; This is a nested set of hydras.
8 | ;; The hydra at the bottom is the master hydra: hydra-of-learning-spiral.
9 |
10 | ;; This hydra in a to-do list of skills that I am trying to master.
11 |
12 | ;;;# hydra-of-learning-spiral-concepts-mastered
13 |
14 | (defhydra hydra-of-learning-spiral-concepts-mastered (:hint nil)
15 | "
16 | ^Concepts and skills trying to master
17 | ^-----------------------------------------------------------------------------
18 | bookmarks
19 | LaTeX workflow in Emacs
20 | lfortran in code-blocks via jupyter org-babel language
21 | macros
22 | reading email in Emacs
23 | regex Emacs style
24 | Voice computing in Emacs
25 |
26 | ^----------------------------------------------------------------------------
27 | _km_ learning spiral: keybindings mastered
28 | _p_ learning spiral: packages trying to master
29 | _s_ Return to learning spiral
30 | _ri_ reload init.el
31 | _rh_ reload my-hydras
32 | _rl_ reload learning-spiral-hydras
33 | _zz_ Return to parent hdyra-of-hydras
34 | _q_ quit
35 | ^----------------------------------------------------------------------------
36 | "
37 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
38 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
39 | ("s" hydra-of-learning-spiral/body :color blue)
40 | ("ri" (reload-init) :color blue)
41 | ("rh" (reload-hydras) :color blue)
42 | ("rl" (reload-learning-spiral-hydras) :color blue)
43 | ("zz" hydra-of-hydras/body :color blue)
44 | ("q" nil :color blue))
45 |
46 |
47 | ;;;# hydra-of-learning-spiral-keybindings-mastered
48 | ;; This hydra in a list of keybindings I thought I had mastered.
49 | ;; I list these as a reality check and as a reminder after long gaps
50 | ;; in use of these keybindings.
51 |
52 |
53 | (defhydra hydra-of-learning-spiral-keybindings-mastered (:hint nil)
54 | "
55 | ^Keybindings and commands mastered
56 | ^------------------------------------------------------------------------------
57 | C-x C-c Quit Emacs.
58 | C-g Abort command entry.
59 | C-x C-s Save buffer to a file.
60 | C-x C-w Write buffer to the specified file.
61 | C-x C-f Open a file.
62 | C-x d Open dired.
63 | C-x C-e Run elisp sequential expression (sexp).
64 | C-x u Undo.
65 | C-c C-e Export org-mode to another format.
66 | C-c C-a Compile to PDF when in latex-mode or auctex-mode.
67 | C-1 Close buffer.
68 | C-x 1 Display only one buffer.
69 | C-c 0 Display hydra-of-hydras.
70 | C-c 1 Display learning spiral hydra.
71 | C-y Paste.
72 | C-w Cut or kill selection.
73 | M-w Copy selection to kill ring (clipboard) but do not kill.
74 | s-c Copy.
75 | C-o Insert a yasnippet snippet.
76 | C-c 0 Open my-hydras.el
77 | C-space Set mark for a selection.
78 | C-k Kill a line or region.
79 | C-a Move to the beginning of line.
80 | C-e Move to the end of line.
81 | C-s Search forward.
82 | C-r Search backward.
83 |
84 |
85 | M-x eval-buffer
86 | M-x reload-hydra (reload my-hydras)
87 |
88 | ^------------------------------------------------------------------------------
89 | _c_ learning spiral: concepts trying to master
90 | _p_ learning spiral: packages trying to master
91 | _l_ edit learning-spiral-hydras.el
92 | _s_ Return to learning spiral
93 | _ri_ reload init.el
94 | _rh_ reload my-hydras
95 | _rl_ reload learning-spiral-hydras
96 | _zz_ Return to parent hdyra-of-hydras
97 | _q_ quit
98 | ^------------------------------------------------------------------------------
99 | "
100 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
101 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
102 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
103 | ("s" hydra-of-learning-spiral/body :color blue)
104 | ("ri" (reload-init) :color blue)
105 | ("rh" (reload-hydras) :color blue)
106 | ("rl" (reload-learning-spiral-hydras) :color blue)
107 | ("zz" hydra-of-hydras/body :color blue)
108 | ("q" nil :color blue))
109 |
110 |
111 | ;;;# hydra-of-learning-spiral-packages-mastered
112 | (defhydra hydra-of-learning-spiral-packages-mastered (:hint nil)
113 | "
114 | ^Packages trying to master
115 | ^------------------------------------------------------------------------------
116 | bookmarks+
117 | cider
118 | copilot
119 | dired
120 | diredx
121 | hyperbole
122 | isceles
123 | lsp-ltex
124 | lsp-grammarly
125 | LaTeX-mode
126 | magit
127 | org-agenda
128 | org-babel code blocks
129 | org-roam
130 | treesitter
131 | advanced features of yasnippets
132 | zetteldesk
133 | ^------------------------------------------------------------------------------
134 | _a_ learning spiral: auctex and latex
135 | _km_ learning spiral: keybindings mastered
136 | _c_ learning spiral: concepts trying to master
137 | _l_ edit learning-spiral-hydras.el
138 | _s_ Return to learning spiral
139 | _ri_ reload init.el
140 | _rh_ reload my-hydras
141 | _rl_ reload learning-spiral-hydras
142 | _zz_ Return to parent hdyra-of-hydras
143 | _q_ quit
144 | ^------------------------------------------------------------------------------
145 | "
146 | ("a" hydra-of-learning-spiral-latex/body :color blue)
147 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
148 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
149 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
150 | ("s" hydra-of-learning-spiral/body :color blue)
151 | ("ri" (reload-init) :color blue)
152 | ("rh" (reload-hydras) :color blue)
153 | ("rl" (reload-learning-spiral-hydras) :color blue)
154 | ("zz" hydra-of-hydras/body :color blue)
155 | ("q" nil :color blue))
156 |
157 |
158 | ;;;# hydra-of-learning-spiral-latex
159 | (defhydra hydra-of-learning-spiral-latex (:hint nil)
160 | "
161 | ^Commands trying to master
162 | ^----------------------------------------------------------------------------------------
163 | C-h m Show information on the current major mode.
164 | C-c C-h Shows all bindings that start with C-c.
165 | C-h b Shows all bindings currently available.
166 |
167 | C-c C-s Insert sections and subsections. Will be prompted for title and label.
168 | C-c C-e Insert environments.
169 | C-c ] Close environment.
170 | C-u C-c C-e Change the type of the current innermost environment.
171 |
172 | C-c . Mark the current environment.
173 | C-c * Mark the current section/subsection.
174 | C-c ] Close current environment.
175 | C-M-a Find matching begin environment.
176 | C-M-e Find matching end environment.
177 | C-c C-m Insert macro.
178 |
179 | C-c C-f C-e Add a emph and place the cursor between the braces. Wrap a selection.
180 | C-c C-f C-b Ditto with textbf.
181 | C-c C-f C-c Ditto with textsc.
182 | C-c C-f C-i Ditto with textit.
183 | C-c C-f C-t Ditto with texttt.
184 | C-c C-f ? Give you a list of all possibilities.
185 |
186 | C-x n n Recursive narrowing, toggle on and off.
187 | C-c C-a Compile file into a PDF.
188 | C-c C-c Do the most appropriate compilation activity.\
189 | C-c C-r Do appropriate compilation activity to the region pinned by C-c C-t C-r
190 | C-c C-v View document.
191 |
192 | C-c C-j Add an item to a list.
193 | C-c percent sign Comment or uncomment a paragraph.
194 | C-c ; Comment or uncomment a region.
195 | C-c * Mark a section.
196 | C-c C-o C-b Toggle folding.
197 |
198 | C-c Open list of suffixes for C-c
199 | C-c ? Find documentation.
200 | C-c TAB Open the AucTeX manual.
201 | C-c o Start pomodoro.
202 | C-c y Open yasnippet hydra.
203 |
204 | C-c ( Add a label. Autosuggesions based on section.
205 | C-c ) Add a ref. Select from a list of labels.
206 | C-c [ Insert citation.
207 | C-c = RET Go to section and hide TOC buffer.
208 | C-c = SPC Go to section and do not hide TOC buffer.
209 | < Increase the level.
210 | > Reduce the level.
211 | ^----------------------------------------------------------------------------------------
212 | _km_ learning spiral: keybindings mastered
213 | _c_ learning spiral: concepts trying to master
214 | _p_ learning spiral: packages trying to master
215 | _he_ edit /emacs29/my-hydras/my-hydras.el
216 | _i_ edit init.el
217 | _ri_ reload init.el
218 | _zl_ Return to main learning spiral hydra.
219 | _zz_ Return to parent hdyra-of-hydras
220 | _q_ quit
221 | ^------------------------------------------------------------------------------
222 | "
223 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
224 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
225 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
226 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
227 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
228 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
229 | ("ri" (reload-init) :color blue)
230 | ("rl" (reload-learning-spiral-hydras) :color blue)
231 | ("zl" hydra-of-learning-spiral/body :color blue)
232 | ("zz" hydra-of-hydras/body :color blue)
233 | ("q" nil :color blue))
234 |
235 |
236 | ;;;# hydra-of-learning-spiral-part-four
237 |
238 | (defhydra hydra-of-learning-spiral-part-five (:hint nil)
239 | "
240 | ^Commands trying to master
241 | ^----------------------------------------------------------------------------------------
242 | M-x delete-trailing-whitespace
243 | M-x ispell-region
244 | M-x ispell-buffer
245 | M-x flyspell-mode
246 | M-x lsp
247 | M-x query-replace
248 | M-x query-replace-regexp
249 | M-x elispdoc-process-elisp-to-doc
250 | M-x shell
251 | M-x eshell
252 | M-x recover-session
253 | M-x revert-buffer
254 |
255 | ^----------------------------------------------------------------------------------------
256 | _a_ auctex and latex learning spiral
257 | _km_ learning spiral: keybindings mastered
258 | _c_ learning spiral: concepts trying to master
259 | _p_ learning spiral: packages trying to master
260 | _he_ edit /emacs29/my-hydras/my-hydras.el
261 | _i_ edit init.el
262 | _l_ edit learning-spiral-hydras.el
263 | _ri_ reload init.el
264 | _rl_ reload learning-spiral-hydras
265 | _zz_ Return to parent hdyra-of-hydras
266 | _q_ quit
267 | ^------------------------------------------------------------------------------
268 | "
269 | ("a" hydra-of-learning-spiral-latex/body :color blue)
270 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
271 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
272 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
273 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
274 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
275 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
276 | ("ri" (reload-init) :color blue)
277 | ("rl" (reload-learning-spiral-hydras) :color blue)
278 | ("zz" hydra-of-hydras/body :color blue)
279 | ("q" nil :color blue))
280 |
281 |
282 | ;;;# hydra-of-learning-spiral-part-four
283 | (defhydra hydra-of-learning-spiral-part-four (:hint nil)
284 | "
285 | ^Commands trying to master
286 | ^----------------------------------------------------------------------------------------
287 | C-d Delete character.
288 | M-d Delete word.
289 | M-0 C-k Delete to beginning of the line.
290 | M-k Delete sentence forward.
291 | C-x DEL Delete sentence backward.
292 | ^----------------------------------------------------------------------------------------
293 | _n_ next part of this learning spiral.
294 | _a_ auctex and latex learning spiral.
295 | _km_ learning spiral: keybindings mastered.
296 | _c_ learning spiral: concepts trying to master.
297 | _p_ learning spiral: packages trying to master.
298 | _he_ edit /emacs29/my-hydras/my-hydras.el.
299 | _i_ edit init.el
300 | _l_ edit learning-spiral-hydras.el.
301 | _ri_ reload init.el.
302 | _rl_ reload learning-spiral-hydras.
303 | _zz_ Return to parent hdyra-of-hydras.
304 | _q_ quit
305 | ^--------------------------------------------------------------------------------------
306 | "
307 | ("n" hydra-of-learning-spiral-part-five/body :color blue)
308 | ("a" hydra-of-learning-spiral-latex/body :color blue)
309 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
310 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
311 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
312 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
313 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
314 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
315 | ("ri" (reload-init) :color blue)
316 | ("rl" (reload-learning-spiral-hydras) :color blue)
317 | ("zz" hydra-of-hydras/body :color blue)
318 | ("q" nil :color blue))
319 |
320 |
321 | ;;;# hydra-of-learning-spiral-part-three
322 | (defhydra hydra-of-learning-spiral-part-three (:hint nil)
323 | "
324 | ^Commands trying to master
325 | ^----------------------------------------------------------------------------------------
326 | C-w Kill region.
327 | M-w Copy region to kill ring.
328 | M-z char Kill through character char.
329 | M-y Replace last yank with previous kill.
330 | C-x C-x Exchange point and mark.
331 |
332 | M-h Mark paragraph.
333 | C-x C-p Mark page.
334 | C-M-@ Mark sexp
335 | C-M-h Mark function.
336 | C-x h Mark entire buffer.
337 |
338 | C-x n n Toggle narrowing on the region. Works in the LateX-mode.
339 | Installed recursive-narrowing package first.
340 |
341 | M-percent sign Iteratively replace a string.
342 |
343 | M-u Uppercase a word.
344 | M-l Lowercase a word.
345 | M-c Capitalize a word.
346 | C-x C-u Uppercase a region.
347 | C-x C-l Lowercase a region.
348 | ^----------------------------------------------------------------------------------------
349 | _n_ next part of this learning spiral.
350 | _a_ auctex and latex learning spiral
351 | _km_ learning spiral: keybindings mastered
352 | _c_ learning spiral: concepts trying to master
353 | _p_ learning spiral: packages trying to master
354 | _he_ edit /emacs29/my-hydras/my-hydras.el
355 | _i_ edit init.el
356 | _l_ edit learning-spiral-hydras.el
357 | _ri_ reload init.el
358 | _rl_ reload learning-spiral-hydras
359 | _zz_ Return to parent hdyra-of-hydras
360 | _q_ quit
361 | ^-----------------------------------------------------------------------------------------
362 | "
363 | ("n" hydra-of-learning-spiral-part-four/body :color blue)
364 | ("a" hydra-of-learning-spiral-latex/body :color blue)
365 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
366 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
367 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
368 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
369 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
370 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
371 | ("ri" (reload-init) :color blue)
372 | ("rl" (reload-learning-spiral-hydras) :color blue)
373 | ("zz" hydra-of-hydras/body :color blue)
374 | ("q" nil :color blue))
375 |
376 |
377 |
378 | ;;;# hydra-of-learning-spiral-part-two
379 |
380 | (defhydra hydra-of-learning-spiral-part-two (:hint nil)
381 | "
382 | ^Commands trying to master
383 | ^----------------------------------------------------------------------------------------
384 | C-x k Kill the buffer.
385 | C-x s Save all files.
386 | C-x o Move cursor to another window.
387 | C-M-v Scroll the other window.
388 | C-x C-b Open ibuffer.
389 | C-x b Select buffer. TAB to show possible buffers.
390 | C-x C-j Dired jump.
391 | C-c m Switch to minibuffer.
392 | C-o Insert snippet at the point (cursor) after typing tab trigger.
393 | C-c SPC y SPC i Insert snippet at the point (cursor) via selection from the popup menu.
394 | C-c SPC y SPC n Create a new snippet.
395 | C-c w Run texcount.pl on main.tex.
396 | M-k Kill from the cursor to the end of the sentence.
397 | C-w Kill from mark to cursor.
398 | C-x b Visit specific buffer.
399 | C-z Suspend terminal or iconify graphical Emacs. Return with `fg'.
400 | C-x C-v Replace file with the file that you want.
401 | C-x i Insert document into a buffer.
402 | C-h Show help menu.
403 | C-h t Help tutorial.
404 | C-x 1 Remove help window.
405 | C-M-v Scroll help window.
406 | C-h a Show commands matching a string.
407 | C-h k Return the command activate by an entered keybinding.
408 | C-h f Describe a function.
409 | C-h m Get information about current mode.
410 | C-h i m Emacs Lisp Intro Open a hyperlinked version of this valuable book.
411 | C-_ Undo.
412 | C-/ Undo.
413 | M-p Select previous search string.
414 | M-n Select next search string.
415 | M-{ Move point back one paragraph.
416 | M-} Move point forward one paragraph.
417 | C-x [ Move backward a page.
418 | C-x ] Move forward a page.
419 | C-M-b Move back one sexp.
420 | C-M-f Move forward one sexp.
421 | C-M-a Move back one function.
422 | C-M-e Move forward one function.
423 | C-v Move to next screen.
424 | M-v Move to previous screen.
425 | M-g c Goto char.
426 | M-m Goto the indentation.rl
427 | ^----------------------------------------------------------------------------------------
428 | _n_ Next part of this learning spiral.
429 | _a_ Auctex and latex learning spiral.
430 | _km_ Learning spiral: keybindings mastered.
431 | _c_ Learning spiral: concepts trying to master.
432 | _p_ Learning spiral: packages trying to master.
433 | _he_ Edit /emacs29/my-hydras/my-hydras.el.
434 | _i_ Edit init.el.
435 | _l_ Edit learning-spiral-hydras.el.
436 | _ri_ Reload init.el.
437 | _rl_ Reload learning-spiral-hydras.
438 | _zz_ Return to parent hdyra-of-hydras.
439 | _q_ quit
440 | ^------------------------------------------------------------------------------
441 | "
442 | ("n" hydra-of-learning-spiral-part-three/body :color blue)
443 | ("a" hydra-of-learning-spiral-latex/body :color blue)
444 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
445 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
446 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
447 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
448 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
449 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
450 | ("ri" (reload-init) :color blue)
451 | ("rl" (reload-learning-spiral-hydras) :color blue)
452 | ("zz" hydra-of-hydras/body :color blue)
453 | ("q" nil :color blue))
454 |
455 |
456 | ;;;# hydra-of-learning-spiral
457 | ;; This is the master hydra that lists the commands that I am trying to master.
458 | ;; It is the top of the learning spiral.
459 | ;; It continues on the next hydra, hydra-of-learning-spiral-part-two.
460 | ;; This second part is invoked by clicking on `n` or by entering `n'
461 | ;;
462 | ;; It also calls subsidiary hydras that list the following:
463 | ;; - the keybindings that I think I have mastered,
464 | ;; - the concepts that I am trying to master
465 | ;; - the packages that I am trying to master.
466 | (defhydra hydra-of-learning-spiral (:hint nil)
467 | "
468 | ^Commands trying to master
469 | ^-----------------------------------------------------------------------------------------------
470 | C-c = Use in auctex-mode to display TOC of the document in a separate buffer.
471 | C-c d Display a pop-up menu with info about the file, including word count.
472 | C-h l Display list of last commands.
473 | s-, Open the customize buffer.
474 | C-[scrollwheel-up] Zoom text in.
475 | C-[scrollwheel-down] Zoom text out.
476 | M-S-x List all commands relevant to the current mode.
477 | s-n Open a new frame with the current buffer.
478 | s-s Toggle speedbar. Must load sr-speedbar first. Like M-i or C-c =.
479 | M-w Copy selection to kill ring (clipboard) but do not kill. Like s-c.
480 | M-; Comment or uncomment a region.
481 | M-i Display an index of buffer. Use in tex files to navigate to sections.
482 | C-v Next page down.
483 | M-v Next page up.
484 | C-l Center the current line in the window.
485 | C-n Move to the next line.
486 | C-p Move to the previous line.
487 | C-f Move forward one character.
488 | C-b Move back one character.
489 | M-! Execute a shell command.
490 | M-percent sign M-x query-replace.
491 | M-f Move forward a word.
492 | M-b Move back a word.
493 | M-a Move to the beginning of the sentence.
494 | M-e Move to the end of the sentence.
495 | M-q Unwrap text to one sentence per line.
496 | M-< Move to the end of the file.
497 | M-> Move to the beginning of the file.
498 | M-g M-g Goto a specific line number.
499 |
500 | M-x delete-trailing-whitespace
501 | M-x lsp
502 | M-x query-replace
503 | M-x elispdoc-process-elisp-to-doc
504 |
505 | ^----------------------------------------------------------------------------------------------
506 | _n_ next part of this learning spiral.
507 | _a_ Auctex and latex learning spiral.
508 | _km_ learning spiral: keybindings mastered
509 | _c_ learning spiral: concepts trying to master
510 | _p_ learning spiral: packages trying to master
511 | _he_ edit /emacs29/my-hydras/my-hydras.el
512 | _i_ edit init.el in Emacs
513 | _l_ edit learning-spiral-hydras.el in Emacs
514 | _ri_ reload init.el into Emacs after changing on disk.
515 | _rl_ reload learning-spiral-hydras after changing on disk.
516 | _zz_ Return to parent hdyra-of-hydras.
517 | _q_ quit
518 | ^------------------------------------------------------------------------------
519 | "
520 | ("n" hydra-of-learning-spiral-part-two/body :color blue)
521 | ("a" hydra-of-learning-spiral-latex/body :color blue)
522 | ("c" hydra-of-learning-spiral-concepts-mastered/body :color blue)
523 | ("p" hydra-of-learning-spiral-packages-mastered/body :color blue)
524 | ("km" hydra-of-learning-spiral-keybindings-mastered/body :color blue)
525 | ("he" (find-file "/Users/blaine/emacs29/my-hydras/my-hydras.el") :color blue)
526 | ("i" (find-file "/Users/blaine/emacs29/init.el") :color blue)
527 | ("l" (find-file "/Users/blaine/emacs29/my-hydras/learning-spiral-hydras.el") :color blue)
528 | ("ri" (reload-init) :color blue)
529 | ("rl" (reload-learning-spiral-hydras) :color blue)
530 | ("zz" hydra-of-hydras/body :color blue)
531 | ("q" nil :color blue))
532 |
533 | (provide 'learning-spiral-hydras)
534 |
--------------------------------------------------------------------------------