|
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<a name="buttons-mainVideo-transcript"></a>
# Transcript
[[!template new="1" text="Hi everyone! I'm Mats Liddell." start="00:00:00.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="In this talk, I will show" start="00:00:06.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="how you can link to personal data" start="00:00:07.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="using Hyperbole's support for implicit button types." start="00:00:09.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Before starting, a few words about me." start="00:00:13.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="I work as a software engineer," start="00:00:16.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and in my spare time" start="00:00:18.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="I'm co-maintaining the Hyperbole package" start="00:00:19.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="together with the package author Bob Weiner." start="00:00:21.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Hyperbole dates back to 1993," start="00:00:24.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and have had some inactive years in the past," start="00:00:27.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but work is now active again." start="00:00:29.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The package is available" start="00:00:31.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="through the GNU ELPA package archive." start="00:00:33.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The talk will focus on" start="00:00:36.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="creation of implicit button types." start="00:00:37.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="For more info on Hyperbole," start="00:00:39.600" video="mainVideo-buttons" id="subtitle"]]
[[!template text="listen to other presentations" start="00:00:41.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and check out the package documentation." start="00:00:43.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="What I want you to take with you from this talk is" start="00:00:46.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that the implicit button types" start="00:00:50.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="can make patterns in your files into buttons;" start="00:00:51.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and that new implicit button types" start="00:00:54.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="can quickly be created by using" start="00:00:56.600" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the `defil' and the `defal' macros." start="00:00:58.480" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="So what is an implicit button type?" start="00:01:01.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="I think of it as a text pattern" start="00:01:05.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that has some extended meaning." start="00:01:06.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="When you see the pattern in the text," start="00:01:08.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you can think of it as a button type." start="00:01:10.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="When you press the button," start="00:01:12.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="something related to that meaning happens." start="00:01:13.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It can be jumping to some place," start="00:01:16.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="opening an external tool, doing some computation." start="00:01:19.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So there can be some action" start="00:01:22.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="associated with the pattern." start="00:01:24.160" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="To make it clear, let's look at some examples." start="00:01:29.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Let's start with something that is maybe so obvious" start="00:01:33.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that you don't even think of it as a pattern: a file name." start="00:01:36.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="When you see such a string in text," start="00:01:39.600" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you will naturally associate it with a file on disk," start="00:01:41.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and if you would click on it," start="00:01:45.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you would probably expect that file to open." start="00:01:46.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="In the first sentence on the slide," start="00:01:52.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you might recognize the file name" start="00:01:55.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="for the bash initialization file, ~/.bashrc." start="00:01:56.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Hyperbole comes with built-in support" start="00:02:01.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="for recognizing files and directory path names" start="00:02:03.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="as implicit button types in text." start="00:02:06.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="For Hyperbole to take action on the button type," start="00:02:08.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you move the cursor within the button" start="00:02:11.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and press M-RET or use a mouse click." start="00:02:13.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So let's try that." start="00:02:16.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Similar for the path, /usr/local in the next sentence." start="00:02:22.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="That will open the corresponding" start="00:02:27.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="directory using dired-mode." start="00:02:29.520" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="Other examples of built-in implicit button types" start="00:02:37.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that Hyperbole recognizes are email addresses," start="00:02:39.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="web addresses, requests for comment documents" start="00:02:43.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="in the form of RFC followed by a number," start="00:02:47.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="GNU debbugs issues, plus many more." start="00:02:50.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="These are some examples" start="00:02:53.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="of implicit button types with built-in support." start="00:02:55.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="I list them here to give you an idea" start="00:02:58.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="how the text pattern in itself is enough" start="00:02:59.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="for the system to recognize it" start="00:03:02.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="as something actionable." start="00:03:03.960" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="So as shown, Hyperbole has built-in support" start="00:03:10.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="for implicit buttons." start="00:03:12.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="There's only one problem here." start="00:03:14.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The behavior is predefined." start="00:03:16.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="There is of course a trade off." start="00:03:17.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It is convenient to get" start="00:03:20.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="many button types out of the box" start="00:03:21.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="with likely good standard behavior" start="00:03:23.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and that works in many places." start="00:03:25.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="But what if you would want to create" start="00:03:27.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="your own completely new mapping," start="00:03:29.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="possibly to your own data?" start="00:03:31.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It is here that Hyperbole's support for creating" start="00:03:32.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="new implicit button types comes in." start="00:03:38.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="For the full pattern matching button type," start="00:03:41.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="like for the filename and examples we just looked at," start="00:03:43.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you need to define the implicit button" start="00:03:46.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="using the macro, `defib'." start="00:03:48.755" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The downside of that is" start="00:03:50.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you need to code at the elisp level." start="00:03:53.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="However, if you are creating a new pattern" start="00:03:54.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that has well-defined delimiters," start="00:03:57.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="there is support for that in an easier way." start="00:03:59.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="These support functions, or rather macros," start="00:04:01.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="are `defil' and `defal'." start="00:04:03.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="We will look at those macros soon," start="00:04:06.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but first, my definition of personal data." start="00:04:08.440" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="I think of personal data as something" start="00:04:13.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that you would like to link to," start="00:04:18.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but it's not necessarily in a form" start="00:04:19.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="supported by any known tool." start="00:04:21.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It might be stored on a web server, local storage," start="00:04:23.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="or could even be some computation" start="00:04:26.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="rather than a link." start="00:04:28.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="What all these cases have in common is that" start="00:04:29.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="you want to be able to reference it" start="00:04:32.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="in a short, and for you, descriptive way." start="00:04:34.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So when you write text, you can use" start="00:04:36.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="a new implicit type to create the connection." start="00:04:38.960" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="This might be a bit abstract," start="00:04:44.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="so let's look at an example." start="00:04:46.600" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Suppose you have a flat file structure" start="00:04:48.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="with some notes in each file." start="00:04:51.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It can look like this." start="00:04:52.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="In the data folder, we have two files" start="00:04:54.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that represents the notes we have taken." start="00:04:57.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="We now want to be able to link to these notes" start="00:05:00.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="from outside of the data folder." start="00:05:02.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Let's make an implicit button type" start="00:05:07.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that opens a file in this structure." start="00:05:08.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="To make the pattern stand out in text," start="00:05:10.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="we use double braces as start and stop delimiters." start="00:05:13.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="An implicit button instance" start="00:05:16.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="would then look like this." start="00:05:20.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="We can create that using the `defil' macro like this." start="00:05:22.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="This invocation of the field" start="00:05:27.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="creates a button type "demo-link-to-file"" start="00:05:31.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="with the start delimiter of "{{"" start="00:05:34.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and then delimiters of "}}"," start="00:05:37.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the regular expression ".*" pattern" start="00:05:40.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to match everything between the delimiters," start="00:05:43.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and finally, the action defined by the link expression." start="00:05:45.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Pattern substitution is performed" start="00:05:48.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="on the link expression before evaluation" start="00:05:52.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="so that the text that is in between the delimiters" start="00:05:54.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="is inserted where the "\\&" is in the link expression." start="00:05:57.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So all in all, implicit type instance will result in" start="00:06:02.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the link expression of "~/data/FileA"," start="00:06:07.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="which we recognize as a file path." start="00:06:11.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="With a single-line expression," start="00:06:14.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="we have created our own hyperbutton syntax" start="00:06:18.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that we can use in any Emacs buffer" start="00:06:21.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to link to this custom set of data." start="00:06:23.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So let's evaluate the defil and use it." start="00:06:25.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="I have prepared the files so that they already" start="00:06:30.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="contain some text and implicit links." start="00:06:33.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So from the presentation, we can go to FileA," start="00:06:36.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and from there to fileB." start="00:06:43.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Since the Hyperbole path expression" start="00:06:48.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="supports outline structures, we can," start="00:06:51.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="as an extra bonus, reference directly" start="00:06:53.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the headers in the files," start="00:06:55.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="so we can, for example, link directly" start="00:06:57.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to "More Notes" in FileB." start="00:07:00.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="We have now created a simple info system." start="00:07:02.600" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="Looking deeper at the link expression," start="00:07:10.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="it can be of four different types:" start="00:07:16.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="A file path expression," start="00:07:19.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="as we have already looked at;" start="00:07:22.040" video="mainVideo-buttons" id="subtitle"]]
[[!template text="a brace-delimited key series," start="00:07:23.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that is, a series of command keys" start="00:07:25.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="for performing some action," start="00:07:27.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="much like a keyboard macro;" start="00:07:29.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="An URL; or a function that takes one argument," start="00:07:30.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="which will be given the button text as input." start="00:07:36.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The URL link expression allows you" start="00:07:38.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to link to web pages." start="00:07:42.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So if the data you want to link to" start="00:07:44.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="is accessible through the Web" start="00:07:46.560" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and the URL can be constructed" start="00:07:48.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="from the button text in a meaningful way," start="00:07:50.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="it is possible to do that." start="00:07:53.000" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="Let's create the button type" start="00:07:54.520" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that links to GNU software." start="00:07:56.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The URL to the GNU software catalog" start="00:07:57.720" video="mainVideo-buttons" id="subtitle"]]
[[!template text="is www.gnu.org/software," start="00:08:01.089" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and with what we know about the field," start="00:08:04.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="it is easy to create the button type for that." start="00:08:07.440" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It can look like this." start="00:08:09.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="And here are two possible buttons" start="00:08:11.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="linking to Emacs and Hyperbole." start="00:08:16.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So let's again evaluate the defil and use it." start="00:08:19.320" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Please note that not all GNU software" start="00:08:24.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="is under that URL," start="00:08:28.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="so this simple definition will not work" start="00:08:29.000" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to link to everything." start="00:08:31.000" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="To highlight the fact that the button action" start="00:08:32.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="does not have to be a link," start="00:08:37.280" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but can be any action," start="00:08:39.080" video="mainVideo-buttons" id="subtitle"]]
[[!template text="let's look at a math example." start="00:08:40.600" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Here is the button type that does some math" start="00:08:42.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="and writes the result in the message area." start="00:08:44.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Let's evaluate and use it." start="00:08:47.480" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="Before ending, I would like to mention" start="00:08:57.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the defal macro." start="00:08:59.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It is similar to the defil macro," start="00:09:00.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but simpler, since it uses a form" start="00:09:02.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="of the implicit button type with no delimiters." start="00:09:04.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="It is simply <TYPE LINK-EXPR>." start="00:09:07.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="So the implicit button type contains the link type" start="00:09:14.800" video="mainVideo-buttons" id="subtitle"]]
[[!template text="in clear text." start="00:09:17.920" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Our recent FSF software button" start="00:09:18.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="would be created like this." start="00:09:23.120" video="mainVideo-buttons" id="subtitle"]]
[[!template text="And it would be instantiated in text like this." start="00:09:24.855" video="mainVideo-buttons" id="subtitle"]]
[[!template new="1" text="I have shown how you," start="00:09:29.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="with the help of the defil macro in Hyperbole," start="00:09:34.960" video="mainVideo-buttons" id="subtitle"]]
[[!template text="quickly can create implicit buttons." start="00:09:37.840" video="mainVideo-buttons" id="subtitle"]]
[[!template text="With those buttons, you can link" start="00:09:40.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to your personal information" start="00:09:41.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="in the form it may have." start="00:09:43.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="By the nature of the implicit buttons," start="00:09:44.160" video="mainVideo-buttons" id="subtitle"]]
[[!template text="those can be used from any file in Emacs." start="00:09:47.200" video="mainVideo-buttons" id="subtitle"]]
[[!template text="The button types can be" start="00:09:49.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="created to be used long term," start="00:09:52.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="but even short term use within the session is possible," start="00:09:54.640" video="mainVideo-buttons" id="subtitle"]]
[[!template text="since the creation is simple and quick." start="00:09:57.680" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Inspired by this, I hope you will find ways" start="00:09:59.880" video="mainVideo-buttons" id="subtitle"]]
[[!template text="to create implicit buttons" start="00:10:03.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="that will support you getting to your information." start="00:10:04.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="For the simplest cases," start="00:10:07.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="the field and the file macros might be enough." start="00:10:09.240" video="mainVideo-buttons" id="subtitle"]]
[[!template text="For more complicated cases," start="00:10:11.400" video="mainVideo-buttons" id="subtitle"]]
[[!template text="using a tailor-made function can be an option." start="00:10:13.360" video="mainVideo-buttons" id="subtitle"]]
[[!template text="If you know Elisp, use the defib macro" start="00:10:15.760" video="mainVideo-buttons" id="subtitle"]]
[[!template text="which gives you full control over the button type." start="00:10:19.480" video="mainVideo-buttons" id="subtitle"]]
[[!template text="Thank you." start="00:10:22.240" video="mainVideo-buttons" id="subtitle"]]
Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20buttons%3A%20Linking%20personal%20info%20with%20Hyperbole%20implicit%20buttons)
<!-- End of emacsconf-publish-after-page -->
|