diff options
Diffstat (limited to '2025/info/reader-after.md')
| -rw-r--r-- | 2025/info/reader-after.md | 365 |
1 files changed, 364 insertions, 1 deletions
diff --git a/2025/info/reader-after.md b/2025/info/reader-after.md index de969ba2..d6e736d0 100644 --- a/2025/info/reader-after.md +++ b/2025/info/reader-after.md @@ -823,7 +823,370 @@ Captioner: jay_bird -Questions or comments? Please e-mail [divya@subvertising.org](mailto:divya@subvertising.org?subject=Comment%20for%20EmacsConf%202023%20reader%3A%20An%20introduction%20to%20the%20Emacs%20Reader) +<div class="transcript transcript-qanda"><a name="reader-qanda-transcript"></a><h1>Q&A transcript (unedited)</h1> + +[[!template text="""The first question,""" start="00:00:00.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and I'm reading from the etherpad here,""" start="00:00:01.480" video="qanda-reader" id="subtitle"]] +[[!template text="""is there a scope for integrating""" start="00:00:03.600" video="qanda-reader" id="subtitle"]] +[[!template text="""the C library to Emacs itself""" start="00:00:05.520" video="qanda-reader" id="subtitle"]] +[[!template text="""with MuPDF becoming an optional dependency?""" start="00:00:07.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Right, so integrating the C library into Emacs itself""" start="00:00:13.160" video="qanda-reader" id="subtitle"]] +[[!template text="""is like having MuPDF inside Emacs source tree.""" start="00:00:18.720" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't think Emacs devs would be inclined to do that,""" start="00:00:24.360" video="qanda-reader" id="subtitle"]] +[[!template text="""and I don't think we really need it.""" start="00:00:28.000" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, I think as it is, uh, Emacs""" start="00:00:30.080" video="qanda-reader" id="subtitle"]] +[[!template text="""with doc view needs new tool, which is something you need""" start="00:00:33.040" video="qanda-reader" id="subtitle"]] +[[!template text="""to install from new PDF anyways.""" start="00:00:36.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So, um, I think it is almost expected""" start="00:00:38.920" video="qanda-reader" id="subtitle"]] +[[!template text="""that you install new PDF from system package manager.""" start="00:00:42.600" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, and I think that as it is, is better""" start="00:00:46.280" video="qanda-reader" id="subtitle"]] +[[!template text="""because we don't really need to have""" start="00:00:49.120" video="qanda-reader" id="subtitle"]] +[[!template text="""a whole PDF engine inside Emacs.""" start="00:00:51.000" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, Next question also from the pad,""" start="00:00:53.440" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module some great,""" start="00:00:59.880" video="qanda-reader" id="subtitle"]] +[[!template text="""and it's amazing that they've been there since 2017.""" start="00:01:01.760" video="qanda-reader" id="subtitle"]] +[[!template text="""Why do you think they've been slowly""" start="00:01:06.640" video="qanda-reader" id="subtitle"]] +[[!template text="""so slow to get adopted?""" start="00:01:09.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Is there a prior art with them? Right?""" start="00:01:11.560" video="qanda-reader" id="subtitle"]] +[[!template text="""That's a good question.""" start="00:01:14.280" video="qanda-reader" id="subtitle"]] +[[!template text="""Actually, I think 1 of the reasons is that.""" start="00:01:16.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Most of the time, I think people love Emacs""" start="00:01:22.120" video="qanda-reader" id="subtitle"]] +[[!template text="""because they can do so much with Elisp.""" start="00:01:24.920" video="qanda-reader" id="subtitle"]] +[[!template text="""I think certainly there is a bias""" start="00:01:27.520" video="qanda-reader" id="subtitle"]] +[[!template text="""towards trying to do things with Elisp.""" start="00:01:28.920" video="qanda-reader" id="subtitle"]] +[[!template text="""I think there's only a sort of specific class of problems""" start="00:01:31.320" video="qanda-reader" id="subtitle"]] +[[!template text="""that you can solve with dynamic modules,""" start="00:01:35.040" video="qanda-reader" id="subtitle"]] +[[!template text="""such as this, where you want to use a native library""" start="00:01:36.880" video="qanda-reader" id="subtitle"]] +[[!template text="""to do something in a faster, better way.""" start="00:01:40.880" video="qanda-reader" id="subtitle"]] +[[!template text="""I use that quite a lot.""" start="00:01:44.240" video="qanda-reader" id="subtitle"]] +[[!template text="""There's of course libvterm, which uses a dynamic module""" start="00:01:48.960" video="qanda-reader" id="subtitle"]] +[[!template text="""and it does it really well.""" start="00:01:53.320" video="qanda-reader" id="subtitle"]] +[[!template text="""And I think there's another one, a plotting library""" start="00:01:55.120" video="qanda-reader" id="subtitle"]] +[[!template text="""or package in Emacs that was using something from Python.""" start="00:02:00.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So, dynamic modules are good,""" start="00:02:05.880" video="qanda-reader" id="subtitle"]] +[[!template text="""but I think they don't really come""" start="00:02:07.880" video="qanda-reader" id="subtitle"]] +[[!template text="""to the surface level packages, your day-to-day packages,""" start="00:02:10.040" video="qanda-reader" id="subtitle"]] +[[!template text="""because most of the day-to-day packages that we use in Emacs""" start="00:02:13.975" video="qanda-reader" id="subtitle"]] +[[!template text="""can be done with Elisp. So, unless you really need""" start="00:02:17.360" video="qanda-reader" id="subtitle"]] +[[!template text="""something system-level efficient,""" start="00:02:20.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Most of the time, you don't want to write C or C++ or something.""" start="00:02:23.200" video="qanda-reader" id="subtitle"]] +[[!template text="""But there is actually a really nice Rust crate for native modules,""" start="00:02:29.520" video="qanda-reader" id="subtitle"]] +[[!template text="""and there's a really nice Haskell package.""" start="00:02:34.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So there's actually really good support""" start="00:02:37.240" video="qanda-reader" id="subtitle"]] +[[!template text="""for multiple languages.""" start="00:02:39.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So it's there, it's just not used as much. Yeah.""" start="00:02:41.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So what you're saying is""" start="00:02:45.800" video="qanda-reader" id="subtitle"]] +[[!template text="""if Elisp weren't so simple to learn and easy to use""" start="00:02:47.040" video="qanda-reader" id="subtitle"]] +[[!template text="""and so fully featured,""" start="00:02:51.280" video="qanda-reader" id="subtitle"]] +[[!template text="""we'd get a lot more mileage""" start="00:02:52.880" video="qanda-reader" id="subtitle"]] +[[!template text="""out of this super cool dynamic module feature.""" start="00:02:54.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Cool I'll take I'll bring in the next question.""" start="00:02:57.800" video="qanda-reader" id="subtitle"]] +[[!template text="""How how? How difficult is our PDF tools to install?""" start="00:03:02.160" video="qanda-reader" id="subtitle"]] +[[!template text="""The questioner is installing it""" start="00:03:07.400" video="qanda-reader" id="subtitle"]] +[[!template text="""using the built-in package manager""" start="00:03:10.440" video="qanda-reader" id="subtitle"]] +[[!template text="""looking at the Emacs reader installation instructions""" start="00:03:12.520" video="qanda-reader" id="subtitle"]] +[[!template text="""It doesn't necessarily cover""" start="00:03:16.680" video="qanda-reader" id="subtitle"]] +[[!template text="""how how to install that easily""" start="00:03:18.480" video="qanda-reader" id="subtitle"]] +[[!template text="""person is not using use package or straight and Okay.""" start="00:03:20.400" video="qanda-reader" id="subtitle"]] +[[!template text="""Oh, and they say that you didn't""" start="00:03:25.680" video="qanda-reader" id="subtitle"]] +[[!template text="""catch much of this in the presentation.""" start="00:03:27.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay, so you want me to skip that or should I answer?""" start="00:03:32.440" video="qanda-reader" id="subtitle"]] +[[!template text="""It's your choice. If you would like to say more.""" start="00:03:35.080" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, I think just as a thing,""" start="00:03:38.160" video="qanda-reader" id="subtitle"]] +[[!template text="""the reason I said PDF tools is difficult""" start="00:03:40.520" video="qanda-reader" id="subtitle"]] +[[!template text="""is PDF tools has a huge list of dependencies.""" start="00:03:43.320" video="qanda-reader" id="subtitle"]] +[[!template text="""The only thing Emacs Vita depends""" start="00:03:45.840" video="qanda-reader" id="subtitle"]] +[[!template text="""on is new PDF, nothing else. There's a single dependency.""" start="00:03:47.640" video="qanda-reader" id="subtitle"]] +[[!template text="""PDF tools depends on a lot of things""" start="00:03:50.600" video="qanda-reader" id="subtitle"]] +[[!template text="""and they have their own server,""" start="00:03:54.480" video="qanda-reader" id="subtitle"]] +[[!template text="""which is packaged as a system package,""" start="00:03:57.760" video="qanda-reader" id="subtitle"]] +[[!template text="""which you don't really find everywhere.""" start="00:04:00.040" video="qanda-reader" id="subtitle"]] +[[!template text="""And there's like systems, the new Linux systems""" start="00:04:02.360" video="qanda-reader" id="subtitle"]] +[[!template text="""where the package is very difficult to build""" start="00:04:05.040" video="qanda-reader" id="subtitle"]] +[[!template text="""because of so many dependencies.""" start="00:04:07.360" video="qanda-reader" id="subtitle"]] +[[!template text="""So my goal was to sort of reduce""" start="00:04:10.080" video="qanda-reader" id="subtitle"]] +[[!template text="""the number of dependencies.""" start="00:04:13.160" video="qanda-reader" id="subtitle"]] +[[!template text="""And then right now it's very, it's sort of a key""" start="00:04:14.840" video="qanda-reader" id="subtitle"]] +[[!template text="""to install Emacs Reader.""" start="00:04:19.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Once we go to GNU Elpa, it's just""" start="00:04:21.120" video="qanda-reader" id="subtitle"]] +[[!template text="""going to be Emacs package install, just that.""" start="00:04:23.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Right now you have to do package VC""" start="00:04:26.000" video="qanda-reader" id="subtitle"]] +[[!template text="""a bit. Boy, we get spoiled as""" start="00:04:27.920" video="qanda-reader" id="subtitle"]] +[[!template text="""Emacs users. Everything just gets so easy""" start="00:04:32.360" video="qanda-reader" id="subtitle"]] +[[!template text="""for us. It's like an IDE for our""" start="00:04:35.360" video="qanda-reader" id="subtitle"]] +[[!template text="""whole machine. What tools did you use to measure the""" start="00:04:37.960" video="qanda-reader" id="subtitle"]] +[[!template text="""memory usage between the three packages?""" start="00:04:44.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, that's a good question.""" start="00:04:48.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So during my development, I used mostly for debugging""" start="00:04:50.120" video="qanda-reader" id="subtitle"]] +[[!template text="""purposes Valgrind. So Valgrind is a a set of suite""" start="00:04:54.800" video="qanda-reader" id="subtitle"]] +[[!template text="""of debugging tools.""" start="00:05:00.120" video="qanda-reader" id="subtitle"]] +[[!template text="""And one of the tools that it has is Massive.""" start="00:05:01.560" video="qanda-reader" id="subtitle"]] +[[!template text="""It's a heap analyzer, heap profiler.""" start="00:05:03.800" video="qanda-reader" id="subtitle"]] +[[!template text="""So Valgrind plus Massive,""" start="00:05:08.920" video="qanda-reader" id="subtitle"]] +[[!template text="""and then there's a KDE package""" start="00:05:10.840" video="qanda-reader" id="subtitle"]] +[[!template text="""called Massive Visualizer.""" start="00:05:14.120" video="qanda-reader" id="subtitle"]] +[[!template text="""So I first get the Massive output using Valgrind,""" start="00:05:15.760" video="qanda-reader" id="subtitle"]] +[[!template text="""and then put that output into Massive Visualizer.""" start="00:05:19.840" video="qanda-reader" id="subtitle"]] +[[!template text="""That gives me the grasp.""" start="00:05:23.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Are there Emacs integrations for those components at all?""" start="00:05:24.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Does Valgrind have them?""" start="00:05:28.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't think so. I don't think so.""" start="00:05:30.280" video="qanda-reader" id="subtitle"]] +[[!template text="""There's, yeah, there's I think a few packages""" start="00:05:32.400" video="qanda-reader" id="subtitle"]] +[[!template text="""which do something with Massive,""" start="00:05:37.320" video="qanda-reader" id="subtitle"]] +[[!template text="""but I don't think like they're maintained.""" start="00:05:38.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Gotcha. Cool. Awesome opportunity""" start="00:05:42.160" video="qanda-reader" id="subtitle"]] +[[!template text="""there for someone spunky.""" start="00:05:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""How is conversion between Elisp and foreign language types?""" start="00:05:49.400" video="qanda-reader" id="subtitle"]] +[[!template text="""For example, when interfacing with the C++ library""" start="00:05:55.400" video="qanda-reader" id="subtitle"]] +[[!template text="""that makes heavy use of the C++ object system and templates.""" start="00:05:59.040" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, that's a good question.""" start="00:06:03.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So the go-to answer is the blog post that I wrote,""" start="00:06:05.880" video="qanda-reader" id="subtitle"]] +[[!template text="""which is an extensive explanation""" start="00:06:10.520" video="qanda-reader" id="subtitle"]] +[[!template text="""on how the internals of dynamic modules work.""" start="00:06:12.200" video="qanda-reader" id="subtitle"]] +[[!template text="""The short answer is that basically what happens""" start="00:06:14.680" video="qanda-reader" id="subtitle"]] +[[!template text="""is anything that is compatible with C-ABI""" start="00:06:21.120" video="qanda-reader" id="subtitle"]] +[[!template text="""When you compile that language code,""" start="00:06:24.640" video="qanda-reader" id="subtitle"]] +[[!template text="""so when I compile C++ code, I would have a particular API.""" start="00:06:27.760" video="qanda-reader" id="subtitle"]] +[[!template text="""So we have a dynamic module API,""" start="00:06:33.560" video="qanda-reader" id="subtitle"]] +[[!template text="""which is the emacs-module.h, the file that I showed.""" start="00:06:35.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You have to put that into your C++ package program""" start="00:06:39.120" video="qanda-reader" id="subtitle"]] +[[!template text="""and then link it to...""" start="00:06:45.800" video="qanda-reader" id="subtitle"]] +[[!template text="""So emacs-module.h is basically going to...""" start="00:06:48.680" video="qanda-reader" id="subtitle"]] +[[!template text="""like use things in your Emacs installation""" start="00:06:51.120" video="qanda-reader" id="subtitle"]] +[[!template text="""to interact with this C++ language. So it's basically FFI.""" start="00:06:56.800" video="qanda-reader" id="subtitle"]] +[[!template text="""And what this gives you is that you can have things in C++.""" start="00:07:04.360" video="qanda-reader" id="subtitle"]] +[[!template text="""So let's say you want to do multi-threading""" start="00:07:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""the way I did system level multi-threading.""" start="00:07:13.120" video="qanda-reader" id="subtitle"]] +[[!template text="""You can have C++ be responsible for the multi-threading.""" start="00:07:15.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but you want the output""" start="00:07:20.520" video="qanda-reader" id="subtitle"]] +[[!template text="""of the multithreading to go into Emacs.""" start="00:07:23.000" video="qanda-reader" id="subtitle"]] +[[!template text="""So then you write like a piece of C++ function,""" start="00:07:24.880" video="qanda-reader" id="subtitle"]] +[[!template text="""which is going to be a dynamic module function.""" start="00:07:29.040" video="qanda-reader" id="subtitle"]] +[[!template text="""A dynamic module function""" start="00:07:31.880" video="qanda-reader" id="subtitle"]] +[[!template text="""is written in the language that you target,""" start="00:07:32.920" video="qanda-reader" id="subtitle"]] +[[!template text="""that is C++ or C or Rust.""" start="00:07:34.960" video="qanda-reader" id="subtitle"]] +[[!template text="""And then that is going to be compiled""" start="00:07:37.360" video="qanda-reader" id="subtitle"]] +[[!template text="""into a share library like SO.""" start="00:07:40.760" video="qanda-reader" id="subtitle"]] +[[!template text="""shared object, and then that shared object""" start="00:07:43.280" video="qanda-reader" id="subtitle"]] +[[!template text="""is going to be loaded into Emacs system using require.""" start="00:07:46.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So when I do require render core""" start="00:07:50.640" video="qanda-reader" id="subtitle"]] +[[!template text="""in one of the slides that I showed,""" start="00:07:53.120" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm basically loading that shared object,""" start="00:07:54.800" video="qanda-reader" id="subtitle"]] +[[!template text="""and that shared object already has""" start="00:07:58.440" video="qanda-reader" id="subtitle"]] +[[!template text="""the compiled dynamic module functions and so on.""" start="00:08:00.517" video="qanda-reader" id="subtitle"]] +[[!template text="""But my blog will explain that better.""" start="00:08:03.892" video="qanda-reader" id="subtitle"]] +[[!template text="""Gotcha. I thought that was pretty clear.""" start="00:08:06.309" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm looking forward to seeing that blog post""" start="00:08:10.017" video="qanda-reader" id="subtitle"]] +[[!template text="""and understanding what I glossed over""" start="00:08:12.017" video="qanda-reader" id="subtitle"]] +[[!template text="""trying to understand from that explanation.""" start="00:08:13.642" video="qanda-reader" id="subtitle"]] +[[!template text="""That was great.""" start="00:08:15.861" video="qanda-reader" id="subtitle"]] +[[!template text="""Can one look at PDF metadata with Emacs Reader?""" start="00:08:18.421" video="qanda-reader" id="subtitle"]] +[[!template text="""Can you do annotations? Does it understand forms?""" start="00:08:22.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Can it handle encrypted PDFs?""" start="00:08:26.200" video="qanda-reader" id="subtitle"]] +[[!template text="""In other words, I think reading between the lines,""" start="00:08:29.960" video="qanda-reader" id="subtitle"]] +[[!template text="""wow, this is awesome.""" start="00:08:33.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Is there anything I can't do? You're right.""" start="00:08:34.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So Emacs Reader will be able to do all of those things.""" start="00:08:39.200" video="qanda-reader" id="subtitle"]] +[[!template text="""It can do annotations. It will be able to do forms.""" start="00:08:44.120" video="qanda-reader" id="subtitle"]] +[[!template text="""And we have an issue open for interpret PDFs.""" start="00:08:48.360" video="qanda-reader" id="subtitle"]] +[[!template text="""The thing is, right now we are struggling with""" start="00:08:52.280" video="qanda-reader" id="subtitle"]] +[[!template text="""making Emacs Reader be very efficient""" start="00:08:54.840" video="qanda-reader" id="subtitle"]] +[[!template text="""in terms of highlighting and text selection""" start="00:08:58.760" video="qanda-reader" id="subtitle"]] +[[!template text="""because of the challenges that I mentioned in the slides,""" start="00:09:02.680" video="qanda-reader" id="subtitle"]] +[[!template text="""so it will be able to do all that.""" start="00:09:05.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Once we tackle the basic features""" start="00:09:07.960" video="qanda-reader" id="subtitle"]] +[[!template text="""down in an efficient manner. Gotcha. Um.""" start="00:09:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Comment or questioner says,""" start="00:09:18.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I installed Emacs Reader already as promised. Great job.""" start="00:09:24.120" video="qanda-reader" id="subtitle"]] +[[!template text="""How can I associate ODT files to open with Emacs Reader?""" start="00:09:28.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You don't really need to do anything.""" start="00:09:34.880" video="qanda-reader" id="subtitle"]] +[[!template text="""You should be just able to do find file,""" start="00:09:38.480" video="qanda-reader" id="subtitle"]] +[[!template text="""Control X, Control F, and open.""" start="00:09:40.600" video="qanda-reader" id="subtitle"]] +[[!template text="""And it should open with Emacs Reader""" start="00:09:42.960" video="qanda-reader" id="subtitle"]] +[[!template text="""because we have an auto mode list,""" start="00:09:45.320" video="qanda-reader" id="subtitle"]] +[[!template text="""a list that takes an ODT file""" start="00:09:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""and opens it with reader mode.""" start="00:09:51.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So you should just be able to do find file.""" start="00:09:53.200" video="qanda-reader" id="subtitle"]] +[[!template text="""If you're not able to do that,""" start="00:09:55.640" video="qanda-reader" id="subtitle"]] +[[!template text="""you should open Embug report.""" start="00:09:56.880" video="qanda-reader" id="subtitle"]] +[[!template text="""And I'll just mention""" start="00:09:58.200" video="qanda-reader" id="subtitle"]] +[[!template text="""we've got about 10 minutes left of our live Q&A,""" start="00:10:00.760" video="qanda-reader" id="subtitle"]] +[[!template text="""but if you're watching the stream,""" start="00:10:03.240" video="qanda-reader" id="subtitle"]] +[[!template text="""it's possible that we'll just keep going.""" start="00:10:06.080" video="qanda-reader" id="subtitle"]] +[[!template text="""The questions just keep coming, which I just love that.""" start="00:10:08.440" video="qanda-reader" id="subtitle"]] +[[!template text="""So feel free to join the BBB link""" start="00:10:10.800" video="qanda-reader" id="subtitle"]] +[[!template text="""that should have shown in the IRC chat.""" start="00:10:14.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Jump in and we can take questions""" start="00:10:17.440" video="qanda-reader" id="subtitle"]] +[[!template text="""as long as Divya has steam for that.""" start="00:10:21.560" video="qanda-reader" id="subtitle"]] +[[!template text="""If a PDF file is open in Emacs Reader""" start="00:10:26.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and I reintegrate the PDF with some changes,""" start="00:10:30.440" video="qanda-reader" id="subtitle"]] +[[!template text="""does the Emacs Reader refresh the PDF on its own""" start="00:10:33.200" video="qanda-reader" id="subtitle"]] +[[!template text="""or do I reload it?""" start="00:10:36.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Right, that's also a really good question.""" start="00:10:38.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So one answer is that it depends on""" start="00:10:41.320" video="qanda-reader" id="subtitle"]] +[[!template text="""how you change the PDF.""" start="00:10:44.600" video="qanda-reader" id="subtitle"]] +[[!template text="""So for example, if I just replaced the PDF""" start="00:10:46.080" video="qanda-reader" id="subtitle"]] +[[!template text="""with something else of the same name,""" start="00:10:50.840" video="qanda-reader" id="subtitle"]] +[[!template text="""Emacs will update it immediately.""" start="00:10:52.640" video="qanda-reader" id="subtitle"]] +[[!template text="""If you have auto revert mode on,""" start="00:10:55.800" video="qanda-reader" id="subtitle"]] +[[!template text="""it'll just revert the buffer""" start="00:10:57.920" video="qanda-reader" id="subtitle"]] +[[!template text="""and it'll reload the PDF really nicely.""" start="00:10:59.120" video="qanda-reader" id="subtitle"]] +[[!template text="""But if you're doing it something like LaTeX,""" start="00:11:01.880" video="qanda-reader" id="subtitle"]] +[[!template text="""where you're writing something in LaTeX""" start="00:11:05.440" video="qanda-reader" id="subtitle"]] +[[!template text="""and LaTeX is continuously producing the PDF,""" start="00:11:07.400" video="qanda-reader" id="subtitle"]] +[[!template text="""that needs SyncTeX integration.""" start="00:11:10.520" video="qanda-reader" id="subtitle"]] +[[!template text="""Because LaTeX, while it's producing the PDF,""" start="00:11:13.280" video="qanda-reader" id="subtitle"]] +[[!template text="""it does a lot of funky things.""" start="00:11:16.160" video="qanda-reader" id="subtitle"]] +[[!template text="""It does not provide a sort of renderable PDF all the time.""" start="00:11:19.160" video="qanda-reader" id="subtitle"]] +[[!template text="""So Emacs will sort of crash trying to""" start="00:11:24.520" video="qanda-reader" id="subtitle"]] +[[!template text="""basically render a PDF that is not ready yet.""" start="00:11:28.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So we need SyncTex to sync""" start="00:11:31.680" video="qanda-reader" id="subtitle"]] +[[!template text="""with LaTeX to do that really nice.""" start="00:11:34.800" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay, so we have to do some care""" start="00:11:37.280" video="qanda-reader" id="subtitle"]] +[[!template text="""and feeding of the exact timing""" start="00:11:39.560" video="qanda-reader" id="subtitle"]] +[[!template text="""if we have more of a continuous behind the curtains, so to speak.""" start="00:11:41.320" video="qanda-reader" id="subtitle"]] +[[!template text="""That makes a lot of sense to me. What are the challenges""" start="00:11:46.880" video="qanda-reader" id="subtitle"]] +[[!template text="""with integrating synctex and AucTex?""" start="00:11:50.960" video="qanda-reader" id="subtitle"]] +[[!template text="""This would be great to see as PDF handles as well,""" start="00:11:55.720" video="qanda-reader" id="subtitle"]] +[[!template text="""or PDF tools handles as well. Yeah, yeah.""" start="00:11:58.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So, we have Synctex and Auctex planned.""" start="00:12:02.320" video="qanda-reader" id="subtitle"]] +[[!template text="""I don't really see any major obstacles""" start="00:12:04.400" video="qanda-reader" id="subtitle"]] +[[!template text="""for doing that, to be very honest.""" start="00:12:06.840" video="qanda-reader" id="subtitle"]] +[[!template text="""I think we can do it in a much simpler way""" start="00:12:08.680" video="qanda-reader" id="subtitle"]] +[[!template text="""than PDF Tools does.""" start="00:12:11.520" video="qanda-reader" id="subtitle"]] +[[!template text="""The only reason we haven't done it yet is because, again,""" start="00:12:12.480" video="qanda-reader" id="subtitle"]] +[[!template text="""we have more important highlighting""" start="00:12:17.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and text selection and those features planned,""" start="00:12:20.480" video="qanda-reader" id="subtitle"]] +[[!template text="""but it's anticipated. Yeah. All right. This next question""" start="00:12:24.400" video="qanda-reader" id="subtitle"]] +[[!template text="""I love your presentation. Will you be giving another talk""" start="00:12:32.920" video="qanda-reader" id="subtitle"]] +[[!template text="""on the architecture you went over a deep dive on?""" start="00:12:36.440" video="qanda-reader" id="subtitle"]] +[[!template text="""That would be awesome. I'm not sure if an EmacsConf talk""" start="00:12:39.400" video="qanda-reader" id="subtitle"]] +[[!template text="""will be appropriate for this, but I do stream bi-weekly.""" start="00:12:44.920" video="qanda-reader" id="subtitle"]] +[[!template text="""So you're always welcome to come on my stream and ask,""" start="00:12:48.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and I would be very happy to go deep into this.""" start="00:12:52.600" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm looking forward to catching that myself.""" start="00:12:55.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Thank you for the shout. Is there search functionality,""" start="00:12:58.120" video="qanda-reader" id="subtitle"]] +[[!template text="""something like isearch and occur?""" start="00:13:02.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, we don't really have it,""" start="00:13:05.320" video="qanda-reader" id="subtitle"]] +[[!template text="""but this is the most immediate feature""" start="00:13:07.600" video="qanda-reader" id="subtitle"]] +[[!template text="""after we have text selection.""" start="00:13:09.600" video="qanda-reader" id="subtitle"]] +[[!template text="""So once we have text selection,""" start="00:13:10.960" video="qanda-reader" id="subtitle"]] +[[!template text="""once we're able to select the text,""" start="00:13:12.400" video="qanda-reader" id="subtitle"]] +[[!template text="""then we can have iSearch so that it can highlight the text.""" start="00:13:14.360" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Um, all right. And then, um, there's, I'm just gonna,""" start="00:13:17.680" video="qanda-reader" id="subtitle"]] +[[!template text="""I'll read out this question""" start="00:13:26.680" video="qanda-reader" id="subtitle"]] +[[!template text="""and then I have to do a little bookkeeping on the pad.""" start="00:13:28.800" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, does the dynamic module, uh, prevent customization""" start="00:13:30.640" video="qanda-reader" id="subtitle"]] +[[!template text="""that Emacs usually provides advice, hooks, et cetera,""" start="00:13:35.640" video="qanda-reader" id="subtitle"]] +[[!template text="""or does everything just kind of""" start="00:13:40.000" video="qanda-reader" id="subtitle"]] +[[!template text="""No, if you have a dynamic module,""" start="00:13:44.360" video="qanda-reader" id="subtitle"]] +[[!template text="""it doesn't limit you into doing anything.""" start="00:13:46.560" video="qanda-reader" id="subtitle"]] +[[!template text="""You can do everything on the Elisp side that you want,""" start="00:13:49.280" video="qanda-reader" id="subtitle"]] +[[!template text="""and you only take care of certain things""" start="00:13:52.840" video="qanda-reader" id="subtitle"]] +[[!template text="""on the dynamic module side.""" start="00:13:55.720" video="qanda-reader" id="subtitle"]] +[[!template text="""If you're asking whether""" start="00:13:56.880" video="qanda-reader" id="subtitle"]] +[[!template text="""you can do advices, hooks, and all of that""" start="00:13:58.000" video="qanda-reader" id="subtitle"]] +[[!template text="""on the dynamic module itself,""" start="00:14:01.880" video="qanda-reader" id="subtitle"]] +[[!template text="""from the dynamic module itself,""" start="00:14:03.880" video="qanda-reader" id="subtitle"]] +[[!template text="""that's a bit tricky because something like""" start="00:14:05.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Calling a macro or doing macros and dynamic modules""" start="00:14:09.720" video="qanda-reader" id="subtitle"]] +[[!template text="""is not really that nice You have to pretty much manually""" start="00:14:14.000" video="qanda-reader" id="subtitle"]] +[[!template text="""expand the macro yourself in the dynamic module""" start="00:14:18.120" video="qanda-reader" id="subtitle"]] +[[!template text="""so if you want to do it from the dynamic module,""" start="00:14:21.360" video="qanda-reader" id="subtitle"]] +[[!template text="""there's not much support right now,""" start="00:14:23.840" video="qanda-reader" id="subtitle"]] +[[!template text="""but you can do everything on the elisp side""" start="00:14:25.960" video="qanda-reader" id="subtitle"]] +[[!template text="""without touching the dynamic module. Got it""" start="00:14:29.480" video="qanda-reader" id="subtitle"]] +[[!template text="""So those are the questions that I see.""" start="00:14:33.400" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm just going to take a quick peek,""" start="00:14:38.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but let me invite you if you want to.""" start="00:14:40.000" video="qanda-reader" id="subtitle"]] +[[!template text="""We've got just about 5 minutes left""" start="00:14:42.640" video="qanda-reader" id="subtitle"]] +[[!template text="""and I will get carried away sometimes""" start="00:14:46.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and fail to make this invitation before we cut away live,""" start="00:14:48.240" video="qanda-reader" id="subtitle"]] +[[!template text="""especially if we do keep going a bit.""" start="00:14:51.280" video="qanda-reader" id="subtitle"]] +[[!template text="""that you have live onto the stream.""" start="00:14:54.480" video="qanda-reader" id="subtitle"]] +[[!template text="""Of course, you don't have to do that.""" start="00:14:57.800" video="qanda-reader" id="subtitle"]] +[[!template text="""You said a lot in your presentation.""" start="00:15:02.600" video="qanda-reader" id="subtitle"]] +[[!template text="""No, I think mostly that's fine.""" start="00:15:05.800" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm just really happy""" start="00:15:12.200" video="qanda-reader" id="subtitle"]] +[[!template text="""that people are interested in the package,""" start="00:15:13.680" video="qanda-reader" id="subtitle"]] +[[!template text="""and I would be glad to have contributors""" start="00:15:17.080" video="qanda-reader" id="subtitle"]] +[[!template text="""and viewers or anything. That would be nice. Awesome.""" start="00:15:19.880" video="qanda-reader" id="subtitle"]] +[[!template text="""So here comes one more question,""" start="00:15:25.200" video="qanda-reader" id="subtitle"]] +[[!template text="""or actually a couple more questions coming in.""" start="00:15:28.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Following up on dynamic modules,""" start="00:15:31.960" video="qanda-reader" id="subtitle"]] +[[!template text="""do you usually create an Elisp shim""" start="00:15:34.240" video="qanda-reader" id="subtitle"]] +[[!template text="""from foreign function interface""" start="00:15:38.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and then use them with Elisp?""" start="00:15:40.400" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah, so basically how you do is you write,""" start="00:15:41.560" video="qanda-reader" id="subtitle"]] +[[!template text="""let's say I have a C function""" start="00:15:46.160" video="qanda-reader" id="subtitle"]] +[[!template text="""that I've written in the dynamic module.""" start="00:15:49.640" video="qanda-reader" id="subtitle"]] +[[!template text="""It's a dynamic module function.""" start="00:15:51.400" video="qanda-reader" id="subtitle"]] +[[!template text="""And then when I'm trying to call""" start="00:15:52.880" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module function,""" start="00:15:54.640" video="qanda-reader" id="subtitle"]] +[[!template text="""most of the time, I don't call it like that.""" start="00:15:56.040" video="qanda-reader" id="subtitle"]] +[[!template text="""I wrap it inside a proper Elisp function""" start="00:15:59.000" video="qanda-reader" id="subtitle"]] +[[!template text="""and then call that Elisp function.""" start="00:16:01.680" video="qanda-reader" id="subtitle"]] +[[!template text="""So that's how I think it's better to do that because""" start="00:16:03.560" video="qanda-reader" id="subtitle"]] +[[!template text="""You can take care of certain cases""" start="00:16:08.280" video="qanda-reader" id="subtitle"]] +[[!template text="""on when you want the dynamic module function to be called.""" start="00:16:12.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Maybe sometimes you don't want""" start="00:16:15.200" video="qanda-reader" id="subtitle"]] +[[!template text="""the dynamic module function""" start="00:16:17.200" video="qanda-reader" id="subtitle"]] +[[!template text="""to be called immediately.""" start="00:16:18.840" video="qanda-reader" id="subtitle"]] +[[!template text="""So it's better to wrap it.""" start="00:16:19.880" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Okay. So timing issues. Yeah.""" start="00:16:22.160" video="qanda-reader" id="subtitle"]] +[[!template text="""For the purposes of managing timing issues,""" start="00:16:26.600" video="qanda-reader" id="subtitle"]] +[[!template text="""that elisp shim is preferred.""" start="00:16:31.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Yeah. Makes sense. Um.""" start="00:16:34.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, so question question here""" start="00:16:38.960" video="qanda-reader" id="subtitle"]] +[[!template text="""is searching for the person is searching for a roadmap.""" start="00:16:44.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Is that already available as a feature?""" start="00:16:47.440" video="qanda-reader" id="subtitle"]] +[[!template text="""Searching is on the roadmap.""" start="00:16:49.280" video="qanda-reader" id="subtitle"]] +[[!template text="""It is not available yet as a feature, but it's on priority.""" start="00:16:52.240" video="qanda-reader" id="subtitle"]] +[[!template text="""I think you may have may have touched on that.""" start="00:16:56.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Sorry. All right. Those are the questions that I see.""" start="00:16:59.840" video="qanda-reader" id="subtitle"]] +[[!template text="""We've got just a couple of minutes.""" start="00:17:06.560" video="qanda-reader" id="subtitle"]] +[[!template text="""I'm not sure if you have more you wanted to say,""" start="00:17:08.280" video="qanda-reader" id="subtitle"]] +[[!template text="""but I have to say how much I appreciate your talk,""" start="00:17:10.400" video="qanda-reader" id="subtitle"]] +[[!template text="""especially you jumping in live with us""" start="00:17:13.720" video="qanda-reader" id="subtitle"]] +[[!template text="""and just taking everything on the fly.""" start="00:17:16.120" video="qanda-reader" id="subtitle"]] +[[!template text="""I think this is a big part of what adds the energy,""" start="00:17:19.080" video="qanda-reader" id="subtitle"]] +[[!template text="""you in particular, just really dynamic speaker.""" start="00:17:24.560" video="qanda-reader" id="subtitle"]] +[[!template text="""Thank you. Thank you. Thank you. I enjoyed it as well.""" start="00:17:28.040" video="qanda-reader" id="subtitle"]] +[[!template text="""A person is, and I think this may have been touched on already,""" start="00:17:31.480" video="qanda-reader" id="subtitle"]] +[[!template text="""but let's maybe get into it more specifically.""" start="00:17:37.160" video="qanda-reader" id="subtitle"]] +[[!template text="""We've said that search is kind of""" start="00:17:39.440" video="qanda-reader" id="subtitle"]] +[[!template text="""a next up type of feature as things,""" start="00:17:42.160" video="qanda-reader" id="subtitle"]] +[[!template text="""as the current iteration stabilizes.""" start="00:17:44.720" video="qanda-reader" id="subtitle"]] +[[!template text="""Question was, you know, occur like, how would you?""" start="00:17:48.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Totally. There will be occur searches.""" start="00:17:52.240" video="qanda-reader" id="subtitle"]] +[[!template text="""There will be isearch enabled, isearch.""" start="00:17:56.160" video="qanda-reader" id="subtitle"]] +[[!template text="""used to with PDF tools,""" start="00:17:59.640" video="qanda-reader" id="subtitle"]] +[[!template text="""we would be like parity with the features,""" start="00:18:02.880" video="qanda-reader" id="subtitle"]] +[[!template text="""all the features that you're used to with PDF tools.""" start="00:18:06.440" video="qanda-reader" id="subtitle"]] +[[!template text="""Um, so, uh, certainly occur anything""" start="00:18:08.720" video="qanda-reader" id="subtitle"]] +[[!template text="""that is important in Emacs with text""" start="00:18:12.600" video="qanda-reader" id="subtitle"]] +[[!template text="""and that can be done with PDFs.""" start="00:18:15.680" video="qanda-reader" id="subtitle"]] +[[!template text="""We really want to do that because, um,""" start="00:18:17.360" video="qanda-reader" id="subtitle"]] +[[!template text="""I want the package to be as knitted""" start="00:18:19.840" video="qanda-reader" id="subtitle"]] +[[!template text="""into Emacs ecosystem as possible.""" start="00:18:22.680" video="qanda-reader" id="subtitle"]] +[[!template text="""Okay. We'll see if we can get in this last question here.""" start="00:18:24.960" video="qanda-reader" id="subtitle"]] +[[!template text="""Do you have a timing expectation for ELPA?""" start="00:18:28.160" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, yeah, next major release essentially.""" start="00:18:30.320" video="qanda-reader" id="subtitle"]] +[[!template text="""So next major release is most likely""" start="00:18:33.200" video="qanda-reader" id="subtitle"]] +[[!template text="""going to be within a month or two.""" start="00:18:35.280" video="qanda-reader" id="subtitle"]] +[[!template text="""So once we have the next major release, we're going to be.""" start="00:18:37.320" video="qanda-reader" id="subtitle"]] +[[!template text="""Uh, timing couldn't be more perfect.""" start="00:18:39.640" video="qanda-reader" id="subtitle"]] +[[!template text="""Maybe this is a good, good point to break.""" start="00:18:43.480" video="qanda-reader" id="subtitle"]] +[[!template text="""We'll be cutting away to the next talk""" start="00:18:45.520" video="qanda-reader" id="subtitle"]] +[[!template text="""in just a couple of minutes.""" start="00:18:47.760" video="qanda-reader" id="subtitle"]] +[[!template text="""So let me say one more time how much""" start="00:18:48.880" video="qanda-reader" id="subtitle"]] +[[!template text="""on behalf of all the attendees""" start="00:18:51.480" video="qanda-reader" id="subtitle"]] +[[!template text="""and all the volunteers and all everybody,""" start="00:18:52.960" video="qanda-reader" id="subtitle"]] +[[!template text="""um, how much we appreciate your talks""" start="00:18:54.960" video="qanda-reader" id="subtitle"]] +[[!template text="""and, uh, your awesome contribution to the Emacs world.""" start="00:18:57.080" video="qanda-reader" id="subtitle"]] +[[!template text="""Thanks, Corwin.""" start="00:19:01.300" video="qanda-reader" id="subtitle"]] + +</div>Questions or comments? Please e-mail [divya@subvertising.org](mailto:divya@subvertising.org?subject=Comment%20for%20EmacsConf%202023%20reader%3A%20An%20introduction%20to%20the%20Emacs%20Reader) <!-- End of emacsconf-publish-after-page --> |
