diff options
| author | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2024-06-22 13:35:08 +0200 |
|---|---|---|
| committer | Kévin Le Gouguec <kevin.legouguec@gmail.com> | 2024-06-22 13:39:10 +0200 |
| commit | eb2347ac630e8fafd833ce609aa2b78b7f572f87 (patch) | |
| tree | e8a5379f299610cef02439dcf2063421bd758de7 /reviews/emacs | |
| parent | 34262f32373e042c7816114e0f6141df3acd3cbb (diff) | |
| download | memory-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.org | 194 |
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. |
