summaryrefslogtreecommitdiff
path: root/reviews/emacs/hype.org
blob: 93b91933b2965ace6a3122ff2075e2b984f79436 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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.
* 29
** "Pure GTK" Emacs
Some brave souls took it upon themselves to drag Emacs kicking and
screaming into The Wayland Future™: "pure GTK" means that Emacs will
only rely on GTK APIs, instead of a mix of GTK and X.

Try it out by giving =--with-pgtk= to =./configure=.
** ~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 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~.
* 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.