feat(emacs): recreate my old hydra menu for writeroom with transient
Create a Transient menu to adapt on the fly the width of my buffers when using writeroom-mode. This commit also adds two other functions: - `my/writeroom-reset` which resets the width of the buffer to its default state - `my/writeroom-fit-buffer` which sets the width of the buffer to be exactly what is needed to fit the longest line of the buffer
This commit is contained in:
@@ -504,34 +504,36 @@ My toggle keybindings are prefixed by ~t~.
|
|||||||
A couple of keybindings are hidden from which-key, otherwise there’s not
|
A couple of keybindings are hidden from which-key, otherwise there’s not
|
||||||
much to say. The prefix here is ~w~.
|
much to say. The prefix here is ~w~.
|
||||||
#+name: keybindings-windows
|
#+name: keybindings-windows
|
||||||
| Key | Function | Description | Package |
|
| Key | Function | Description | Package |
|
||||||
|-----+-------------------------------+-------------+----------------|
|
|-----+-------------------------------+----------------+----------------|
|
||||||
| | | windows | |
|
| | | windows | |
|
||||||
| c | evil-window-left | | evil |
|
| c | evil-window-left | | evil |
|
||||||
| t | evil-window-down | | evil |
|
| t | evil-window-down | | evil |
|
||||||
| s | evil-window-up | | evil |
|
| s | evil-window-up | | evil |
|
||||||
| r | evil-window-right | | evil |
|
| r | evil-window-right | | evil |
|
||||||
| . | windows-adjust-size/body | | |
|
| . | windows-adjust-size/body | | |
|
||||||
| - | split-window-below-and-focus | | |
|
| - | split-window-below-and-focus | | |
|
||||||
| / | split-window-right-and-focus | | |
|
| / | split-window-right-and-focus | | |
|
||||||
| $ | winum-select-window-by-number | | winum |
|
| $ | winum-select-window-by-number | | winum |
|
||||||
| 0 | winum-select-window-0-or-10 | none | winum |
|
| 0 | winum-select-window-0-or-10 | none | winum |
|
||||||
| 1 | winum-select-window-1 | none | winum |
|
| 1 | winum-select-window-1 | none | winum |
|
||||||
| 2 | winum-select-window-2 | none | winum |
|
| 2 | winum-select-window-2 | none | winum |
|
||||||
| 3 | winum-select-window-3 | none | winum |
|
| 3 | winum-select-window-3 | none | winum |
|
||||||
| 4 | winum-select-window-4 | none | winum |
|
| 4 | winum-select-window-4 | none | winum |
|
||||||
| 5 | winum-select-window-5 | none | winum |
|
| 5 | winum-select-window-5 | none | winum |
|
||||||
| 6 | winum-select-window-6 | none | winum |
|
| 6 | winum-select-window-6 | none | winum |
|
||||||
| 7 | winum-select-window-7 | none | winum |
|
| 7 | winum-select-window-7 | none | winum |
|
||||||
| 8 | winum-select-window-8 | none | winum |
|
| 8 | winum-select-window-8 | none | winum |
|
||||||
| 9 | winum-select-window-9 | none | winum |
|
| 9 | winum-select-window-9 | none | winum |
|
||||||
| b | kill-buffer-and-window | | |
|
| b | kill-buffer-and-window | | |
|
||||||
| d | delete-window | | |
|
| d | delete-window | | |
|
||||||
| o | other-window | | |
|
| o | other-window | | |
|
||||||
| D | delete-other-windows | | |
|
| D | delete-other-windows | | |
|
||||||
| w | | writeroom | |
|
| w | | writeroom | |
|
||||||
| w. | writeroom-buffer-width/body | | writeroom-mode |
|
| w. | my/writeroom-transient | adapt width | |
|
||||||
| ww | writeroom-mode | | writeroom-mode |
|
| w= | my/writeroom-reset | reset width | |
|
||||||
|
| wf | my/writeroom-fit-buffer | fit to content | |
|
||||||
|
| ww | writeroom-mode | | writeroom-mode |
|
||||||
|
|
||||||
** Quit
|
** Quit
|
||||||
Why would I ever use any of these keybindings? They are prefixed with ~q~.
|
Why would I ever use any of these keybindings? They are prefixed with ~q~.
|
||||||
|
|||||||
@@ -176,4 +176,30 @@ is a bit too small for me, and I prefer not to go full-screen.
|
|||||||
writeroom-maximize-window nil
|
writeroom-maximize-window nil
|
||||||
writeroom-mode-line t
|
writeroom-mode-line t
|
||||||
writeroom-major-modes '(text-mode org-mode markdown-mode nov-mode Info-mode)))
|
writeroom-major-modes '(text-mode org-mode markdown-mode nov-mode Info-mode)))
|
||||||
|
|
||||||
|
(with-eval-after-load 'transient
|
||||||
|
(defun my/writeroom-reset ()
|
||||||
|
(interactive)
|
||||||
|
(setq writeroom-width 100)
|
||||||
|
(writeroom-adjust-width nil))
|
||||||
|
|
||||||
|
(defun my/writeroom-fit-buffer ()
|
||||||
|
"Set writeroom to fit the longest line in the current buffer."
|
||||||
|
(interactive)
|
||||||
|
(when writeroom-mode
|
||||||
|
(let ((max-width 0))
|
||||||
|
(save-excursion
|
||||||
|
(goto-char (point-min))
|
||||||
|
(while (not (eobp))
|
||||||
|
(end-of-line)
|
||||||
|
(setq max-width (max max-width (current-column)))
|
||||||
|
(forward-line 1)))
|
||||||
|
(writeroom-adjust-width (- max-width visual-fill-column-width)))))
|
||||||
|
|
||||||
|
(transient-define-prefix my/writeroom-transient ()
|
||||||
|
"Writewroom Transient"
|
||||||
|
["Adjust"
|
||||||
|
("r" "widen" writeroom-increase-width :transient t)
|
||||||
|
("c" "tighten" writeroom-decrease-width :transient t)
|
||||||
|
("q" "quit" transient-quit-all)]))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|||||||
Reference in New Issue
Block a user