summaryrefslogtreecommitdiff
path: root/reviews/emacs
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2024-06-22 13:35:08 +0200
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2024-06-22 13:39:10 +0200
commiteb2347ac630e8fafd833ce609aa2b78b7f572f87 (patch)
treee8a5379f299610cef02439dcf2063421bd758de7 /reviews/emacs
parent34262f32373e042c7816114e0f6141df3acd3cbb (diff)
downloadmemory-leaks-eb2347ac630e8fafd833ce609aa2b78b7f572f87.tar.xz
Try to bring some order to the hype chaos
Pretty sure Future Kévin will scoff at my reasoning for these categories, so for his consideration: hey smart-ass, remember you are objectively more brain-dead than I am. Hate you too.
Diffstat (limited to 'reviews/emacs')
-rw-r--r--reviews/emacs/hype.org194
1 files changed, 106 insertions, 88 deletions
diff --git a/reviews/emacs/hype.org b/reviews/emacs/hype.org
index 3e62122..053964e 100644
--- a/reviews/emacs/hype.org
+++ b/reviews/emacs/hype.org
@@ -26,10 +26,6 @@ As of ERC 5.6, setting ~erc-fill-function~ to ~'erc-fill-wrap~ enables
=wrap-prefix= & margin trickery to (a) align nicks and messages (b)
make messages reflowable (c) keep timestamps firmly stuck to the right
margin.
-*** outline
-**** bug#49731 outline-{show,hide}-by-heading-regexp
-**** bug#68824 tree-sitter integration
-**** bug#69305 buffer-menu & tabulated-list-mode integration
*** shr
**** ~shr-fill-text~
Set to nil to completely disable shr's line-wrapping. This lets users
@@ -67,24 +63,26 @@ hand-holding to take full-advantage of ~visual-line-mode~:
;; Re-assemble headers into a single line.
gnus-article-unfold-long-headers t
gnus-treat-fold-headers nil
- ;; Unfurl format=flowed emails.
- fill-flowed-display-column most-positive-fixnum)
+ ;; Unfurl format=flowed emails by "filling" them to an absurd width.
+ fill-flowed-display-column most-positive-fixnum
+ mm-fill-flowed t)
#+end_src
-** Programming features
-*** ~etags-regen-mode~
-Not sure how straightforward it is to set up for complex projects,
-e.g. binutils-gdb where ~make TAGS~ generates TAGS files in multiple
-subdirectories, and one source file uses symbols from multiple TAGS
-files.
-
-Sounds useful though.
+** Programming
*** imenu
**** bug#70846 imenu-flatten
See also emacs-devel:<m1bk5adq1z.fsf@eshelyaron.com> for follow-up
work to make completions preserve text properties, allowing
~completing-read~ callers to distinguish multiple candidates with the
same string value.
+*** tags
+**** ~etags-regen-mode~
+Not sure how straightforward it is to set up for complex projects,
+e.g. binutils-gdb where ~make TAGS~ generates TAGS files in multiple
+subdirectories, and one source file uses symbols from multiple TAGS
+files.
+
+Sounds useful though.
** UI
*** Completion
**** ~completion-preview-mode~
@@ -92,7 +90,11 @@ same string value.
**** ~customize-toggle-option~
*** Minibuffer
**** ~read-passwd-toggle-visibility~
-*** Window management
+*** Outline
+**** bug#49731 outline-{show,hide}-by-heading-regexp
+**** bug#68824 tree-sitter integration
+**** bug#69305 buffer-menu & tabulated-list-mode integration
+*** Windows
**** ~toggle-window-dedicated~ (=C-x w d=)
Matches my "opportunistic" window "management" perfectly; I generally
do not mind Emacs popping buffers left and right, but on occasion I'll
@@ -133,8 +135,14 @@ A tedious aspect of porting a ~custom-file~ to ~use-package~
declarations is tracking down what package defines which variables,
since not every variable is named after the package it belongs to.
I wrote [[file:~/memory-leaks/guides/emacs/use-package.org::*Porting from ~custom-file~][some code to make the process faster]].
+** Elisp
+*** ~setopt~ sets variables and runs their Custom setters
** UI
-*** ~global-text-scale-adjust~
+*** Buffers
+**** ~rename-visited-file~
+Instead of =C-x C-w NEWNAME RET M-! rm OLDNAME RET=.
+*** Fonts
+**** ~global-text-scale-adjust~
~text-scale-adjust~ (bound to =C-x C-X= ∀ =X= ∈ =[=+-0]=) only scales
the font size in the current buffer; more often than not, one may want
to increase the default font size everywhere (e.g. when projecting
@@ -143,16 +151,8 @@ their screen).
To that end, users had to =M-x customize-face RET default= or =M-:=
~(set-face-attribute 'default nil :height …)~; now they can use the
new =C-x C-M-X= bindings to invoke ~global-text-scale-adjust~.
-*** ~split-root-window-{below,right}~
-E.g. when you already have a vertical split, and you'd like to spawn a
-full-height window to the side (instead of splitting either the top or
-bottom window horizontally and keeping the other full-width).
-
-Been missing this in both Emacs and Terminator; glad Emacs now has a
-solution.
-
-Part of the new window keymap on =C-x w=.
-*** "fold hints" for outlines
+*** Outline
+**** "fold hints" for outlines
~outline-minor-mode-use-buttons~ can be set to either
- =in-margins=: magit-section-like indicators,
@@ -162,10 +162,19 @@ Initially the latter used arguably "garish" color emoji; with the
addition of the =icons.el= library, the way these buttons are
displayed can now be controlled with ~icon-preference~, which defaults
to more sober SVG images.
-** Programming features
-*** ~imenu~ now bound to =M-g i=
-Turns out that lots of modes define an imenu.
-*** Eglot better composes doc & lint messages
+*** Windows
+**** ~split-root-window-{below,right}~
+E.g. when you already have a vertical split, and you'd like to spawn a
+full-height window to the side (instead of splitting either the top or
+bottom window horizontally and keeping the other full-width).
+
+Been missing this in both Emacs and Terminator; glad Emacs now has a
+solution.
+
+Part of the new window keymap on =C-x w=.
+** Programming
+*** eglot
+**** better composition of doc & lint messages
Eglot now sets ~eldoc-documentation-strategy~ to
~eldoc-documentation-compose~, so linter warnings are no longer hidden
by symbol documentation.
@@ -175,14 +184,14 @@ area before e.g. a function signature would clobber it and I would
have to resort to ~M-x flymake-show-buffer-diagnostics~, but no
longer: Eglot now sets things up so that both are visible in the echo
area.
-*** ~python-indent-def-block-scale~
+*** imenu
+**** now bound to =M-g i=
+Turns out that lots of modes define an imenu.
+*** Languages
+*** Python
+**** ~python-indent-def-block-scale~
Bumping that new option down to =1= ensures =python.el= and I remain
on good terms whenever I open lines inside parentheses.
-** File management
-*** ~rename-visited-file~
-Instead of =C-x C-w NEWNAME RET M-! rm OLDNAME RET=.
-** Elisp hacking
-*** ~setopt~ sets variables and runs their Custom setters
** Honorable mentions
These have me excited too, but I have nits to pick with the current
incarnation.
@@ -234,8 +243,19 @@ Others agree it would be [[https://yhetil.org/emacs-devel/87r1bx9pwo.fsf@bernoul
I'll take a stab at implementing it (making it opt-in, keeping the
alphabetical suffixes by default).
* 28
-** Transient input methods
-*** Background
+** Applications
+*** Dired
+**** ~dired-kill-when-opening-new-dired-buffer~
+With this option, =RET= and =^= no longer make Dired buffers pile up 🎉
+
+Previously, =a= (~dired-find-alternate-file~) could be used instead of
+=RET=, but one had to write a custom command for =^=.
+*** Gnus
+**** =#= now toggles the process mark by default
+No need for =M-#= anymore.
+** Editing
+*** Transient input methods
+**** Background
Input methods make it easier to type in certain classes of characters.
Emacs includes different kinds of methods:
@@ -254,7 +274,7 @@ Input methods can be toggled with =C-\=; prefix that with =C-u= to
select a new method. =C-h I <METHOD>= shows what characters
=<METHOD>= supports. =C-u C-x == on a character tells you how to
input that character with the current input method ("to input: …").
-*** What's new
+**** What's new
The new =C-x \= command enables an input method temporarily, just for
the next character, and disables it afterward.
@@ -268,30 +288,7 @@ I no longer need to choose between
- the first time you call it, it prompts for a method,
- subsequent calls do not prompt,
- add =C-u= to get a prompt back.
-** ~same-window-prefix~, ~other-window-prefix~, ~other-frame-prefix~
-The rules which govern how Emacs manages windows are beyond my
-reckoning. I know [[https://protesilaos.com/codelog/2020-01-07-emacs-display-buffer/][it is possible to tame them]] with patience and
-discipline; still, these new commands appeal to my humble caveman
-brain.
-
-Assuming the command run by key sequence =KEYSEQ= will display its own
-buffer =BUF=,
-
-- =C-x 4 1 KEYSEQ= says "please display =BUF= right here, in this
- window";
-- =C-x 4 4 KEYSEQ= says "please display =BUF= in another window";
-- =C-x 5 5 KEYSEQ= says "please display =BUF= in another frame".
-
-These new ~other-…-prefix~ commands can be seen as generalizations of
-specialized shorthands such as =C-x 4 f= or =C-x 5 b=.
-** Visibility-cycling with =TAB= in outline.el
-=TAB= and =S-TAB= now work in Outline mode like they do in Org. Look
-at e.g. NEWS (=C-h N=) to see them in action. Customize
-~outline-minor-mode-cycle~ to enable this in ~outline-minor-mode~.
-
-One small, /tiny/ step toward chipping good features out of Org in
-order to generalize them.
-** ~yank-from-kill-ring~
+*** ~yank-from-kill-ring~
I've always been somewhat ambivalent about Emacs's ~kill-ring~:
1. Everything I ever copied is saved forever! This is a revolutionary
@@ -302,45 +299,47 @@ I've always been somewhat ambivalent about Emacs's ~kill-ring~:
And lo! =M-y= now prompts for the ~kill-ring~ item to yank, with
completion. This makes the ~kill-ring~ much more accessible IMO.
-** ~repeat-mode~
+** Elisp
+*** New commands for ~describe-{function,variable}~:
+- =c= :: for variables, bring up the *Customize* UI,
+- =i= :: bring up the relevant *Info* page,
+- =s= :: jump to the *source* definition.
+*** ~shortdoc-display-group~
+Concise reference docs for specific topics.
+** UI
+*** Input
+**** ~repeat-mode~
=C-x o o o=!
-** ~completions-group~, ~read-char-by-name-sort~
+*** Minibuffer
+**** ~completions-group~, ~read-char-by-name-sort~
Some very welcome quality-of-life tweaks to =C-x 8 RET=.
-** Gnus
-*** =#= now toggles the process mark by default
-No need for =M-#= anymore.
-** Vertical icomplete
-*** Settings
+**** Vertical icomplete
+***** Settings
- ~completions-detailed~
- ~icomplete-scroll~
- ~icomplete-vertical-mode~
-*** Advantages over plain icomplete
+***** Advantages over plain icomplete
- annotations
- completion candidates are easier to tell apart
- =C-n= and =C-p= (=C-.= is awkward on AZERTY)
-*** Advantages over Ivy and Vertico
+***** Advantages over Ivy and Vertico
- regular minibuffer bindings work:
- =SPC= completes
- =RET= yields current input, disregarding completion candidates
- =C-j= yields selected completion candidate
- regular icomplete bindings work:
- =C-M-i= inserts selected completion candidate
-** Dired
-*** ~dired-kill-when-opening-new-dired-buffer~
-With this option, =RET= and =^= no longer make Dired buffers pile up 🎉
-
-Previously, =a= (~dired-find-alternate-file~) could be used instead of
-=RET=, but one had to write a custom command for =^=.
-** Help
-*** Outline in ~describe-bindings~
+*** Outline
+**** ~describe-bindings~ integration
~describe-bindings-outline~ makes =C-h b='s output less overwhelming.
-*** New commands for ~describe-{function,variable}~:
-- =c= :: for variables, bring up the *Customize* UI,
-- =i= :: bring up the relevant *Info* page,
-- =s= :: jump to the *source* definition.
-*** ~shortdoc-display-group~
-Concise reference docs for specific topics.
-** Tabs
+**** Visibility-cycling with =TAB= in outline.el
+=TAB= and =S-TAB= now work in Outline mode like they do in Org. Look
+at e.g. NEWS (=C-h N=) to see them in action. Customize
+~outline-minor-mode-cycle~ to enable this in ~outline-minor-mode~.
+
+One small, /tiny/ step toward chipping good features out of Org in
+order to generalize them.
+*** Tabs
For a long time I did not bother to check out the new tab bar, since I
did not expect to find a way to make tabs work in my rather byzantine
buffer management.
@@ -348,8 +347,27 @@ buffer management.
Then one day I started playing with the =C-x t= prefix on a whim, and
I was surprised by how much mileage I got out of forking off to a new
tab in order to "tuck away" the current window layout.
+*** Windows
+**** ~same-window-prefix~, ~other-window-prefix~, ~other-frame-prefix~
+The rules which govern how Emacs manages windows are beyond my
+reckoning. I know [[https://protesilaos.com/codelog/2020-01-07-emacs-display-buffer/][it is possible to tame them]] with patience and
+discipline; still, these new commands appeal to my humble caveman
+brain.
+
+Assuming the command run by key sequence =KEYSEQ= will display its own
+buffer =BUF=,
+
+- =C-x 4 1 KEYSEQ= says "please display =BUF= right here, in this
+ window";
+- =C-x 4 4 KEYSEQ= says "please display =BUF= in another window";
+- =C-x 5 5 KEYSEQ= says "please display =BUF= in another frame".
+
+These new ~other-…-prefix~ commands can be seen as generalizations of
+specialized shorthands such as =C-x 4 f= or =C-x 5 b=.
* 27
-** ~what-cursor-show-names~
+** UI
+*** Inspection
+**** ~what-cursor-show-names~
I sometimes use =C-u C-x == to (re)discover how the Unicode consortium
decided some character should be called; having plain =C-x == give me
that information without popping an extra buffer is neat.