diff --git a/contrapunctus/cp-org.el b/contrapunctus/cp-org.el index 77cafeb..1a4ca98 100644 --- a/contrapunctus/cp-org.el +++ b/contrapunctus/cp-org.el @@ -138,7 +138,6 @@ ("p" org-set-property "property" :color blue) ("b" cp-org-src/body "source block" :color blue) ("t" cp-org-set-tags "tags" :color blue) - ("e" (literate-elisp-load-file (buffer-file-name)) "eval buffer" :color blue) ("i" org-previous-visible-heading "previous heading") ("o" org-next-visible-heading "next heading") @@ -154,7 +153,7 @@ ("s" save-buffer "save" :color blue) ("m" magit-status "Magit" :color blue) - ("u" contrapunctus-general/body "up" :color blue) + ("u" contrapunctus-general-hydra/body "up" :color blue) ("G" elpher "Elpher" :color blue)) ;; (use-package org-src-mode diff --git a/init.el b/init.el index 2a28fab..dda25e8 100644 --- a/init.el +++ b/init.el @@ -425,14 +425,22 @@ Return nil (and run `magit-status') if the user answers no." (use-package hydra :commands defhydra) -(defhydra contrapunctus-general (:color blue) +(defhydra contrapunctus-window-hydra (:color blue) + "Window" + ("d" delete-window "delete") + ("s" delete-other-windows "single") + ("e" split-window-below "split below") + ("r" split-window-right "split right")) + +(defhydra contrapunctus-general-hydra (:color blue) "What command?" ("c" chronometrist "chronometrist") ("G" elpher "elpher") ("o" cp-org/body "org") - ("p" cp/prog-hydra "programming") + ("p" contrapunctus-programming-hydra-dispatch-language "programming") ("i" (find-file "~/.emacs.d/init.org") "open init") ("l" launch-file "launch-file") + ("w" contrapunctus-window-hydra/body "window") ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") @@ -964,7 +972,7 @@ and eval it." (cd (locate-dominating-file default-directory file)) (compile cmd)) -(defhydra cp-prog (:color blue) +(defhydra contrapunctus-programming-hydra (:color blue) "Which language?" ("e" cp-el/body "Emacs Lisp") ("c" cp-cs/body "CHICKEN Scheme") @@ -974,14 +982,14 @@ and eval it." ("o" cp-org/body "Org") ("p" cp-prolog/body "Prolog") - ("u" contrapunctus-general/body "up" :color blue) + ("u" contrapunctus-general-hydra/body "up" :color blue) ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") ("E" toggle-debug-on-error "tdoe") ("Q" toggle-debug-on-quit "tdoq") ("m" magit-status "Magit")) -(defun cp/prog-hydra () +(defun contrapunctus-programming-hydra-dispatch-language () (interactive) (cond ((or (derived-mode-p 'emacs-lisp-mode 'ielm-mode) ;; ;; Similar problems with this as the f-glob below; @@ -1005,10 +1013,10 @@ and eval it." ((derived-mode-p 'org-mode) (cp-org/body)) ((derived-mode-p 'prog-mode) - (cp-prog/body)) - (t (contrapunctus-general/body)))) + (contrapunctus-programming-hydra/body)) + (t (contrapunctus-general-hydra/body)))) -(define-key boon-command-map (kbd "m") #'cp/prog-hydra) +(define-key boon-command-map (kbd "m") #'contrapunctus-programming-hydra-dispatch-language) (use-package elisp-mode :diminish @@ -1061,7 +1069,8 @@ and eval it." ("C" (cp/compile-project "Cask" "cask clean-elc") "clean") ("t" (cp/compile-project "Cask" "cask exec buttercup -L . --traceback pretty") "Test") - ("u" cp-prog/body "up" :color blue) + ("w" contrapunctus-window-hydra/body "window") + ("u" contrapunctus-programming-hydra/body "up") ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") ("E" toggle-debug-on-error "tdoe") @@ -1083,7 +1092,7 @@ and eval it." ("e" cp-cl-eval/body "Eval") ("r" slime "REPL") - ("u" cp-prog/body "up" :color blue) + ("u" contrapunctus-programming-hydra/body "up" :color blue) ("s" save-buffer "save") ("m" magit-status "Magit")) @@ -1096,7 +1105,7 @@ and eval it." ("e" cp-scm-eval/body "Eval") ("r" run-chicken "REPL") ("m" magit-status "Magit") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) (defhydra cp-guile (:color blue) "Guile" @@ -1104,20 +1113,20 @@ and eval it." ("r" run-guile "REPL") ("m" magit-status "Magit") ("G" elpher "Elpher") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) (defhydra cp-ly (:color blue) "Lilypond" ("c" (cp/compile-project "main.ly" "~/bin/mkly dev") "Compile") ("m" magit-status "Magit") ("G" elpher "Elpher") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) (use-package ediprolog :commands ediprolog-dwim) (defhydra cp-prolog (:color blue) "Prolog" - ("u" cp-prog/body "up" :color blue) + ("u" contrapunctus-programming-hydra/body "up") ("r" ediprolog-dwim "REPL")) (use-package cc-mode) diff --git a/init.org b/init.org index b910937..2e24d3d 100644 --- a/init.org +++ b/init.org @@ -570,6 +570,8 @@ Return nil (and run `magit-status') if the user answers no." #+END_SRC ** TODO hydra [50%] +I started off using Hydra for programming modes, when I noticed that Elisp, Common Lisp, and Scheme all had some semantically-analogous operations with different names, which could be abstracted away behind a generic interface. Then, around the time I got into using Org for literate programs, I added an Org hydra, and then a general hydra for frequently-used operations. + Add these common operations to the hydra - 1. [ ] =enlarge-window=, =enlarge-window-horizontally= 2. [X] =save-buffer=, =kill-buffer= @@ -579,14 +581,22 @@ Add these common operations to the hydra - (use-package hydra :commands defhydra) -(defhydra contrapunctus-general (:color blue) +(defhydra contrapunctus-window-hydra (:color blue) + "Window" + ("d" delete-window "delete") + ("s" delete-other-windows "single") + ("e" split-window-below "split below") + ("r" split-window-right "split right")) + +(defhydra contrapunctus-general-hydra (:color blue) "What command?" ("c" chronometrist "chronometrist") ("G" elpher "elpher") ("o" cp-org/body "org") - ("p" cp/prog-hydra "programming") + ("p" contrapunctus-programming-hydra-dispatch-language "programming") ("i" (find-file "~/.emacs.d/init.org") "open init") ("l" launch-file "launch-file") + ("w" contrapunctus-window-hydra/body "window") ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") @@ -1295,7 +1305,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh (cd (locate-dominating-file default-directory file)) (compile cmd)) -(defhydra cp-prog (:color blue) +(defhydra contrapunctus-programming-hydra (:color blue) "Which language?" ("e" cp-el/body "Emacs Lisp") ("c" cp-cs/body "CHICKEN Scheme") @@ -1305,14 +1315,14 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("o" cp-org/body "Org") ("p" cp-prolog/body "Prolog") - ("u" contrapunctus-general/body "up" :color blue) + ("u" contrapunctus-general-hydra/body "up" :color blue) ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") ("E" toggle-debug-on-error "tdoe") ("Q" toggle-debug-on-quit "tdoq") ("m" magit-status "Magit")) -(defun cp/prog-hydra () +(defun contrapunctus-programming-hydra-dispatch-language () (interactive) (cond ((or (derived-mode-p 'emacs-lisp-mode 'ielm-mode) ;; ;; Similar problems with this as the f-glob below; @@ -1336,10 +1346,10 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ((derived-mode-p 'org-mode) (cp-org/body)) ((derived-mode-p 'prog-mode) - (cp-prog/body)) - (t (contrapunctus-general/body)))) + (contrapunctus-programming-hydra/body)) + (t (contrapunctus-general-hydra/body)))) -(define-key boon-command-map (kbd "m") #'cp/prog-hydra) +(define-key boon-command-map (kbd "m") #'contrapunctus-programming-hydra-dispatch-language) #+END_SRC *** Emacs Lisp @@ -1410,7 +1420,8 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("C" (cp/compile-project "Cask" "cask clean-elc") "clean") ("t" (cp/compile-project "Cask" "cask exec buttercup -L . --traceback pretty") "Test") - ("u" cp-prog/body "up" :color blue) + ("w" contrapunctus-window-hydra/body "window") + ("u" contrapunctus-programming-hydra/body "up") ("s" save-buffer "save") ("k" (kill-buffer (current-buffer)) "kill") ("E" toggle-debug-on-error "tdoe") @@ -1435,7 +1446,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("e" cp-cl-eval/body "Eval") ("r" slime "REPL") - ("u" cp-prog/body "up" :color blue) + ("u" contrapunctus-programming-hydra/body "up" :color blue) ("s" save-buffer "save") ("m" magit-status "Magit")) @@ -1455,7 +1466,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("e" cp-scm-eval/body "Eval") ("r" run-chicken "REPL") ("m" magit-status "Magit") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) #+END_SRC **** Guile @@ -1466,7 +1477,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("r" run-guile "REPL") ("m" magit-status "Magit") ("G" elpher "Elpher") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) #+END_SRC *** Lilypond #+BEGIN_SRC emacs-lisp @@ -1475,7 +1486,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh ("c" (cp/compile-project "main.ly" "~/bin/mkly dev") "Compile") ("m" magit-status "Magit") ("G" elpher "Elpher") - ("u" cp-prog/body "up" :color blue)) + ("u" contrapunctus-programming-hydra/body "up")) #+END_SRC *** Prolog @@ -1485,7 +1496,7 @@ It'd be really cool to (recenter 3) when you /open/ a section, and (recenter) wh (defhydra cp-prolog (:color blue) "Prolog" - ("u" cp-prog/body "up" :color blue) + ("u" contrapunctus-programming-hydra/body "up") ("r" ediprolog-dwim "REPL")) #+END_SRC