diff options
Diffstat (limited to '2023/talks/eat.md')
-rw-r--r-- | 2023/talks/eat.md | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/2023/talks/eat.md b/2023/talks/eat.md new file mode 100644 index 00000000..bd548153 --- /dev/null +++ b/2023/talks/eat.md @@ -0,0 +1,141 @@ +[[!meta title="Eat and Eat powered Eshell, fast featureful terminal inside Emacs"]] +[[!meta copyright="Copyright © 2023 Akib Azmain Turja"]] +[[!inline pages="internal(2023/info/eat-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# Eat and Eat powered Eshell, fast featureful terminal inside Emacs +Akib Azmain Turja (he/him) - IRC: akib, <https://akib.codeberg.page> +Fediverse: akib@hostux.social, <mailto:akib@disroot.org> + +[[!inline pages="internal(2023/info/eat-before)" raw="yes"]] + +Eat is a terminal emulator for Emacs, written in pure Emacs Lisp. It +can run most (if not all) terminal programs. Despite being implemented +in Emacs Lisp, it is fast enough for day-to-day uses. + +In this talk, I'll give an overview of Eat, its features and +configuration. I'll show the most useful features and the features that +make Eat unique (e.g. shell integration, mouse tracking, Sixel support). +(This may include features that hasn't been implemented yet but will be +implemented and stable enough by the time of the recording of the talk.) +Most of the features require no configuration to use, but are +configurable with user options. I'll also show the most useful +customization options available that users may want to customize or +tinker with. + +Thanks to the architecture of Eat, Eat can emulate terminal within any +region of a buffer. Therefore, Eat can be integrated with Eshell. I'll +show how to integrate Eat with Eshell, and the useful Eshell-specific +features and configuration. + +Then, I'll compare Eat with other terminal emulators available for +Emacs, and I'll show which feature that Eat has but the other doesn't, +and which feature Eat lacks. I'll show why Eat is good or bad for some +users/use cases. For example, why Shell mode users may prefer Coterm (a +terminal emulator for Comint) over Eat, why Eat is better Term mode in +the most cases, or why Vterm should be prefered for huge bursts of +outputs, etc. + +Then I'll give pointers to the documentation available like the Info +manual or README and what they contain. And I'll also discuss what to +do when you hit a problem. I'll discuss about the common problems or +misconfiguration, and also discuss where and how to report bugs +properly. I won't go into much details in this part, since the manual +covers this topic completely, and the users are expected to not +encounter problems. + +Then I'll discuss the future plans of the project. And finally, I'll +conclude the talk with a summary of the whole talk. + +Outline: + +- Introduction: What's Eat and why? +- Installing Eat from NonGNU ELPA +- Demonstrating Eat's features and configuring them +- Eshell integration +- Comparison with other terminal emulators +- Shortcomings and common (fixable) problems +- Future plans +- Conclusion + + +# Discussion + +## Questions and answers + +- Q: Have you thought about upstreaming EAT? + - A: Yes, but I haven't yet completed the copyright paperwork. + - S: Look into it, I think it would be great to have a better + implementation of a terminal OOTB! +- Q: Very impressive! What lessons did you learn while developing + EAT? + - A:I learned how to optimize Elisp code, and also how terminals + work actually. And also process handling in Elisp. +- Q: How long did it take you to develop EAT to this point? + - A:It took around 5 months to make it working at bare minimum. + - Q: Did you have any experience with terminal emulation + before working on EAT? + - A:Not much really. I mean I knew how terminals worked + but I didn't know the escape sequences. +- Q:Impressive work; I look forward to trying it. What did you want + that Vterm did not provide? I think I'll try it today. + - A:The keybindings, specially. And also I wanted Eshell terminal + emulation. +- Q: Is Elisp native-compilation what allows EAT to peform as well as + or better than Vterm, or is EAT even that fast with just + byte-compilation? + - A:I use native-compilation. But Eat is still quite a few times + faster than Term mode when byte-compiled. +- Q: Should it work on Emacs 28.1? + - A:Yes. +- Q: What does EAT do differently than other terminal emulators that + allows it to perform so well? + - A:I don't really know quite clearly. At the time I implemented + the main code, I had plenty of time. I did profiling and tried + various implementations to do the same thing. +- Q: what sparked your interest in Emacs, considering its often + perceived as outdated, and how do its powerful capabilities remain + relevant today? + - A: First of all, it's free software, I have the freedom. And + the IDEs I used to use were resource hogs, so needed something + lightweight. And, after I started using Emacs, I discovered how + powerful it actually is. Emacs is itself a programming + platform, so you can make literally anything with it. +- Q: have you thought about making EAT work with shell-mode? + - A: Yes, I have considered integrating with shell-mode/Comint but + it doesn't work, they need the terminal text to be mutable and + Eat doesn't support that. So I have implemented "line mode," + an input mode similar to shell-mode. +- Q: did the talk show how to show sixel? + +## Notes + +- I found out about EAT a while ago and was excited to find out that + it works so well! Thank you for your great work! +- akib, truly impressive! +- :clap::clap::clap::clap::clap::clap: +- ¡Muy bueno! +- I use eat, and I have almost replace terminal (bash/zsh) with eshell paired with eat +- i use eat but i don't really have anything to say cuz i don't use the CLI nearly as much anymore since learning more emacs stuff. but i still think eat is awesome cuz it is really fast for when i do need it +- I'll be looking into eat more, thanks for the talk! +- demonstrating sixels would have been a surprise for some... +- eat is very easy to try out compared to vterm since there's no foreign code involved +- I was stunned at how fast eat is! +- even without native-comp, it's pretty fast +- eat is the apple equivalent of terminal emulators in emacs: It just works! ;) +- best of both world is, eshell paired with eat +- <http://yeti.freeshell.org/tmp/20231203-155213__emacs_eshell_eat__showing_xkcd_378_via_sixels.png> + - I usd img2sixel wnd some awk glue + - imagemagick can also convert to sixel +- you're the one who helped me with eat and the dumb term line for .zshrc so ty! +- speaker: yes, i have considering integrating with shell-mode/comint but it doesn't work, they need the terminal text to be mutable and eat doesn't support that so i have implemented "line mode," input mode similar to shell mode + + +[[!inline pages="internal(2023/info/eat-after)" raw="yes"]] + +[[!inline pages="internal(2023/info/eat-nav)" raw="yes"]] + + |