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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
|
WEBVTT captioned by sachac
NOTE Introduction
00:00:00.000 --> 00:00:08.239
Hi, Emacs Conference. I'm Mats Lidell. I'm the maintainer
00:00:08.240 --> 00:00:13.399
of the GNU Hyperbole, together with the author, Bob
00:00:13.400 --> 00:00:19.759
Weiner. The title of the talk is Fun Things with GNU
00:00:19.760 --> 00:00:27.959
Hyperbole. With that, I intend to cover a different set of
00:00:27.960 --> 00:00:33.319
small things that is in the package. So this will not be a
00:00:33.320 --> 00:00:36.854
tutorial of Hyperbole.
00:00:36.855 --> 00:00:41.298
For that, you have to look for other sources.
NOTE The action key and the assist key
00:00:41.299 --> 00:00:45.039
This is a short talk, so let's get started with
00:00:45.040 --> 00:00:50.879
the first thing. We're going to talk about scrolling and
00:00:50.880 --> 00:00:56.239
with the subtitle using the end of line. If you're new to
00:00:56.240 --> 00:00:59.559
Hyperbole, you need to know about the action key and assist
00:00:59.560 --> 00:01:06.079
key. The action key is bound to M-RET and the assist key
00:01:06.080 --> 00:01:10.279
is bound by default to M-RET with the prefix argument.
00:01:10.280 --> 00:01:15.559
Both of these keys are used for performing actions on
00:01:15.560 --> 00:01:20.319
different contexts. In this case, we'll look what
00:01:20.320 --> 00:01:27.719
happens when you use it on the end of a line.
00:01:27.720 --> 00:01:35.439
I have here the tutorial, the Emacs tutorial, and we see
00:01:35.440 --> 00:01:40.599
here a line inserting and deleting. I move there and put the
00:01:40.600 --> 00:01:45.439
cursor on the end of the line. I then hit M-RET, the
00:01:45.440 --> 00:01:53.479
action key, and it's moved to the top of the window. If I want
00:01:53.480 --> 00:01:58.919
to move it to the last row on the window I can press C-u and
00:01:58.920 --> 00:02:05.879
then M-RET, so I use the assist key. If I repeatedly hit
00:02:05.880 --> 00:02:10.399
M-RET, it will scroll so the first time it moves to the
00:02:10.400 --> 00:02:16.159
top of the window, but if I at the top of the window hit
00:02:16.160 --> 00:02:22.839
M-RET again it scrolls.
NOTE Composing an e-mail
00:02:22.840 --> 00:02:27.799
Now over to the next thing.
00:02:27.800 --> 00:02:34.559
So next thing is to compose an email from an address
00:02:34.560 --> 00:02:42.599
of the style of username@domain. Let's look into
00:02:42.600 --> 00:02:48.359
that. Here I have entered the file in the Emacs
00:02:48.360 --> 00:02:54.239
distribution vc.el. At its top it has a lot of
00:02:54.240 --> 00:03:01.359
different email addresses from the contributors. This is, in
00:03:01.360 --> 00:03:09.199
principle, a normal text file. By placing the cursor over
00:03:09.200 --> 00:03:13.519
one of these addresses and hitting the action key, Hyperbole
00:03:13.520 --> 00:03:17.839
identifies that it's an email address and tries to open or
00:03:17.840 --> 00:03:28.519
opens the email composer with that, using that email address.
00:03:28.520 --> 00:03:33.719
If we'll go to the scratch buffer... Prepared another name
00:03:33.720 --> 00:03:38.119
there so just to demonstrate it works in a buffer the same
00:03:38.120 --> 00:03:44.599
way.
NOTE Inserting implicit links
00:03:44.600 --> 00:03:51.079
The next fun thing is insert implicit link. I'm going to give
00:03:51.080 --> 00:03:56.279
you an example with email how to share an implicit link with
00:03:56.280 --> 00:04:02.359
someone. An implicit link is a text pattern, just as we saw
00:04:02.360 --> 00:04:05.159
with the email address, something that Hyperbole
00:04:05.160 --> 00:04:13.319
recognizes just by how the text looks. Here we have the
00:04:13.320 --> 00:04:15.981
example. We have started writing an email to
00:04:15.982 --> 00:04:20.662
the user@domain, and in the other window below,
00:04:20.663 --> 00:04:27.423
the vc.el file is open. It's now opened within the search path,
00:04:27.424 --> 00:04:34.279
the load path. That's why it's compressed. I want to tell
00:04:34.280 --> 00:04:40.719
my friend about the credit section. First, the cursor is
00:04:40.720 --> 00:04:44.559
placed here at your credit section. I move over to the other
00:04:44.560 --> 00:04:48.879
window and I use the Hyperbole menu system. By hitting
00:04:48.880 --> 00:04:55.261
C-h h, I go into the menu system. I press i for getting an
00:04:55.262 --> 00:05:05.119
i-button, implicit button, and I press l for creating a link.
00:05:05.120 --> 00:05:12.159
And there you have the link. What does the link mean? Well, it
00:05:12.160 --> 00:05:15.519
means that in the load for Hyperbole, Emacs lib files are
00:05:15.520 --> 00:05:20.719
special. If they are in the load path, they will use this short
00:05:20.720 --> 00:05:26.279
format. At the end, you have the L for the line number 24 and
00:05:26.280 --> 00:05:31.439
the C for the column. If I hit the action key on this line, you
00:05:31.440 --> 00:05:35.559
can see that the cursor moves over to the credit section. we
00:05:35.560 --> 00:05:44.919
can remove that file just to make sure that it works and move
00:05:44.920 --> 00:05:50.639
the cursor a little bit and hit M-RET again.
00:05:50.640 --> 00:05:55.599
M-RET and we moved over there. I mean, given that
00:05:55.600 --> 00:06:00.039
the receiver has a similar setup with Emacs, et cetera, that
00:06:00.040 --> 00:06:03.410
link will work there as well.
NOTE Window grid
00:06:03.411 --> 00:06:05.879
Hi, Emacs Conference. It's a
00:06:05.880 --> 00:06:09.639
new recording day, the sun is shining, I'm wearing a new
00:06:09.640 --> 00:06:14.359
t-shirt but we're still cracking on with fun things in
00:06:14.360 --> 00:06:21.239
Hyperbole. Our next subject is window grid. With
00:06:21.240 --> 00:06:25.039
Hyperbole, it's easy to create a grid of windows. I'm going to
00:06:25.040 --> 00:06:29.319
show how you can do that and also moving on I'm going to show
00:06:29.320 --> 00:06:34.239
how you can use Dired or IBuffer to select what buffers to
00:06:34.240 --> 00:06:39.959
show in the grid. I will also show how you can save
00:06:39.960 --> 00:06:46.079
configuration for use later.
00:06:46.080 --> 00:06:50.039
You reach the window grid functionality through the
00:06:50.040 --> 00:06:56.839
hyperbole menu system. C-h h screen. There you have
00:06:56.840 --> 00:07:01.279
two submenus, frame control and window control. The grid
00:07:01.280 --> 00:07:05.039
functionality is part of both of these submenus. You can
00:07:05.040 --> 00:07:09.359
select either, but I'll go with window control here.
00:07:09.360 --> 00:07:15.239
Down to the left, we see the @ character and the grid of
00:07:15.240 --> 00:07:21.799
windows, so hit @. I'm prompted with the number of
00:07:21.800 --> 00:07:25.803
columns and rows for the window grid.
00:07:25.804 --> 00:07:34.359
I select the 3x3 grid.
00:07:34.360 --> 00:07:41.919
We get the 3x3 grid, and it's populated with buffers I have
00:07:41.920 --> 00:07:46.639
loaded in Emacs.
00:07:46.640 --> 00:07:52.319
Let's go back here to the scratch buffer.
00:07:52.320 --> 00:07:56.399
Now, using all those keystrokes for the menu system is a
00:07:56.400 --> 00:08:01.599
little bit cumbersome, so there is a shortcut: C-c @.
00:08:01.600 --> 00:08:08.519
If I use that, C-c @, I get immediately prompted the
00:08:08.520 --> 00:08:16.538
number of rows and columns. If i use a prefix arg 0,
00:08:16.539 --> 00:08:23.359
C-u 0 C-c @, I get also prompted with what type of
00:08:23.360 --> 00:08:28.719
buffers I want to have populated in my grid. Let's select
00:08:28.720 --> 00:08:36.599
the emacs-lisp-mode. Again we do a 3x3 grid. Here
00:08:36.600 --> 00:08:44.959
you see all the grids. The whole grid is populated with Emacs
00:08:44.960 --> 00:08:45.919
Lisp buffers.
00:08:45.920 --> 00:08:57.679
To get even finer control, you can go into IBuffer. I have
00:08:57.680 --> 00:09:04.279
pre-selected here all the Emacs Lisp files I have. Let's
00:09:04.280 --> 00:09:10.279
pick a few. I mark them like this. Let's pick three or maybe
00:09:10.280 --> 00:09:16.879
pick four. Then I hit the @ sign, and then it
00:09:16.880 --> 00:09:22.368
automatically shows a 2x2 grid
00:09:22.369 --> 00:09:26.279
with the selected buffers.
00:09:26.280 --> 00:09:35.239
We can go in again and maybe select a few more and do the same
00:09:35.240 --> 00:09:44.399
thing: hit add and it now becomes a 3x2 grid with these buffers
00:09:44.400 --> 00:09:50.178
The same thing is possible through Dired.
00:09:50.179 --> 00:10:00.639
Let's just mark quite a few here and then hit @, and then it
00:10:00.640 --> 00:10:04.199
populates it with all the buffers. You see that if it's not
00:10:04.200 --> 00:10:10.679
enough buffer to fill the whole grid, there are blank grids or
00:10:10.680 --> 00:10:15.039
rectangles in the grid.
00:10:15.040 --> 00:10:20.519
Now going back and forth like this, maybe if you want to work
00:10:20.520 --> 00:10:26.759
on some file and and then go over to Dired again to select this,
00:10:26.760 --> 00:10:31.759
can be a little bit cumbersome. You maybe have prepared a
00:10:31.760 --> 00:10:34.965
grid with the buffers you want to have there.
00:10:34.966 --> 00:10:42.559
Hyperbole comes with a simple window configuration support.
00:10:42.560 --> 00:10:46.119
You reach that the same way through the Hyperbole menu, so
00:10:46.120 --> 00:10:54.119
C-h h and window, w for window, and there you can hit save to
00:10:54.120 --> 00:10:58.599
save the configuration to a ring of configurations.
00:10:58.600 --> 00:11:04.759
Let's go back to the scratch buffer again here. Now we
00:11:04.760 --> 00:11:09.919
want to bring up our window configuration again, so we
00:11:09.920 --> 00:11:15.079
hit C-h h and window, and yank in the configuration. Boom,
00:11:15.080 --> 00:11:19.719
there is the grid again.
NOTE Select a thing
00:11:19.720 --> 00:11:23.319
We're reaching the end of the talk. The last fun thing I want to
00:11:23.320 --> 00:11:27.639
talk about is the Hyperbole support for select a thing.
00:11:27.640 --> 00:11:33.439
We'll show some use of selections together with web search.
00:11:33.440 --> 00:11:43.599
Here I have brought up the GNU General Public License for
00:11:43.600 --> 00:11:48.119
just getting some text that I can show the select a thing
00:11:48.120 --> 00:11:52.919
functionality. Let's move the cursor over the word
00:11:52.920 --> 00:11:59.399
versions. Then I hit C-c RET, which is bound for the
00:11:59.400 --> 00:12:03.119
select a thing functionality.
00:12:03.120 --> 00:12:11.039
Then it selects the word that the cursor was at. If I hit it
00:12:11.040 --> 00:12:15.199
again, C-c RET, it selects the line. Again, it
00:12:15.200 --> 00:12:22.359
selects the sentence, and again, the whole paragraph. So
00:12:22.360 --> 00:12:26.159
that's a convenient way to extend your searches--your
00:12:26.160 --> 00:12:33.817
selections, rather--in a buffer.
NOTE Web search
00:12:33.818 --> 00:12:38.198
Looking at selections, how you can use that from web search...
00:12:38.199 --> 00:12:44.321
Let's mark some text and then hit C-c /, which is bound
00:12:44.322 --> 00:12:48.542
for the web search. Here you see the Hyperbole menu system again.
00:12:48.543 --> 00:12:54.959
It's slightly customized with things that I use, but the basic
00:12:54.960 --> 00:13:00.519
menus are the ones supported by Hyperbole. Let's look at
00:13:00.520 --> 00:13:07.999
searching DuckDuckGo. It then populates the prompt with
00:13:08.000 --> 00:13:08.839
the selection.
00:13:08.840 --> 00:13:17.919
I have configured it so it uses my Firefox for these
00:13:17.920 --> 00:13:23.319
searches. Here we have the GNU General Public License
00:13:23.320 --> 00:13:30.599
shown. I can also show that for like me, being not a native
00:13:30.600 --> 00:13:36.319
English speaker, let's look what "take away your freedoms"
00:13:36.320 --> 00:13:41.679
means in Swedish. So C-c /, and then I hit translate.
00:13:41.680 --> 00:13:45.879
Take away your freedom, yeah, what's the translation for
00:13:45.880 --> 00:13:48.582
that? Using Google Translate,
00:13:48.583 --> 00:13:50.799
I get it translated to Swedish.
00:13:50.800 --> 00:14:03.430
That was the whole talk. We reached the end,
00:14:03.431 --> 00:14:09.400
and thanks for listening. Bye.
|