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
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<a name="hyperbole-mainVideo-transcript"></a>
# Transcript
[[!template new="1" text="""Introduction""" start="00:00:00.000" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hi, Emacs Conference. I'm Mats Lidell. I'm the maintainer""" start="00:00:00.000" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""of the GNU Hyperbole, together with the author, Bob""" start="00:00:08.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Weiner. The title of the talk is Fun Things with GNU""" start="00:00:13.400" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hyperbole. With that, I intend to cover a different set of""" start="00:00:19.760" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""small things that is in the package. So this will not be a""" start="00:00:27.960" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""tutorial of Hyperbole.""" start="00:00:33.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""For that, you have to look for other sources.""" start="00:00:36.855" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""The action key and the assist key""" start="00:00:41.299" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""This is a short talk, so let's get started with""" start="00:00:41.299" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the first thing. We're going to talk about scrolling and""" start="00:00:45.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""with the subtitle using the end of line. If you're new to""" start="00:00:50.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hyperbole, you need to know about the action key and assist""" start="00:00:56.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""key. The action key is bound to M-RET and the assist key""" start="00:00:59.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""is bound by default to M-RET with the prefix argument.""" start="00:01:06.080" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Both of these keys are used for performing actions on""" start="00:01:10.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""different contexts. In this case, we'll look what""" start="00:01:15.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""happens when you use it on the end of a line.""" start="00:01:20.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""I have here the tutorial, the Emacs tutorial, and we see""" start="00:01:27.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""here a line inserting and deleting. I move there and put the""" start="00:01:35.440" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""cursor on the end of the line. I then hit M-RET, the""" start="00:01:40.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""action key, and it's moved to the top of the window. If I want""" start="00:01:45.440" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""to move it to the last row on the window I can press C-u and""" start="00:01:53.480" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""then M-RET, so I use the assist key. If I repeatedly hit""" start="00:01:58.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""M-RET, it will scroll so the first time it moves to the""" start="00:02:05.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""top of the window, but if I at the top of the window hit""" start="00:02:10.400" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""M-RET again it scrolls.""" start="00:02:16.160" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""Composing an e-mail""" start="00:02:22.840" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Now over to the next thing.""" start="00:02:22.840" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""So next thing is to compose an email from an address""" start="00:02:27.800" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""of the style of username@domain. Let's look into""" start="00:02:34.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""that. Here I have entered the file in the Emacs""" start="00:02:42.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""distribution vc.el. At its top it has a lot of""" start="00:02:48.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""different email addresses from the contributors. This is, in""" start="00:02:54.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""principle, a normal text file. By placing the cursor over""" start="00:03:01.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""one of these addresses and hitting the action key, Hyperbole""" start="00:03:09.200" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""identifies that it's an email address and tries to open or""" start="00:03:13.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""opens the email composer with that, using that email address.""" start="00:03:17.840" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""If we'll go to the scratch buffer... Prepared another name""" start="00:03:28.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""there so just to demonstrate it works in a buffer the same""" start="00:03:33.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""way.""" start="00:03:38.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""Inserting implicit links""" start="00:03:44.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""The next fun thing is insert implicit link. I'm going to give""" start="00:03:44.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""you an example with email how to share an implicit link with""" start="00:03:51.080" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""someone. An implicit link is a text pattern, just as we saw""" start="00:03:56.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""with the email address, something that Hyperbole""" start="00:04:02.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""recognizes just by how the text looks. Here we have the""" start="00:04:05.160" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""example. We have started writing an email to""" start="00:04:13.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the user@domain, and in the other window below,""" start="00:04:15.982" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the vc.el file is open. It's now opened within the search path,""" start="00:04:20.663" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the load path. That's why it's compressed. I want to tell""" start="00:04:27.424" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""my friend about the credit section. First, the cursor is""" start="00:04:34.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""placed here at your credit section. I move over to the other""" start="00:04:40.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""window and I use the Hyperbole menu system. By hitting""" start="00:04:44.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""C-h h, I go into the menu system. I press i for getting an""" start="00:04:48.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""i-button, implicit button, and I press l for creating a link.""" start="00:04:55.262" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""And there you have the link. What does the link mean? Well, it""" start="00:05:05.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""means that in the load for Hyperbole, Emacs lib files are""" start="00:05:12.160" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""special. If they are in the load path, they will use this short""" start="00:05:15.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""format. At the end, you have the L for the line number 24 and""" start="00:05:20.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the C for the column. If I hit the action key on this line, you""" start="00:05:26.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""can see that the cursor moves over to the credit section. we""" start="00:05:31.440" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""can remove that file just to make sure that it works and move""" start="00:05:35.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the cursor a little bit and hit M-RET again.""" start="00:05:44.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""M-RET and we moved over there. I mean, given that""" start="00:05:50.640" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the receiver has a similar setup with Emacs, et cetera, that""" start="00:05:55.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""link will work there as well.""" start="00:06:00.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""Window grid""" start="00:06:03.411" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hi, Emacs Conference. It's a""" start="00:06:03.411" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""new recording day, the sun is shining, I'm wearing a new""" start="00:06:05.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""t-shirt but we're still cracking on with fun things in""" start="00:06:09.640" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hyperbole. Our next subject is window grid. With""" start="00:06:14.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hyperbole, it's easy to create a grid of windows. I'm going to""" start="00:06:21.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""show how you can do that and also moving on I'm going to show""" start="00:06:25.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""how you can use Dired or IBuffer to select what buffers to""" start="00:06:29.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""show in the grid. I will also show how you can save""" start="00:06:34.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""configuration for use later.""" start="00:06:39.960" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""You reach the window grid functionality through the""" start="00:06:46.080" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""hyperbole menu system. C-h h screen. There you have""" start="00:06:50.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""two submenus, frame control and window control. The grid""" start="00:06:56.840" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""functionality is part of both of these submenus. You can""" start="00:07:01.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""select either, but I'll go with window control here.""" start="00:07:05.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Down to the left, we see the @ character and the grid of""" start="00:07:09.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""windows, so hit @. I'm prompted with the number of""" start="00:07:15.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""columns and rows for the window grid.""" start="00:07:21.800" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""I select the 3x3 grid.""" start="00:07:25.804" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""We get the 3x3 grid, and it's populated with buffers I have""" start="00:07:34.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""loaded in Emacs.""" start="00:07:41.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Let's go back here to the scratch buffer.""" start="00:07:46.640" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Now, using all those keystrokes for the menu system is a""" start="00:07:52.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""little bit cumbersome, so there is a shortcut: C-c @.""" start="00:07:56.400" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""If I use that, C-c @, I get immediately prompted the""" start="00:08:01.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""number of rows and columns. If i use a prefix arg 0,""" start="00:08:08.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""C-u 0 C-c @, I get also prompted with what type of""" start="00:08:16.539" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""buffers I want to have populated in my grid. Let's select""" start="00:08:23.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the emacs-lisp-mode. Again we do a 3x3 grid. Here""" start="00:08:28.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""you see all the grids. The whole grid is populated with Emacs""" start="00:08:36.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Lisp buffers.""" start="00:08:44.960" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""To get even finer control, you can go into IBuffer. I have""" start="00:08:45.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""pre-selected here all the Emacs Lisp files I have. Let's""" start="00:08:57.680" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""pick a few. I mark them like this. Let's pick three or maybe""" start="00:09:04.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""pick four. Then I hit the @ sign, and then it""" start="00:09:10.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""automatically shows a 2x2 grid""" start="00:09:16.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""with the selected buffers.""" start="00:09:22.369" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""We can go in again and maybe select a few more and do the same""" start="00:09:26.280" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""thing: hit add and it now becomes a 3x2 grid with these buffers""" start="00:09:35.240" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""The same thing is possible through Dired.""" start="00:09:44.400" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Let's just mark quite a few here and then hit @, and then it""" start="00:09:50.179" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""populates it with all the buffers. You see that if it's not""" start="00:10:00.640" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""enough buffer to fill the whole grid, there are blank grids or""" start="00:10:04.200" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""rectangles in the grid.""" start="00:10:10.680" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Now going back and forth like this, maybe if you want to work""" start="00:10:15.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""on some file and and then go over to Dired again to select this,""" start="00:10:20.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""can be a little bit cumbersome. You maybe have prepared a""" start="00:10:26.760" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""grid with the buffers you want to have there.""" start="00:10:31.760" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Hyperbole comes with a simple window configuration support.""" start="00:10:34.966" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""You reach that the same way through the Hyperbole menu, so""" start="00:10:42.560" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""C-h h and window, w for window, and there you can hit save to""" start="00:10:46.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""save the configuration to a ring of configurations.""" start="00:10:54.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Let's go back to the scratch buffer again here. Now we""" start="00:10:58.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""want to bring up our window configuration again, so we""" start="00:11:04.760" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""hit C-h h and window, and yank in the configuration. Boom,""" start="00:11:09.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""there is the grid again.""" start="00:11:15.080" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""Select a thing""" start="00:11:19.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""We're reaching the end of the talk. The last fun thing I want to""" start="00:11:19.720" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""talk about is the Hyperbole support for select a thing.""" start="00:11:23.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""We'll show some use of selections together with web search.""" start="00:11:27.640" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Here I have brought up the GNU General Public License for""" start="00:11:33.440" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""just getting some text that I can show the select a thing""" start="00:11:43.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""functionality. Let's move the cursor over the word""" start="00:11:48.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""versions. Then I hit C-c RET, which is bound for the""" start="00:11:52.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""select a thing functionality.""" start="00:11:59.400" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Then it selects the word that the cursor was at. If I hit it""" start="00:12:03.120" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""again, C-c RET, it selects the line. Again, it""" start="00:12:11.040" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""selects the sentence, and again, the whole paragraph. So""" start="00:12:15.200" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""that's a convenient way to extend your searches--your""" start="00:12:22.360" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""selections, rather--in a buffer.""" start="00:12:26.160" video="mainVideo-hyperbole" id="subtitle"]]
[[!template new="1" text="""Web search""" start="00:12:33.818" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Looking at selections, how you can use that from web search...""" start="00:12:33.818" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Let's mark some text and then hit C-c /, which is bound""" start="00:12:38.199" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""for the web search. Here you see the Hyperbole menu system again.""" start="00:12:44.322" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""It's slightly customized with things that I use, but the basic""" start="00:12:48.543" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""menus are the ones supported by Hyperbole. Let's look at""" start="00:12:54.960" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""searching DuckDuckGo. It then populates the prompt with""" start="00:13:00.520" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""the selection.""" start="00:13:08.000" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""I have configured it so it uses my Firefox for these""" start="00:13:08.840" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""searches. Here we have the GNU General Public License""" start="00:13:17.920" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""shown. I can also show that for like me, being not a native""" start="00:13:23.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""English speaker, let's look what "take away your freedoms"""" start="00:13:30.600" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""means in Swedish. So C-c /, and then I hit translate.""" start="00:13:36.320" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""Take away your freedom, yeah, what's the translation for""" start="00:13:41.680" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""that? Using Google Translate,""" start="00:13:45.880" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""I get it translated to Swedish.""" start="00:13:48.583" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""That was the whole talk. We reached the end,""" start="00:13:50.800" video="mainVideo-hyperbole" id="subtitle"]]
[[!template text="""and thanks for listening. Bye.""" start="00:14:03.431" video="mainVideo-hyperbole" id="subtitle"]]
Captioner: sachac
Questions or comments? Please e-mail [matsl@gnu.org](mailto:matsl@gnu.org?subject=Comment%20for%20EmacsConf%202023%20hyperbole%3A%20Fun%20things%20with%20GNU%20Hyperbole)
<!-- End of emacsconf-publish-after-page -->
|