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
105
106
107
108
109
110
111
112
113
|
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
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~
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
** 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~
~describe-bindings-outline~ makes =C-h b='s output less overwhelming.
* 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.
|