00:00.000 Introduction
00:41.299 The action key and the assist key
02:22.840 Composing an e-mail
03:44.600 Inserting implicit links
06:03.411 Window grid
11:19.720 Select a thing
12:33.818 Web search
04:51.194 Q: How is the log buffer generated?
05:21.051 Q: So, the "select a thing" C-c RET is similar to expand-region? How does it behave in codes (functions, class, ...)
07:09.972 Q: What is a recent tool that you find exciting to think about using in combination with Hyperbole, or would like to suggest using in combination with it?
10:00.255 On Ihor as the new maintainer for Org Mode
This talk will focus on a few small fun things you can do with Hyperbole
with less focus on going into details.
GNU Hyperbole is described as the Everyday Hypertextual
Information Manager which point in the direction of hypertext with
some inter linkage. It has all that but it also contains other
small and useful things. This talk will focus on the other
supported features and demo a sample of them.
About the speaker:
I'm Mats Lidell. Co-maintainer of GNU Hyperbole together with the
author Bob Weiner.
Q: So, the "select a thing" C-c RET is similar to expand-region? How does it behave in codes (functions, class, ...)
A: Behaves exactly the same.
Q:I know you Hyperbole devs are active and interested in sharing and
interoperating with other emacs tools. What is a recent tool that you find exciting to think about using in combination with Hyperbole, or would like to suggest using in combination with it?
A: Lately, focussing on making Hyperbole work with org-mode so
that they may interoperate.
The idea with Hyperbole is not to be better than everything
else, but to be a connector between the different modes.
ace-window is a small, great package that selects windows or
displays a buffer in them. Hyperbole extends this a bit letting
you theow a region or buffer to a window or replace its contents
with another buffer. This is documented in the Hyperbole
manual.
There's also C-@ (mark-org-subtree) which
interferes with Hyperbole
Can you explain how it interferes? Any conflict would
likely be a bug, not an incompatibility.
Sometimes, it does clash with other modes, especially M-RET.
Q: Hi Mats! Can I ask you a technical question about Hyperbole? Many
years ago I tried to learn hyperbole but I gave up after some
time... I remember that I found the code of the dispatcher very
hard to understand. Anyway, here is the question: if I type M-RET on
this button - {C-h h d d} - Hyperbole detects the extent of the
button and the kind of the button, and at some point it probably
calls a Lisp function with the argument "C-h h d d", and that
function makes emacs behave as if the user had typed C-h h d d. Do
you know what function is that?
A:See the defib of kbd-key in the hib-kbd.el file. That is an
implicit button type defined via defib which invokes an action
type of the same name defined with defact. Just read the code
and you'll see how it works.
Q: is hyperbole easy to turn on and off nowadays? I remember that many years ago just having it installed would make it change some behaviours globally
audience: yes just a hyperbole-mode to toggle or (hyperbole-mode -1) to make sure to disable
audience: I can usually just type M-x hyperbole to toggle it
Notes
Hyperbole looks like an incredible tool but I can't quite
seem to get it. These examples make me want to try again though
Same here, I actually leave it in the background and hit M-RET
from time to time
"take away your freedom" 🤔 "ta bort din
frihet" 🙁
nice talk! Hyperbole is in my TODO list for some
time already, I should bring it to the top...
I think that Hyperbole is a little diamon inside Emacas
ditto! it seems a wonderful grab-bag of random nifty
stuff
alzai: I always viewed it as this mysterious tool. Some
users recommend it but there's no simple overview of it. But I'd
say this was one.
gs-101: for me one of the problems with hyperbole is
the lack of examples in the documentation
We have written multiple example use files included in
Hyperbole, a full Texinfo manual and a number of videos but
maybe we should add a step-by-step how to use it for new users.
* NullNix suspects hyperbole window configs and winner window
configs might be... confusing if used together [11:47]
Maybe it could be jokingly summarized as
do-everything-at-point
well, I got lost around several types of buttons -
cheatsheet would be huge help for jumping in
[re transient discussion]: Very excited for the Org
move to transient.
sachac: In the org-update talk, Ihor mentioned wanting to move some
more of the Org functionality into libraries that other packages
could take advantage of, so it might be interesting to see what
might be good to share with each other.
Could this be akin to refactoring useful features from emacs
packages into emacs itself, especially if that feature is widely
used and useful across many packages.
one of those legendary packages i've just never quite
gotten around to learning
Yeah, Hyperbole does way too much to be integrated into core Emacs imo
I promise study Hyperbole for the next Emacsconf. Hyperbole it's a great tool
Hi, Emacs Conference. I'm Mats Lidell. I'm the maintainerof the GNU Hyperbole, together with the author, BobWeiner. The title of the talk is Fun Things with GNUHyperbole. With that, I intend to cover a different set ofsmall things that is in the package. So this will not be atutorial of Hyperbole.For that, you have to look for other sources.
This is a short talk, so let's get started withthe first thing. We're going to talk about scrolling andwith the subtitle using the end of line. If you're new toHyperbole, you need to know about the action key and assistkey. The action key is bound to M-RET and the assist keyis bound by default to M-RET with the prefix argument.Both of these keys are used for performing actions ondifferent contexts. In this case, we'll look whathappens when you use it on the end of a line.I have here the tutorial, the Emacs tutorial, and we seehere a line inserting and deleting. I move there and put thecursor on the end of the line. I then hit M-RET, theaction key, and it's moved to the top of the window. If I wantto move it to the last row on the window I can press C-u andthen M-RET, so I use the assist key. If I repeatedly hitM-RET, it will scroll so the first time it moves to thetop of the window, but if I at the top of the window hitM-RET again it scrolls.
Now over to the next thing.So next thing is to compose an email from an addressof the style of username@domain. Let's look intothat. Here I have entered the file in the Emacsdistribution vc.el. At its top it has a lot ofdifferent email addresses from the contributors. This is, inprinciple, a normal text file. By placing the cursor overone of these addresses and hitting the action key, Hyperboleidentifies that it's an email address and tries to open oropens the email composer with that, using that email address.If we'll go to the scratch buffer... Prepared another namethere so just to demonstrate it works in a buffer the sameway.
The next fun thing is insert implicit link. I'm going to giveyou an example with email how to share an implicit link withsomeone. An implicit link is a text pattern, just as we sawwith the email address, something that Hyperbolerecognizes just by how the text looks. Here we have theexample. We have started writing an email tothe user@domain, and in the other window below,the vc.el file is open. It's now opened within the search path,the load path. That's why it's compressed. I want to tellmy friend about the credit section. First, the cursor isplaced here at your credit section. I move over to the otherwindow and I use the Hyperbole menu system. By hittingC-h h, I go into the menu system. I press i for getting ani-button, implicit button, and I press l for creating a link.And there you have the link. What does the link mean? Well, itmeans that in the load for Hyperbole, Emacs lib files arespecial. If they are in the load path, they will use this shortformat. At the end, you have the L for the line number 24 andthe C for the column. If I hit the action key on this line, youcan see that the cursor moves over to the credit section. wecan remove that file just to make sure that it works and movethe cursor a little bit and hit M-RET again.M-RET and we moved over there. I mean, given thatthe receiver has a similar setup with Emacs, et cetera, thatlink will work there as well.
Hi, Emacs Conference. It's anew recording day, the sun is shining, I'm wearing a newt-shirt but we're still cracking on with fun things inHyperbole. Our next subject is window grid. WithHyperbole, it's easy to create a grid of windows. I'm going toshow how you can do that and also moving on I'm going to showhow you can use Dired or IBuffer to select what buffers toshow in the grid. I will also show how you can saveconfiguration for use later.You reach the window grid functionality through thehyperbole menu system. C-h h screen. There you havetwo submenus, frame control and window control. The gridfunctionality is part of both of these submenus. You canselect either, but I'll go with window control here.Down to the left, we see the @ character and the grid ofwindows, so hit @. I'm prompted with the number ofcolumns and rows for the window grid.I select the 3x3 grid.We get the 3x3 grid, and it's populated with buffers I haveloaded in Emacs.Let's go back here to the scratch buffer.Now, using all those keystrokes for the menu system is alittle bit cumbersome, so there is a shortcut: C-c @.If I use that, C-c @, I get immediately prompted thenumber of rows and columns. If i use a prefix arg 0,C-u 0 C-c @, I get also prompted with what type ofbuffers I want to have populated in my grid. Let's selectthe emacs-lisp-mode. Again we do a 3x3 grid. Hereyou see all the grids. The whole grid is populated with EmacsLisp buffers.To get even finer control, you can go into IBuffer. I havepre-selected here all the Emacs Lisp files I have. Let'spick a few. I mark them like this. Let's pick three or maybepick four. Then I hit the @ sign, and then itautomatically shows a 2x2 gridwith the selected buffers.We can go in again and maybe select a few more and do the samething: hit add and it now becomes a 3x2 grid with these buffersThe same thing is possible through Dired.Let's just mark quite a few here and then hit @, and then itpopulates it with all the buffers. You see that if it's notenough buffer to fill the whole grid, there are blank grids orrectangles in the grid.Now going back and forth like this, maybe if you want to workon some file and and then go over to Dired again to select this,can be a little bit cumbersome. You maybe have prepared agrid with the buffers you want to have there.Hyperbole comes with a simple window configuration support.You reach that the same way through the Hyperbole menu, soC-h h and window, w for window, and there you can hit save tosave the configuration to a ring of configurations.Let's go back to the scratch buffer again here. Now wewant to bring up our window configuration again, so wehit C-h h and window, and yank in the configuration. Boom,there is the grid again.
We're reaching the end of the talk. The last fun thing I want totalk about is the Hyperbole support for select a thing.We'll show some use of selections together with web search.Here I have brought up the GNU General Public License forjust getting some text that I can show the select a thingfunctionality. Let's move the cursor over the wordversions. Then I hit C-c RET, which is bound for theselect a thing functionality.Then it selects the word that the cursor was at. If I hit itagain, C-c RET, it selects the line. Again, itselects the sentence, and again, the whole paragraph. Sothat's a convenient way to extend your searches--yourselections, rather--in a buffer.
Looking at selections, how you can use that from web search...Let's mark some text and then hit C-c /, which is boundfor the web search. Here you see the Hyperbole menu system again.It's slightly customized with things that I use, but the basicmenus are the ones supported by Hyperbole. Let's look atsearching DuckDuckGo. It then populates the prompt withthe selection.I have configured it so it uses my Firefox for thesesearches. Here we have the GNU General Public Licenseshown. I can also show that for like me, being not a nativeEnglish speaker, let's look what "take away your freedoms"means in Swedish. So C-c /, and then I hit translate.Take away your freedom, yeah, what's the translation forthat? Using Google Translate,I get it translated to Swedish.That was the whole talk. We reached the end,and thanks for listening. Bye.
Captioner: sachac
Q&A transcript (unedited)
And I believe we are live. Hi, Mats, how are you doing? Oh, I'mfine. It's a pleasure to see you again after last year. And Iwas trying to think about it. We saw you last year, but didn'twe see you as well in 2022? Yes. This is my third year. Yeah,well, thank you for being a regular at EmacsConf. It'salways a pleasure to have you chat about hyperbole.Although I think you're the only one chatting abouthyperbole this year compared to last year. Yes,unfortunately, that's, yeah, Bob has some family issues.So yeah, I'm here, but I'm here. Yeah, but we are happy to haveyou here. And as I was saying before, I'm not sure if you were,you had the time to watch the previous talk by Mohsen, youknow, you had, there were plenty of ideas, I think that werevery similar to what Hyperbole is trying to do by havingbuttons and having stuff that can be in any other mode thatwould allow you to supplement a coding file with extrainformation. So the ideas are living on. And even thoughhyperbole is one thing, I feel like other packages are alsotaking a lot of inspiration for it. So congratulations onbeing an inspiration, I suppose. Oh, thanks.Unfortunately, I have not had any time to watch anything ofthe Emacs conference since apparently my life is like everytime it's Emacs conference, I do something else. So I've beenjust moving this weekend. So, I'm in a new apartment, but I'mconnected and everything seems to work okay. So, I can'trelate to what we said in any of the other talks, I'm afraid.So, sorry about that. No, that's okay. No, but that'scompletely fine, because you may be able to watch the talksat any point later on, because I'll remind the viewers thatthe talks are currently available on EmacsConf or thepre-recorded one. And I think we only had one live talkyesterday. All of them are already available withsubtitles and all the funny stuff that we usually put. Sothat's an invitation for people to watch it. All right. So,Mats, before we start with the questions, I see people in theprocess of writing them. Was there anything else you wantedto add on top of your presentation? Maybe some supplementsor whatnot? No, no. Nothing to add. Right. I mean, this yearwas more a bag of tricks, some new stuff that you'veimplemented in Hyperbole. And it's fun because I see the UIthat you have for some of those modes. And earlier, youweren't able to watch those talks, but we were talking a lotabout Transient and about what it allows you to do in terms ofinteractivity. I'm actually familiar with Transient. No,no, no. It's a mode written by Tarsius, so Jonas Bernoulli,the person behind Magit, and it's a very nice way to createmenus for interactive setups. So, if you are interested inperhaps augmenting what you currently have withHyperbole, it might be nice to look into Transient because Ithink this is heading towards eventually being merged intothe core of Emacs. I mean, don't quote me on this. and I'm notsure how Tarsius feels about it, but because of theadoption, because Magit obviously uses transient, Org istrying to make a move towards adopting transient, it feelslike Hyperbole would do well as well to adopt it because it'sstarting to become a grammar of general UI at this point.Yeah, now when you mention it, I remember because I'm a heavyuser of Magic, of course. So I know Transient that way. I knowalso that people have been complaining about Hyperbole'smenu system. You know that Hyperbole reach back tosomething like 1993, so it has some maybe things that are notmodern in that sense. So we have it on the plate to maybe lookinto these things and how we can sort of make things modern,etc. Sure, but it's completely fine to take your time. Youdon't necessarily have to follow the latest fads when itcomes to completion engines or interactive engines likeTransient is. I'm not actually sure how you would callTransient. Is this a UI maker, an interaction engine? Idon't know. I'll need to ask Tarsius at some point. Allright. Okay. Okay so let's move on to the questions. We'vegot a couple of them and for the Q&A we'll have about fiveminutes and 30 seconds until we got to lunch. So startingwith the first question.
How is the log buffer generated inyour presentation? But it's a very quick answer to this.We recommend at EmacsConf that speakers use theinteraction-log package, which allows you to have aslightly prettier lossage. Lossage being in Emacs how youcall the comments that you've used. And so if you'reinterested in using this for your own presentation,interaction log, and you'll be able to find it fairlyeasily.Moving to the next question.
[00:05:21.051]Q: So, the "select a thing" C-c RET is similar to expand-region? How does it behave in codes (functions, class, ...)
So the selector thing C-c RETis similar to expand-region. How does it behave incodes i.e functions or class?Well I think it behaves exactly the same. I mean in theIn any sort of buffer, it might depend on whatconstitutes a word, et cetera, and a sentence in the mood.That's how I would say it. Right.I'm just, in that sense, I'm just a user of the function. Ihaven't implemented it. I haven't tested it more than that.We can do this as a demo that you start with maybe select asmall thing and by hitting it over and over again, you selectmore and more. Yeah, but it's completely fine sometimes tomerely be a user of something, you know. It's easy. It's atestament to how amazing Emacs is because everything iswritten in Lisp in the background, that as soon as you startbecoming a maintainer of something, you kind of expect it tojust be able to understand everything else. And whilst it'stechnically true, the limiter here is the amount of timethat you can invest looking at the definitions,understanding what they do, and sadly we don't have the timeto do all of this. And especially with Hyperbole, which isobviously interacting with major modes in something thatis more involved than Org mode, for instance. We do haveanother question. So, I know you Hyperbole devs are activeand interested in sharing and interoperating with otherEmacs tools.
[00:07:09.972]Q: What is a recent tool that you find exciting to think about using in combination with Hyperbole, or would like to suggest using in combination with it?
What is a recent tool that you find exciting tothink about using in combination with Hyperbole or wouldlike to suggest using in combination with it? Well, latelywe've been focusing a lot of sort of trying to make Hyperbolework together with Org Mode and in in a good way so they cansort of, I mean... The idea with Hyperbole is not to be betterthan everything else, but more to be like the glue or spiderthat could integrate different modes in a good way together.So that being top of everything. And Org is a verypopular mode, and there are a lot of sub-modes, or whateveryou can call it, with Org for information management. And wewould want Hyperbole to work together with Org in a good way,so Org users could benefit from Hyperbole as well. So we putin some effort in that. But I think there's a lot of way to go.There's much more that can be done there as well becausedifferent modes can easily compete in a bad way in thedetails. So it's a little bit of a tricky thing, especiallylike we have this and how probably we have this M-RETfor the action production key and that's also used in manymodes. So we would really, in the best of words, we would likeEmacs to sort of come to some agreement on using of theM-RET in a good way for modes to sort of be able to work andlive together. Yeah, I mean it's a tough thing to share thekey bindings and the grammar of interaction betweenpackages because you tell me M-RET, I don't want youto touch M-RET. For me it's just inserting a new lineand not adding indentation at the start and everyone isgoing to have their own you know, feelings and thoughts aboutthis, so it's really hard to impose any kind of system onthis. But I'm glad to hear that you're looking intointeraction with Org Mode because I remember the questionswe were having on your first conference when people wereasking, oh I'm so glad that you're talking about Hyperbolebecause the only way I'm interacting with it is when peoplechat about Org Mode and then whenever we had announcementsabout Hyperbole, be it on Reddit, be it on Hacker News,people would say, but don't we already have Org Mode? And wewon't get into the topic again, because I think you've done awonderful job of explaining the differences in previousyears. And today, the conference, your talk at theconference also made it obvious that it's doing somethingthat Org Mode is not able to do. But ultimately, being able tointerface between the two is something great.
[00:10:00.255]On Ihor as the new maintainer for Org Mode
And I kind of wanted to ask you as well the question,because you haven'tseen the talk, but yesterday we had the announcement thatIhor Radchenko was becoming the new maintainer of Org Mode.So obviously, a new maintainer introduces idea of changesof, you know, philosophy and strategy and all this. Is thissomehow on your end with Hyperbole inspiring you perhaps toalso innovate in a sense to maybe try to change the way somethings are done?Hmm, tricky question. I know, right? Yeah, no, well, I don'tknow.I don't know if it answers the question, but we have thisidea that we meet and work from our point of view. And then wepick up maybe details from the outside world. So we're notheavily looking into what happens in the rest of the worldwhen it comes to Emacs and personal informationmanagement, etc. But but we do pick up some ideas.Sometimes. But yeah, we mostly do hacking and then we want towe meet once a week and work on hyperbole and you know, soYeah, that's already very cool. And the reason I'mmentioning this is not because I know that you are operatingin a little bit of a silo when it comes to all of Hyperbole, butit's always nice for me personally to see a lot of energybeing brought in by people. Whenever there's a new majorversion being published, be it Org Mode or be it Hyperbole,people are excited. There's a lot of energy in here becausepeople are chatting about what you're doing. And that's whyI find that people, a new maintenanceship for Org Modeactually benefits Hyperbole in a way because you get a lot ofexcitement, a lot of people thinking and bringing ideas tothe table. And I think it's a prime time to actually try I'musing the word stealing, but in a very nice way, stealing interms of floss, stealing some ideas and trying to see if youcan run with them on your own end. And that's also why I wassuggesting transient, because transient looks like it'son its path to reach core at some point. And it would be nice ifyou had the idea early on to integrate with it, because itmight save you time later on and make your user happy,because they can find the same grammar between the Git,between org mode, and between hyperbole. All right. Isthere... I don't think... Yeah, go on, please. Yeah, I justwant to add on that, that, I mean, as an ultimate goal, in thefar distance, we would want sort of Hyperbole or hyperboletype of functionality be part of the core Emacs. So in thatsense, it's sort of totally sort of okay with us thatdifferent packages steal ideas and try to merge them intosort of the core system. Yeah. All right, I don't see any morequestions, so I think we can move to close. Actually, we'reactually three minutes over time, so I'm glad we managed todiscuss a little more, but that's fine. Mats, do you haveany last words? I'll try it out. Okay, well, then, you heardit, everyone. Just try it out. Try it out, and if you like it,you can join us on SundaysRight. And every Sunday, well, if you do not know what to do,you know, here's an idea for you. All right. Thank you somuch, Mats, for coming again to Emacs Conf. And we lookforward, perhaps, to seeing you next year. Yes. I'll bethere. Hopefully, I can see some of the presentations livethen. OK. That's OK. You've got the entire year to catch up onthe ones you haven't seen this year and next year. But you'llhave the time to catch another one live. All right. Yes.Great! For the folks watching, we will be taking a break, aone hour and one minute break. We'll be back at 1 p.m. EST and Ithink if my UTC conversion is working right, it should be 6p.m. UTC, so at least in one hour. All right, see you in a bitfolks! Oh yes, and sorry, I've got a little elf speakingin my ears. In case you're interested in discussing furtherhyperbole with Mats, Mats is in the room right now and I seepeople have joined the BBB chat. So if you want to join andchat directly with Mats, I'm sure Mats would be more thanhappy to answer your questions. And obviously everythinghas been recorded and will be published later on. But for me,I will use the break to rest a little bit and I'll be back in theafternoon. All right, see you folks. Bye, take a break.Okay.