summaryrefslogtreecommitdiff
path: root/reviews/emacs/hype.org
blob: f0dcd910e5c625bf9e4d5f0dd5f58dcc83c91db5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
Emacs's NEWS files are useful as a searchable reference, but they can
be overwhelming as an entry point.  In this file, I'm keeping track of
the changes /I/ am excited about.
* Unmerged branches & patches
** "Pure GTK" Emacs
Some brave souls took it upon themselves to drag Emacs kicking and
screaming into The Wayland Future™.
* 28
** Transient input methods
*** Background
Input methods make it easier to type in certain classes of characters.
Emacs includes different kinds of methods:

- alternative keyboard layouts :: if you are familiar with specific
  layouts, e.g. Dvorak, French AZERTY, Russian, you can ask Emacs to
  switch to this layout;

- composition :: some methods let you specify characters by typing in
  short sequences of other symbols:
  - =french-prefix= provides easy access to diacritics with e.g. ='e=
    for =é=, =,c= for =ç=;
  - =TeX= turns TeX macros such as =\alpha=, =\pi=, =\le=, =\ne=,
    =\wedge= into their corresponding characters, i.e. α, π, ≤, ≠, ∧.

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
The new =C-x \= command enables an input method temporarily, just for
the next character, and disables it afterward.

As an occasional user of the =TeX= method, I find this useful because
I no longer need to choose between
1. enabling =TeX=, typing a sequence, disabling =TeX=, or
2. enabling =TeX=, typing a sequence, keeping =TeX= enabled, getting
   bitten by it whenever I type in =oh_no= and that turns into =ohₙo=.

=C-x \= seems to follow the same rules as =C-\=:
- 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
common 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~
I've always been somewhat ambivalent about Emacs's ~kill-ring~:

1. Everything I ever copied is saved forever!  This is a revolutionary
   feature on par with the undo system 🙌

2. … Surely we can find a more ergonomic UI than =C-y M-y M-y M-y=
   /dammit/ =C-_ C-_= /ah screw it/ =C-h v kill-ring RET C-s= 🤔

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
=C-x o o o=!
** ~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
- ~completions-detailed~
- ~icomplete-scroll~
- ~icomplete-vertical-mode~
*** 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
- 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
* 27
** ~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.