WEBVTT 00:00.000 --> 00:02.360 Thank you for the great talk, Niklas. 00:02.360 --> 00:05.040 And yes, the Q&A is now open. 00:05.040 --> 00:09.320 Folks, feel free to post your questions on the pattern IRC. 00:09.320 --> 00:10.900 And after a minute or two, we'll also 00:10.900 --> 00:12.680 open up this big blue button for people 00:12.680 --> 00:15.820 who might prefer to come join Niklas here directly 00:15.820 --> 00:17.680 and ask the questions here. 00:17.680 --> 00:20.240 Niklas, take it away. 00:20.240 --> 00:21.000 All right. 00:21.000 --> 00:21.720 Thank you. 00:21.720 --> 00:25.040 And thanks for having me. 00:25.040 --> 00:28.720 Yeah, maybe I'll go ahead and read some questions 00:28.720 --> 00:32.880 that have popped up in the formula here then. 00:32.880 --> 00:37.440 So the first question is, can it replace SSH plus TMAX 00:37.440 --> 00:42.280 for persistent sessions on remote hosts? 00:42.280 --> 00:46.440 So currently, I would say it does not 00:46.440 --> 00:49.720 support that because it is designed 00:49.720 --> 00:53.440 to only run a single command inside a session. 00:53.440 --> 00:59.920 And when that finishes, it reports back. 00:59.920 --> 01:01.640 But I have played with the idea. 01:01.640 --> 01:04.480 I think it should be possible to do. 01:04.480 --> 01:08.640 But I wanted to start off and polish the experience 01:08.640 --> 01:12.720 with a single command first. 01:12.720 --> 01:16.880 And secondly, there is a question. 01:16.880 --> 01:20.880 I see integration with projectile in the README. 01:20.880 --> 01:23.960 Does it also integrate with project.io? 01:28.400 --> 01:30.200 Yeah, good question. 01:30.200 --> 01:31.840 It doesn't. 01:31.840 --> 01:37.920 I haven't added any explicit support for it 01:37.920 --> 01:43.880 because I typically run detached compiling in the project 01:43.880 --> 01:49.160 root with my own command using project behind the scenes. 01:49.160 --> 01:51.880 But I guess project has a command for it now. 01:51.880 --> 02:21.840 So yeah, it should be very easy to add support for that. 02:21.840 --> 02:28.000 And I could also mention that could be one thing related 02:28.000 --> 02:31.480 to the first questionnaire of using kind of persistent 02:31.480 --> 02:37.560 sessions, that it would be interesting to see if, 02:37.560 --> 02:44.000 for example, I occasionally run Python REPL in Emacs. 02:44.000 --> 02:48.000 And if I could get that one to launch using detach, 02:48.000 --> 02:52.960 so I could restart Emacs and reattach to the REPL 02:52.960 --> 02:57.920 or also use it for situations where I have used the REPL 02:57.920 --> 03:02.000 to, let's say, experiment with, I don't know, 03:02.000 --> 03:04.720 some NumPy function, how that works. 03:04.720 --> 03:10.400 And if I use detach for that, it would automatically 03:10.400 --> 03:12.920 log then the whole session. 03:12.920 --> 03:15.360 And I would have it accessible. 03:15.360 --> 03:19.560 So I could search for it in retrospect 03:19.560 --> 03:23.880 and retrieve the log and see, OK, I ran this command. 03:23.880 --> 03:26.760 This happened, or basically. 03:32.680 --> 03:35.320 So then there is a question. 03:35.320 --> 03:36.600 Can you? 03:36.600 --> 03:37.360 Oh, OK. 03:37.360 --> 03:38.800 I'll read the other one. 03:38.800 --> 03:43.400 No, there is two in there. 03:46.920 --> 03:48.040 It's ongoing. 03:48.040 --> 03:51.240 I'll wait for them. 03:51.240 --> 03:52.920 So the first question is, can you 03:52.920 --> 03:56.520 detach a session from shell mode and reattach 03:56.520 --> 04:01.920 from eshell vterm mode or start a compile in a shell mode 04:01.920 --> 04:09.120 and attach it from compilation mode? 04:09.120 --> 04:16.240 Yeah, so you can attach at the moment 04:16.240 --> 04:20.400 or reattach in shell mode, eshell vterm. 04:20.400 --> 04:25.680 That is no problem. 04:25.680 --> 04:33.880 Currently, I don't have support for attaching in compilation 04:33.880 --> 04:34.720 mode. 04:34.720 --> 04:39.040 So the way the package is built is 04:39.040 --> 04:44.280 that when the session is started, 04:44.280 --> 04:51.240 there is a variable that gets inserted into the session. 04:51.240 --> 04:56.280 And it describes how the session would handle, 04:56.280 --> 05:01.720 for example, attaching to it or viewing the output, et cetera. 05:04.480 --> 05:12.560 But these are the things that I want to primarily focus 05:12.560 --> 05:17.680 in the near future, so making it easier to, for example, 05:17.680 --> 05:21.040 have a buffer up where you're attached to a session. 05:21.040 --> 05:25.680 You could run a key binding to switch 05:25.680 --> 05:29.000 to the view mode of that session. 05:29.000 --> 05:32.800 You get the full output, and then you could view it. 05:32.800 --> 05:37.200 You can switch back to the attached version, which 05:37.200 --> 05:40.560 just shows a brief context and then continues on 05:40.560 --> 05:45.120 with the current output from the session. 05:45.120 --> 05:50.640 Question number four here is, how do you talk to detach? 05:50.640 --> 05:54.480 Could it be feasible to run a child emacs instead 05:54.480 --> 05:56.360 of detach? 05:56.360 --> 05:58.800 Would it make sense? 05:58.800 --> 06:02.520 Better communication, maybe. 06:02.520 --> 06:08.560 So the way the talk with detach is done 06:08.560 --> 06:11.680 is, I would say, very simple. 06:11.680 --> 06:19.480 Detach the program supports basic instructions 06:19.480 --> 06:25.320 like detach dash a to attach, or yeah, that's basically it. 06:28.080 --> 06:32.760 And that is all that's being used under the hood. 06:32.760 --> 06:37.280 And of course, it uses its C flag 06:37.280 --> 06:47.240 to create and attach when a session is started, or the dash 06:47.240 --> 06:52.440 n to start the session in kind of detached mode. 06:52.440 --> 06:55.440 So it runs without emacs being attached to it. 06:58.240 --> 07:05.720 Currently, I don't think I've seen any need for a child emacs 07:05.720 --> 07:08.920 need for better communication. 07:08.920 --> 07:15.400 But if people have ideas about what could be done, 07:15.400 --> 07:19.280 if it was added, yeah, that would be great. 07:19.280 --> 07:20.960 So maybe that could be a follow up 07:20.960 --> 07:24.640 if you got ideas on how to improve it. 07:24.640 --> 07:33.160 Yeah, so I'm not sure if the emacs child, yeah, 07:33.160 --> 07:36.360 I think if I got a better idea about what 07:36.360 --> 07:39.120 the person would like to achieve with it, 07:39.120 --> 07:43.000 then maybe I could understand the question better there. 07:45.880 --> 07:49.480 So another question is, how does it handle processes 07:49.480 --> 07:52.560 that require you to do that? 07:52.560 --> 07:55.440 So processes that require user input, 07:55.440 --> 07:59.080 usually type yes, no, et cetera. 07:59.080 --> 08:05.600 MetaX compiles great, but can't handle user input. 08:05.600 --> 08:16.600 Yeah, so it's very simple behind the scenes. 08:16.600 --> 08:21.320 It depends on what interface you use for attaching emacs 08:21.320 --> 08:23.160 to that process. 08:23.160 --> 08:27.680 So as the person says, if it's MetaX compiled, 08:27.680 --> 08:32.160 then probably it doesn't handle it. 08:32.160 --> 08:40.080 So in that case, I guess I would have started it 08:40.080 --> 08:42.680 from the shell. 08:42.680 --> 08:46.960 If there is a question, you need to type yes or no, 08:46.960 --> 08:53.000 then you can just type it and maybe detach from it. 08:53.000 --> 08:56.400 Or if you end up in a situation where 08:56.400 --> 09:00.080 you started with MetaX compile, but then it has the question, 09:00.080 --> 09:04.400 I guess you could always pop up a shell attached 09:04.400 --> 09:07.080 to the session, and you will get the question there. 09:07.080 --> 09:11.480 You press whatever answer you'd like, 09:11.480 --> 09:20.000 and then detach from that user interface. 09:20.000 --> 09:23.480 So another question is, can you rerun a command session, 09:23.480 --> 09:25.880 but in another directory? 09:28.560 --> 09:33.360 Yeah, you can't do that at the moment. 09:33.360 --> 09:38.120 I haven't really found a need for it. 09:38.120 --> 09:46.000 So typically, as I have been using detach, 09:46.000 --> 09:52.680 now when it has a persistent storage of the sessions, 09:52.680 --> 09:57.040 it becomes rather natural that once I've run it once, 09:57.040 --> 10:07.120 I can just rerun it later in the same directory. 10:07.120 --> 10:11.400 But maybe this is a feature that should be added. 10:11.400 --> 10:16.840 It's maybe a common use case. 10:16.840 --> 10:22.120 One thing that I added on top of the rerun 10:22.120 --> 10:25.280 is like an edit and rerun for those situations 10:25.280 --> 10:30.240 where I maybe run some compilation, 10:30.240 --> 10:34.960 but with the compilation flag set to opt, 10:34.960 --> 10:37.680 and then I want to rerun the exact same command 10:37.680 --> 10:43.600 in the same directory, but with it set to dbg instead 10:43.600 --> 10:44.520 for debugging. 10:44.520 --> 10:48.600 And then instead of pressing R to rerun, I press E. 10:48.600 --> 10:53.400 Then I get a prompt with the current command, 10:53.400 --> 10:57.640 and then I can add it, and it will rerun that. 10:57.640 --> 11:00.920 So maybe something similar for another directory 11:00.920 --> 11:05.320 could be added. 11:22.720 --> 11:23.200 Cool. 11:23.200 --> 11:27.200 I think we still have about 13 or 14 more minutes of live Q&A 11:27.200 --> 11:29.840 time on stream, so if folks do have more questions 11:29.840 --> 11:32.440 about this talk from Nicolas, please 11:32.440 --> 11:33.960 feel free to put them on the pad, 11:33.960 --> 11:36.560 or come join here on the big blue button and ask here. 11:40.400 --> 11:41.320 Yeah. 11:41.320 --> 11:47.600 And I also want to mention that if you realize later 11:47.600 --> 11:50.000 you have a question or a suggestion, 11:50.000 --> 11:57.200 feel free to contact me or create a new post 11:57.200 --> 12:00.960 on the mailing list for the project. 12:00.960 --> 12:02.720 That's much appreciated. 12:07.160 --> 12:09.720 Sounds good. 12:09.720 --> 12:10.240 Yeah. 12:10.240 --> 12:22.880 So then there is a question incoming. 12:22.880 --> 12:30.320 So what are some other places where this might be useful? 12:30.320 --> 12:32.760 And you, for me, fetching that question 12:32.760 --> 12:40.480 is, what are some other places where this might be useful? 12:40.480 --> 12:46.320 And you, for me, fetching mail, get processes started by magic. 12:46.320 --> 12:48.880 What things would you like to see working 12:48.880 --> 12:52.560 in a one to two-year time frame? 12:55.040 --> 12:58.520 Yeah, that's a good question. 12:58.520 --> 13:01.800 I think there are these situations. 13:01.800 --> 13:04.800 One of the things that I ran into yesterday 13:04.800 --> 13:11.320 was that I was trying to use EMMS to connect 13:11.320 --> 13:14.560 to the stream for Emacs Conv. 13:14.560 --> 13:17.640 And that was working fine. 13:17.640 --> 13:22.040 It was using MPV in the background. 13:22.040 --> 13:25.280 But then I did some modifications to my Emacs 13:25.280 --> 13:30.120 and wanted to restart it, and then the stream died. 13:30.120 --> 13:35.600 Kind of those situations where I found it valuable, 13:35.600 --> 13:41.800 I added support for the D-RED R-Sync package, 13:41.800 --> 13:44.440 for example, that I use occasionally 13:44.440 --> 13:51.480 to copy things to a remote server 13:51.480 --> 13:52.960 or from a remote server. 13:52.960 --> 13:56.280 And yeah, that was always something 13:56.280 --> 14:00.240 that I thought could benefit from it. 14:00.240 --> 14:08.000 So I would ideally like to see if it 14:08.000 --> 14:13.080 can be used for more of these processes. 14:15.680 --> 14:21.600 I guess maybe I should get in contact 14:21.600 --> 14:27.480 with some of the devs to see if they have ideas on how this 14:27.480 --> 14:33.360 could be incorporated better with Emacs. 14:33.360 --> 14:36.440 Because so far, it was kind of straightforward 14:36.440 --> 14:41.000 to get it to work with Shell or Compile. 14:41.000 --> 14:47.360 But it hacks around the current implementation 14:47.360 --> 14:48.760 to make it use Detach. 14:48.760 --> 14:55.360 And if I wanted it to be used in many more places, 14:55.360 --> 14:58.560 it feels like it would be maybe not the best way 14:58.560 --> 15:07.440 to have a lot of advices being added to the various functions. 15:07.440 --> 15:12.720 But yeah, definitely, it would be really cool 15:12.720 --> 15:17.760 if that could be worked on properly 15:17.760 --> 15:22.880 so that once I've managed to get the workflow 15:22.880 --> 15:27.080 for its current implementation a little bit more polished, 15:27.080 --> 15:38.600 I will try to look into this and also see what is possible. 15:38.600 --> 15:42.080 I don't know if there are any limitations 15:42.080 --> 15:49.360 with my current approach that I need some more expertise on. 16:12.080 --> 16:39.760 Yeah, so if there is no other questions, I'll 16:39.760 --> 16:53.960 OK, there is another question. 16:53.960 --> 16:59.720 OK, a general topic here. 16:59.720 --> 17:02.520 What are you currently excited about in Emacs? 17:02.520 --> 17:15.520 Well, I'm really excited about the TreeSitter 17:15.520 --> 17:21.120 that was just added to Emacs 29. 17:21.120 --> 17:27.240 I haven't gotten around to use that yet. 17:27.240 --> 17:29.640 But I think it looks very promising. 17:29.640 --> 17:37.440 And I'm a big fan of structural editing 17:37.440 --> 17:39.040 that you can use in Lisp. 17:39.040 --> 17:42.600 So if this opens up the possibility 17:42.600 --> 17:47.880 to be able to use that more in other languages, 17:47.880 --> 17:49.000 that would be really cool. 17:49.000 --> 17:56.880 Otherwise, I'm generally excited about how 17:56.880 --> 18:01.880 the program is developing. 18:01.880 --> 18:05.040 I think there has been a lot of great additions 18:05.040 --> 18:11.720 in these last couple of versions of the program. 18:11.720 --> 18:13.680 So it's cool to see. 18:13.680 --> 18:22.640 And also how the Emacs Conf has been continuing 18:22.640 --> 18:27.760 and being an annual thing and also growing, 18:27.760 --> 18:33.280 adding this new layout with the general track 18:33.280 --> 18:34.280 and development track. 18:34.280 --> 18:35.080 I think it's great. 18:39.080 --> 18:39.560 Thanks. 18:39.560 --> 18:41.040 Yeah, it's been interesting. 18:41.040 --> 18:46.800 Emacs itself, I feel like the Emacs-Devel mailing list 18:46.800 --> 18:50.520 has been growing in traffic over the years. 18:50.520 --> 18:52.280 I've been subscribed for a couple of years. 18:52.280 --> 18:56.200 And more recently, I'm just seeing more and more 18:56.200 --> 18:57.600 incoming emails from Emacs-Devel, 18:57.600 --> 19:00.000 which is always cool. 19:00.000 --> 19:02.680 Yeah, and like you said with Emacs Conf, 19:02.680 --> 19:05.800 yeah, we've been growing, thankfully. 19:05.800 --> 19:07.680 And this year, we've experimented 19:07.680 --> 19:09.280 with having two tracks, which I think 19:09.280 --> 19:12.280 has turned out pretty well, pretty great. 19:12.280 --> 19:15.600 Because we don't have to try to squeeze in all the talks 19:15.600 --> 19:19.080 so tightly and be able to give proper Q&A time, 19:19.080 --> 19:20.960 like this one, I think, which is pretty great. 19:20.960 --> 19:23.280 So yeah, very glad to hear and see it. 19:27.400 --> 19:33.400 Yeah, and maybe I should mention now 19:33.400 --> 19:41.320 that I know that the E-Shell talk is coming up by Howard, 19:41.320 --> 19:45.880 that I discovered there is a kind of a bug 19:45.880 --> 19:50.320 in the detached implementation. 19:50.320 --> 19:56.320 So it doesn't handle properly the way E-Shell 19:56.320 --> 20:07.040 seems to communicate when you quote some text in a shell 20:07.040 --> 20:07.920 command. 20:07.920 --> 20:11.480 If you have been using quotes, it 20:11.480 --> 20:14.840 seems to be added as text properties that 20:14.840 --> 20:16.240 gets into detached. 20:16.240 --> 20:20.040 And I didn't know about that, but detached 20:20.040 --> 20:22.080 is not picking that up. 20:22.080 --> 20:28.040 So if you try to run something similar to Echo 20:28.040 --> 20:33.960 and quotation marks, Niklas, then yeah, it will not 20:33.960 --> 20:35.360 run it with quotation marks. 20:35.360 --> 20:38.200 So I guess for Echo, it might work, 20:38.200 --> 20:42.280 but other commands, it can fail. 20:42.280 --> 20:45.760 So just be aware about that. 20:45.760 --> 20:49.360 I guess that's on the priority list to fix. 20:49.360 --> 20:50.280 Interesting. 20:50.280 --> 20:51.960 Yeah, for sure. 20:51.960 --> 20:54.720 I guess folks can look forward to that getting hopefully fixed 20:54.720 --> 20:59.080 in the near future or at some point. 20:59.080 --> 21:05.640 Yeah, and I could add that maybe something 21:05.640 --> 21:15.240 that is in between this request for persistent sessions 21:15.240 --> 21:20.040 is that currently, you can use detached in a way 21:20.040 --> 21:23.360 so it creates like it runs the session. 21:23.360 --> 21:28.400 And once that finish, you use its callback 21:28.400 --> 21:32.920 to generate a new session, which runs some other command. 21:32.920 --> 21:41.240 So you can chain detached sessions that way. 21:41.240 --> 21:47.680 I wanted to improve on how that has been implemented 21:47.680 --> 21:55.040 so that you can more easily start these changed sessions 21:55.040 --> 21:58.520 and that they would show up in the user interface. 21:58.520 --> 22:05.120 And maybe if you rerun the top of the chain, 22:05.120 --> 22:12.720 it will actually start all these sessions that way. 22:12.720 --> 22:16.680 I have some use cases personally where 22:16.680 --> 22:22.200 for the time being, before running an executable, 22:22.200 --> 22:24.920 I actually need to run a different build command 22:24.920 --> 22:27.160 than I normally do. 22:27.160 --> 22:32.880 And I keep forgetting that, and then that fails. 22:32.880 --> 22:35.960 And it would be great to just be able to. 22:35.960 --> 22:40.440 I mean, you could always have that first command 22:40.440 --> 22:48.240 and then and and the other one, but it doesn't look as nice. 22:48.240 --> 22:53.960 And it would be nice to be able to see that, OK, this has been 22:53.960 --> 22:57.720 this is currently running, but in the next once that's 22:57.720 --> 23:02.080 finished, it will keep on running this one. 23:02.080 --> 23:05.440 So that's something I plan to add support for. 23:05.440 --> 23:09.360 It sounds good. 23:09.360 --> 23:10.120 That would be nice. 23:14.080 --> 23:17.200 Yeah, I would like that as well. 23:17.200 --> 23:21.360 So I have an incentive. 23:21.360 --> 23:41.720 Yeah, also not to completely derail this, 23:41.720 --> 23:45.120 but I mean, I don't think there are any questions as of now. 23:45.120 --> 23:46.800 So I can maybe mention this. 23:46.800 --> 23:48.320 Someone pinged me on IRC. 23:48.320 --> 23:50.640 Well, someone, Shoushin, good friend. 23:50.640 --> 23:53.920 And the creator, actually, of the musics 23:53.920 --> 23:56.400 that we've been using at Emacs Conf between for our lunch 23:56.400 --> 23:58.880 breaks and here and there, he mentioned 23:58.880 --> 24:01.080 that he likes this FSF shirt. 24:03.960 --> 24:05.720 Yeah, it's nice. 24:05.720 --> 24:06.200 Thanks. 24:06.200 --> 24:10.120 Yeah, it's I think from a year or so ago. 24:10.120 --> 24:14.200 It was put up for FSF's 35th birthday. 24:14.200 --> 24:17.160 And yeah, it's also what it says, FSF 35. 24:17.160 --> 24:20.280 Yeah, I'm not sure if it's still available on their shop, 24:20.280 --> 24:22.360 but yeah, you might be able to find it there. 24:25.880 --> 24:27.160 Nice. 24:27.160 --> 24:31.080 So they have their own shop? 24:31.080 --> 24:32.000 Yeah, so there is. 24:32.000 --> 24:33.520 You can buy merch or? 24:33.520 --> 24:34.480 Yeah, exactly. 24:34.480 --> 24:37.080 There is shop.fsf.org, and they have 24:37.080 --> 24:41.880 a bunch of different goodies and things, merchandise. 24:41.880 --> 24:44.440 They have shirts like this one, but they also 24:44.440 --> 24:45.920 have a lot of other stuff. 24:45.920 --> 24:47.960 They have this one, but they also 24:47.960 --> 24:51.200 sell things like printed versions of the Emacs user 24:51.200 --> 24:54.840 manual, which is particularly relevant for us. 24:54.840 --> 24:57.680 Yeah, and Emacs stickers. 24:57.680 --> 24:59.280 I think also sell pins and such. 24:59.280 --> 25:02.280 So yeah, I mean, if you are interested in Emacs 25:02.280 --> 25:06.200 or new on FSF, it might be worth checking out. 25:06.200 --> 25:08.680 Yeah, thanks for the tip. 25:08.680 --> 25:11.360 Yeah. 25:11.360 --> 25:14.520 Cool, and I think we have about one more minute of live Q&A 25:14.520 --> 25:17.880 time if folks have any questions, 25:17.880 --> 25:23.520 any last-minute ones, you're welcome to send it in. 25:23.520 --> 25:26.880 I guess there is, uh-huh. 25:26.880 --> 25:32.240 OK, yeah, this one got added from Karfik. 25:32.240 --> 25:32.740 Yeah. 25:38.600 --> 25:41.560 Yeah, otherwise, if there's no further questions, 25:41.560 --> 25:44.200 maybe we wrap it up. 25:44.200 --> 25:45.320 Sure, sounds good. 25:45.320 --> 25:46.880 Yeah, I don't see any new questions. 25:46.880 --> 25:49.560 So yeah, thanks again, Nicholas, for the great talk 25:49.560 --> 25:52.640 and for sticking around and doing the live Q&A. 25:52.640 --> 25:54.360 It's much appreciated, and look forward 25:54.360 --> 26:01.080 to seeing the upcoming developments in Detached. 26:01.080 --> 26:03.400 Thank you, and thanks for having me. 26:03.400 --> 26:06.760 Cheers, very glad to see you around. 26:06.760 --> 26:15.840 See ya.