21 ms·
Emacs: The Editor for the Next Forty Years [video]
- k33n 7y agoOh Emacs. A graybeard I respect got me to try it about 5 years ago. I used to walk by his machine and think "wow, in a movie about a hacker, this is what their computer screen would look like". I also thought Magit was pretty damn cool because it made interacting with Git extremely intuitive (once you're comfortable with Emacs). In the years since first picking up Emacs, I have probably spent 100 hours or more configuring it, reconfiguring it, refactoring my configuration, and other things that wasted my time I'm not going to make the world a better place by configuring my editor. I'm going to do it by shipping code. I'm a recovering terminal junkie. I had a problem. I was bored with my work so I wanted to challenge myself. Maybe I even enjoyed procrastinating a little.
- bachmeier 7y agoSpending time on your tools instead of your work is not a sign that you need to change your tools - it's a sign that your work sucks.
- dkarl 7y agoYeah, I don't understand this theory that if your tools are at all configurable or learnable you'll be compelled to waste time yak-shaving them. I think you're right that the problem is with the stuff you're NOT doing. I use emacs every day, but there's a ton of stuff I don't use emacs for because the investment to become proficient in the emacs solution won't pay off in my circumstances. There's a middle way between writing code in nano and getting lost trying to program emacs to do your job for you. As with everything (programming languages, build tools, optimization, etc.) there are people who go much further into the rabbit hole of text editors than you could practically justify in your own work, but 1) they might be doing it for some intrinsic satisfaction rather than out of delusion, and 2) thank goodness for people like that, because they build and improve a lot of the software we benefit from.
- falcolas 7y agoOr that your tools (as currently configured) are insufficient to the task of doing your work. If you wonder why a woodworker hasn't finished the chair, a completely valid answer is "all the edged tools you gave me were dull".
- SirensOfTitan 7y agoSo if you’re not making the world a better place you’re wasting your time? Play is supremely important in almost any activity. Not only is there incredible work insight to be found in activity without goals, but play is fun and good for you.
- bovermyer 7y agoThis is a very important idea that doesn't get enough attention.
- kashyapc 7y agoOn the importance of "play"— From one of the books I'm currently reading (Blueprint, The evolutionary Origins of a Good Society, by Nicholas Christakis — itself a great read), I learnt of an interesting book reference: Homo Ludens: A Study of the Play-Element in Culture (1938). The abstract sounds promising: "[...] With cross-cultural examples from the humanities, business, and politics, Huizinga examines play in all its diverse guises—as it relates to language, law, war, knowledge, poetry, myth, philosophy, art, and much more. As he writes, “Civilization is, in its earliest phases, played. It does not come from play like a baby detaching itself from the womb: it arises in and as play, and never leaves it.” [...] Starting with Plato, Huizinga traces the contribution of “man the player” through the Middle Ages, the Renaissance, and early modern world. [...]" [*] https://www.amazon.com/Homo-Ludens-Study-Play-Element-Culture/dp/1621389995 https://www.amazon.com/Homo-Ludens-Study-Play-Element-Cultur...
- cuddlybacon 7y agoIs tweaking your emacs config play? Or is it work? When I was younger, it felt more like play. In my late 20's it became work.
- jimbokun 7y agoBut I mean, that's not Emacs fault?
- falcolas 7y agoIt very well could be. Attempting to either adapt yourself to emacs, or emacs to you, can take a long time, and may also fail. Not to mention that, as much as I love emacs and other free software, bugs in your tools can absolutely destroy a day. The last time I tried emacs, a bug in the golang major mode that hung emacs in an infinite loop ruined a few days before I moved (back) to another editor.
- jimbokun 7y ago> The last time I tried emacs, a bug in the golang major mode that hung emacs in an infinite loop ruined a few days before I moved (back) to another editor. This can happen just as easily by installing a buggy plugin in any other IDE. I love IntelliJ, but have definitely lost time trying to figure out how to make something work or configure it to my liking.
- falcolas 7y agoIt can. The thing I like about some of the other IDEs though is that it doesn't tear down the entire process; the plugins are sandboxed. Is this possible in Emacs? I'd be shocked if the answer is no. But most major modes I've personally interacted with are not.
- _wolfie_ 7y ago> I'm not going to make the world a better place by configuring my editor I think this covers work of most programmers. Doesn't matter if time is spent writing editor config or production code...
- dkarl 7y ago> I'm a recovering terminal junkie. I had a problem. Maybe you went too far, but I think there's also a widespread problem with people not going far enough. I know smart people who have been working in the industry for over a decade who don't bother learning basic text manipulation tools because they look down on the shell and assume they're going to have to switch text editors every few years anyway. Sublime Text, BBEdit, Atom, VSCode -- you only get two or three years with each one, so there's no point learning more than delete, copy, paste, search/replace in file, jump to file, jump to symbol, and if you're really fancy, search/replace in multiple files. But you can't get past how much of everything we work on is text, no matter how lofty the abstractions it encodes. Munging text takes an inordinate amount of our time. I have seen senior engineers spend an hour writing and debugging scripts to make changes in a big file that they could have made in minutes by using regex-replace or recording a keyboard macro in their editor. Same with basic sed and awk usage. If they can do it by hand in under ten minutes they'll do it that way; otherwise they'll file a ticket and write a script. I have seen senior engineers painstaking picking through multi-kB json blobs adding line breaks in strategic places to make them readable. ("I used to use this one web site that reformatted JSON for you, but then it shut down, and I always felt nervous about posting internal data to random web sites anyway.") That's an extreme case, but I've seen it more than once, and it's tragic. I agree it's hard to know ahead of time where to invest your time. One of the best engineers I ever worked with once told me, "The best thing that ever happened to me was that in undergrad I was working for a professor who had all these crazy awk scripts. I spent a whole semester using awk basically every day, even though I hated it." That impressed me —- this was a guy of very impressive theoretical background and incredible ability to design complex systems that worked in simple, reliable ways, and he was talking to me about awk? But it didn't impress me enough, because it was another five years before it sunk in that over the course of my career I had scrolled past an awful lot of simple one or two line awk solutions (on, e.g., Stack Overflow) to get to the solutions I could comprehend -- which were always much more complicated. When considering how to spend your time, I don't think you should worry about the pits you might fall into. I think you should look at the positive possibilities, the positive possibilities, and try to achieve them. It's possible to be very productive in the terminal and in your editor or IDE without going down too many rabbit holes.
- kabdib 7y agoI've been using Emacs for 40 years. My .emacs file is 59 lines long. Most of the customizations turn off features have been added (menu bars and so forth), or that disable "helpful brain damage" that simply got in the way. I've spent 2-3 hours over the last decade tweaking things.
- elwell 7y agoAt the risk of adding to your 2-3 hours, you might want to check out Key Chord [0] (if you don't use it already) for some low-hanging fruit. [0] - https://www.emacswiki.org/emacs/KeyChord https://www.emacswiki.org/emacs/KeyChord
- downerending 7y agoSame. It's a bit like Dvorak. Yes, in theory you could make your life 10% better by carefully customizing, but there's also great value in just sticking with the default for the most part. You can sit down anywhere and everything just works.
- dfox 7y agoMy .emacs on this machine is almost literally this: (custom-set-variables '(indent-tabs-mode nil) '(inhibit-startup-screen t) '(menu-bar-mode nil) '(show-paren-mode t) '(tool-bar-mode nil)) On my home computer I have somewhat more involved .emacs, but apart from the above (and huge list of totally random variables picked up by customize-save-customized since 2003) it consists of long-irrelevant compatibility hacks and somewhat complex logic for creating correctly sized frames on additional X displays (which I stopped really using when I got 4k monitor)
- Isamu 7y ago(from the slides) >I learned Emacs in September, 1983 >It is now November, 2019 >...that’s over thirty six years! >An amazingly long time. Hmm, I think I learned Emacs around the same time. Yes, sometimes I think it is weird that I'm still using it. I get a lot of pushback when I say that the developer environment hasn't advanced amazingly in all those years. Devs will point to one or more rather small incremental improvement. I'm sorry but I think we are still in the Bronze Age of programming.
- jimbokun 7y agoNo, productivity has increased massively, but not due to better editors or IDEs. Those have shown only marginal improvements, if any. (Is any modern environment more productive than a Lisp Machine or Smalltalk?) But some of the main productivity drivers are distributed version control systems, dependency management libraries, and sites like GitHub for sharing code and libraries. Being able to automatically generate a project from a template, and pull in any open source library written by anyone on the planet with a single line in a config file, is amazing. Also, remote hosting and cloud provisioning to quickly deploy any code to be used by anyone in the world with a web browser. Arguably even app stores by eliminating the need to figure out distribution and payments on your own. (The stuff maybe not everyone considers "development", but is key to the overall productivity of any software project.)
- gutnor 7y agoMassive increase in personal computer power (cloud or physical). Internet and resources like stack overflow. Back in the days, I remember the isolation. First from the domain, we could only run part of the application or use unnaturally tiny dataset meaning that the application behaviour in prod was an abstract concept. Hell, we could not even build the app at all on large application. Second from knowledge. If you didn't know something, you needed to pick a book and read or find someone who knew. Nowadays, with a few hours on the net, you can build enough of a working knowledge of a tech to at least know if it is worth the investment.
- 7y ago
- superbaconman 7y agoAs an emacs user I like the little rant about keyboards towards the end (54:27). It's stupid hard to find a laptop with good keys, good layout, good internals, and good battery.
- GrayShade 7y agoI'm partial to the Emacs keybindings, but you you're so right about the laptop keyboards. Mine doesn't have an End key (Home, PgDn, PgUp, Power).
- mickeyp 7y agoThe benefit of Emacs's keybindings is that they're the default keys used by GNU readline (though it also supports Vi-style keys.) That means when you know that Ctrl+E and Ctrl+A (`C-e' / `C-a') goes to the end or beginnings of a line in Emacs, you know it'll also work in your bash shell (or indeed any tool that uses GNU readline.)
- GrayShade 7y agoThat's what I'm using while coding, but it's not friendly to all software (e.g. browsers or other programs that don't have configurable keyboard shortcuts).
- waterhouse 7y agoThis is one of the things I like about Mac OS: text fields, by default, have the readline keybindings. In the box where I'm typing this comment in Firefox, I can use control-{a,e,n,p,f,b,d,h,k} just like I can in the shell. This is one of the reasons I haven't tried harder to use a Linux desktop.
- nemoniac 7y agoGet a Thinkpad, remap the keys in software and never look down again.
- jwr 7y agoThere are lines in my Emacs config files that are older than some of the programmers I work with, so I can relate. Contrary to what some people think, Emacs does not require constant tweaking and wasting time on configuration. I revisit my setup every couple of years or so, and I always find it is time well spent, as my productivity goes up as a result. I do not know of a better environment for multi-language programming, and I often look around and try different things to see if they match up.
- e40 7y agoI have lines in my .emacs that go back to when I used gosmacs. I constantly add to my setup, mostly for email handling, though. I have a filtering system built in CL on top of MH-E on top of nmh.
- bobongo 7y ago> Emacs does not require constant tweaking and wasting time on configuration. Unless you are using org-mode, in which case updating org-mode may cause issues that require reading up on the breaking changes that were introduced between org-mode versions. (This is meant as a heads up for newcomers using org-mode, since it's pretty popular at this point.)
- vvillena 7y agoUpgrading org-mode should count as tweaking the config. Is there any part of org-mode that stopped working suddenly?
- TeMPOraL 7y agoI've been using org-mode for about a decade now, and while I know there were changes made, I don't think there was even a single thing that just stopped working under me during the upgrade. I have a somewhat nontrivial amount of org setup, and there was never a case I'd have to fix anything in it after upgrade.
- 7y ago
- jordigh 7y agoSo the slides say... > Concurrency safety isn’t an accident. So far,only Rust has a good story on concurrency thanks to its type system. Is that really true? I've really enjoyed concurrency in D. http://jordi.inversethought.com/blog/advent-of-d/#day18 http://jordi.inversethought.com/blog/advent-of-d/#day18 How much better can it be? And yes, D's concurrency is also based around types.
- rtpg 7y agoBased on that description (haven't used D), it seems to cover similar grounds. But Rust's move semantics means that for message passing in particular you can protect against "use after send" issues. https://doc.rust-lang.org/book/ch16-02-message-passing.html https://doc.rust-lang.org/book/ch16-02-message-passing.html
- falcolas 7y agoFrankly, not that much. Rust can primarily protect against memory usage race conditions, it can't catch most kinds of deadlocks or other concurrency issues.
- fluffything 7y agoNotice that Rust locks support dead-lock detection at run-time. You just need to enable the detection manually because it adds a run-time cost.
- fluffything 7y ago> How much better can it be? Rust guarantees that a data-race is a compilation error. D.. does not guarantee anything.. a data-race won't even give you a run-time error.. So... since going from D to Rust is going from zero to all guarantees, I think it is fair to say that Rust is technically infinitely better. FWIW this is not D's fault, most safe mainstream languages do not guarantee the absence of data-races (e.g. Java doesn't guarantee that either).
- 0xffff2 7y agoThere's a lot more to correct concurrency than data races, although they are a big factor. I think it's more fare to say that going from D to Rust is going from zero to some guarantees. Still technically infinitely better.
- nandkeypull 7y agoEmacs has really undergone a renaissance in the past decade - magit, LSP, ivy, spacemacs, doom emacs - there have been so many novel new packages and frameworks written by elisp hackers. For such an old editor, the development scene feels incredibly alive.
- slightwinder 7y agoThere may be much going on with emacs, but so far it fails to move ahead. The project is just improving the old strenghts, but not fixing the old fails. And as time moves, they start to hurt more and more and more until they break.
- na85 7y agoWhat are some old fails that need fixed?
- bmn__ 7y agoAre you an emacs hacker and have the knowledge/power to fix the problems that prevent it from catching up to, say, a mediocre editor like Kdevelop? https://news.ycombinator.com/item?id=17178246 https://news.ycombinator.com/item?id=17178246
- na85 7y agoNo, I'm just a guy who's pretty content with emacs and wants to know what others perceive to be the major failings
- sooheon 7y agoOne thing I notice: too many things cause unresponsiveness. 8 cores in my laptop and I can't install a package in the background, and semantic parsing interrupts typing. There doesn't seem to be any concurrency at all, things I do every day like eval'ing forms to REPL cause stutters. I love that it allows makers to explore new ui paradigms (magit, lispy), but performance is its biggest downside.
- commandlinefan 7y agoEmacs - the editor that STILL doesn't have a simple way to duplicate the current line?
- kcbanner 7y agohttps://www.emacswiki.org/emacs/CopyingWholeLines https://www.emacswiki.org/emacs/CopyingWholeLines
- mwexler 7y agoSimple, given the Emacs defn of "simple" :-)
- TeMPOraL 7y agoIt is simple. What other editor lets you take anything from here: https://www.emacswiki.org/emacs/CopyingWholeLines#toc3 https://www.emacswiki.org/emacs/CopyingWholeLines#toc3 and then just eval it to get new functionality? And the various implementations I linked to here are trivial to figure out and write yourself with even the most passing familiarity with Emacs Lisp. Even if you're a complete newcomer to the language, Emacs is self-documenting and can teach you everything from inside the editor.
- jordigh 7y agoC-S-backspace C-y C-y That's simple by Emacs standards. :-) If you need it simpler, write and save a keyboard macro.
- yxhuvud 7y agoDifferent editors have different patterns of usage. I find I roughly speaking never duplicate lines, so why would this be a problem?
- cold_fact 7y agoI constantly find myself duplicate lines in vim (shift+y). You've never had to edit a line that's really similar to another? Or when debugging, I don't want to change the old code, so I copy the line, comment it out, and work with the duplicated line. You've never had to do that?
- xvilka 7y agoThere is an amazing project of converting Emacs into the more modern language - Rust (the C parts of it). It is called REmacs[1]. It is sad that the port of Emacs to Guile[2] didn't work out. And for the people who want to convert their C code to Rust, I quite recommend trying c2rust[3] transpiler and refactoring tool. [1] https://github.com/remacs/remacs https://github.com/remacs/remacs [2] https://www.emacswiki.org/emacs/GuileEmacs https://www.emacswiki.org/emacs/GuileEmacs [3] https://github.com/immunant/c2rust/ https://github.com/immunant/c2rust/
- rtpg 7y agoreading the GuileEmacs thing it sounds like the project was a success? Is there pushback against using this upstream?
- xvilka 7y agoIt was working, but not good enough, indeed.
- bjoli 7y agoGuile is supposed to be the GNU extension language, which meant there was a political incentive for guile Emacs, but it was never asked for by the Emacs people. Considering the amount of bikeshedding going on for faaaar less intrusive changes to Emacs, I have doubted guile Emacs success for a long time. Guile now runs elisp, although there is a lot of low hanging fruit left when it comes to optimization. Guile is shaping up to become a very neat little VM, with proper threading, JIT compilation, and delimited continuations. I think the idea of elisp running outside of Emacs, with access to all of the gory glory of Emacs libraries sounds fantastic. Imagine org-mode and a (emacs PKG org-mode) library you can use outside of Emacs with a sub 0.1s startup :)
- banachtarski 7y agoI'll be honest, I feel like such a project is a waste of time, in a similar vein to many such "port to Rust" projects. Even the project page itself gives vague and rather suspect motivation for why such a project should exist. I could appreciate it if there were legitimate architectural concerns that need to be addressed (see, for example, neovim).
- cheez 7y agoI'm on 20 years now, can easily see it going 40 more.
- iudqnolq 7y agoI'm new to Emacs, but enjoying it very much. Just got mu4e working with Gmail XOAUTH2 (for a G Suite account that the administrators have implemented their own "delightful login experience"). Would there be any interest in reading a writeup?
- zarkov99 7y agoHell yeah.
- mxuribe 7y agoYes please!
- TeMPOraL 7y agoDefinitely. I approached the set up mu4e + offlineimap over multiple accounts (including a GMail one) many times, and I've never been fully satisfied with it. I'd really want to get it to work flawlessly, so I'd love to be able to learn from your experience.
- iudqnolq 7y agoWhat doesn't not fully satisfied mean for you? I might just have lower standards...
- beizhia 7y agoAbsolutely. I've been wanting to try that, but haven't put all the pieces together yet.
- omarhaneef 7y agoI've noticed that (almost?) any talk about any editor in the last few years: emacs, vim, sublime, atom etc always brings up how good VS Code is. It's a huge endorsement of VS code.
- thatguyagain 7y agoI think users of VI or emacs has different ways of defining "good" here. Personally, I would never use VS Code, or any other chromium editor.
- tendencydriven 7y agoIs this due to some notion of it being slow? VSCode is fast, native-fast. With a fantastic plugin ecosystem I've been a full-time Vim user for the past decade (now NeoVim) but I've seriously considered switching, VSCode with vim mode turned on is truly fantastic, it's just not portable enough for my needs.
- saagarjha 7y ago> VSCode is fast, native-fast. Not when starting up…
- tendencydriven 7y agoI'd consider startup time the least important metric for measuring speed of a text editor - as long as it's not ridiculous. Important speed metrics for me are: Switching between buffers Scrolling up/down a page (vim used to be terrible for me before i switched terminals to Kitty) Substitutions Search
- Skunkleton 7y agoI keep trying to use VSCode because there are aspects of it that work better than vim. I always end up back with vim. I think that is because an editor that sits on top of a CLI is much more useful than an editor with a CLI on top of it, at least for my work.
- freetonik 7y agoI hope you excuse me for a shameless plug, but it seems like a relevant enough thread to share my podcast about Emacs: https://emacscast.org/ https://emacscast.org/ While it might seem strange to discuss a text editor in the audio format, I've been getting positive feedback on this project as I try to talk more about underlying philosophy and mindset, not specific details or settings.
- spudlyo 7y agoMy feedback for you is you need to give listeners a reason to keep listening to your podcast right away, you simply can not go on a meandering personal discussion about yourself for the first 10 minutes of a podcast and expect to retain my attention.
- Koshkin 7y agoWell, that wouldn't be much different from the pervasive habit of many authors of YouTube videos to stick their own faces in the frame in one or the other ridiculous fashion. This is unsurprising, because it is self-advertisement that is the true goal of such podcasts and videos.
- Myrmornis 7y agoI routinely follow one podcast (Software Engineering Daily) and one You Tube channel (3blue1brown). Neither fit your characterisation. Perhaps you should consider being a little more selective in your consumption of YouTube :)
- spudlyo 7y agoI'd be more inclined to believe that has more to do with ScreenFlow's (a popular screencasting program) defaults rather than people's inherent narcissism.
- freetonik 7y agoThank you, I think this is fair. I assume you've started listening to the latest episode: it was released after a long break and I guess in my mind it was geared towards existing listeners, with whom I've developed a relationship of sorts. Based on their feedback, it made sense to meander and focus on personal feelings and experience. I find it hard to balance between being insider-friendly and being attractive to new audiences. Perhaps, one of the earlier episodes could be better suited, but all of them contain personal stories. Your comment was quite a sharp revelation tbh, it got me thinking. For now, I chose to define my project as a weird, personal journal rather than anything else, and try to further evolve the relationship with its existing listeners.
- eruci 7y agoI've never seen the need to use anything other than vim.
- busterarm 7y agoI used to say that for 20 years but more and more I've found it wanting and in the last week have been giving Spacemacs a go. I'm sure it's not what I'll end on (very likely to try doom or vanilla emacs), but emacs + vim keybindings is the best of both worlds.
- alpaca128 7y agoSame here. I've tried getting into Emacs for a couple days but gave up. It would mean a lot of effort just to achieve a similar proficiency, for little gain(better syntax highlighting, a few small features). I think the deeper you're already in one of the ecosystems the harder it becomes to switch and the returns diminish further. In my case I'm very comfortable with Vim combined with a tiling window manager and terminal buffers, and I can't stand Emacs' control scheme. So at this point it's simply not worth it.
- spudlyo 7y agoEmacs has recently been seeing a lot of growth from vim users who are migrating to emacs "distros" (like spacemacs and doom) that are pre-configured with emacs' vim-emulation. I found this video[0] a pretty interesting perspective from a die-hard vim user who switched. [0]: https://www.youtube.com/watch?v=JWD1Fpdd4Pc https://www.youtube.com/watch?v=JWD1Fpdd4Pc
- alpaca128 7y agoI've tried those already. Evil, Spacemacs, Doom. All except Doom have a misbehaving Escape key, Spacemacs needs as long to start up as one of the Electron-based editors. In the end it comes down to this: I don't need Emacs. I've tried to find a feature that I really want and that's worth it to switch for(yes, I also tried org mode). But I'm comfortable with my Vim setup, I don't need an email client or web browser in the text editor.
- jypepin 7y agoI really started to get lost when he started talking about never wanting to leave his text editor, wanting to read his emails in Emacs, browse the web in Emacs, have slack and discord in Emacs, etc. Serious question: Why? Is it that hard to alt+tab? Especially, why would you want such distracting features inside your editor, while you are trying to focus and work?
- TeMPOraL 7y agoYou need to change the way you frame this phenomenon. Don't think of Emacs as an editor, but as a fully-introspectable and runtime-modifiable OS built on the "plaintext is king, but 2D" paradigm, that has a high-level language runtime (elisp), and comes with a set of default applications, one of which happens to be a text editor. The desire to never leave Emacs isn't about making it slightly easier to view e-mails next to code. It's about making it possible to use the same autocomplete, same syntax highlighting, same recursive regex search, same multicursor editing, same whatever "magle this thing and put it in your calendar" hack you wrote the other day, on anything that's made of mostly text - e-mail, chats, code, prose, process lists, directory listing. You'd probably have to experience it to believe it, or at least see some Emacs-as-OS user live, but this unification of all computing under a sane, end-user programmable, highly ergonomic interface can boost your productivity and experience in a way that isn't seen anywhere else today, not even during regular Linux use.
- Nullabillity 7y agoAnd even for applications that try to emulate Emacs, they all emulate default Emacs, not your Emacs setup.
- AlanYx 7y agoIt helps if you reframe your question. Emacs facilitates working outside of silos. If you're using Outlook for e-mail, for example, there are some built-in mini-silos you can interoperate with (decent calendaring, decent contacts database, fairly simplistic task management, etc.), but if you want to take notes about an e-mail you received, you might end up alt-tabbing to OneNote and then pasting some text, then writing a deadline down there and then alt-tabbing to Outlook to set up a reminder (there is separate reminder functionality in OneNote but it's rudimentary), then alt-tabbing to Slack and maybe adding a comment there related to the e-mail. The promise of Emacs is working in a single environment for all of this. One more-or-less consistent interface on top of everything.
- mickeyp 7y agoEmacs turns disjoint environments, languages, and activities into a (mostly) streamlined system of workflows and idioms. Explaining just how powerful that is to people who don't use Emacs is difficult. People need to sit with you for an hour or so and watch you work to truly appreciate just what that means.
- klik99 7y agoThere's a certain class of programmers tool that requires constant tweaking, like a road bike used in the city - and typically the users suffer from OCD or stockholm syndrome, because they won't stop evangelizing. I thought emacs was one of THOSE types of tools and the initial experience does nothing to disabuse that. On my 4th or 5th attempt to start using emacs I finally decided to get over the hump even if it took weeks of being slow. I'm sure it's the same story for every emacs user - I literally never turned back. And I don't think I've touched my dotfiles in 2 years. But I get why it looks so esoteric from the outside.
- dandelo53 7y agoCurious, can you identify what anything specific that changed the your thinking that it was THAT type of tool?
- michael-ax 7y agoi believe lists of its obsessively chiseled, unique, world-class features would only get contrasted with its pardonable shortcomings as an editor. so, that question is a no go because the thing has a transcendent dimension, it puts you at the heart of the storm, the center of computing where you commune with the gods of our field in perfect calm. once you slay the dragons. best of luck!
- msla 7y agoEmacs is almost infinitely tweakable, but it's also very stable, so your tweaks tend to have long-term value. This seems to go against the grain of most nontechnical software, like Firefox or Microsoft Windows, where there is no stable UI and new versions typically break customizations with no recourse.
- ph2082 7y agoEmacs (and may be Vim) - Not sure, but seems like it got support for all the programming languages under sun. Thanks to all those awesome people who put effort over the years.
- sc4les 7y agoMy killer feature is when you want to streamline your workflow. Adding a new test runner on VSCode for your favourite language? Possible but takes a lot of effort to get right. Adding one in emacs? I can inspect the source code or my language bindings and add/change the command it’s running. In a few dozen lines of elisp I can add shortcuts to all my daily tasks and even combine them. Search for an error message I get in my tests on Honeybadger? Check. Run code snippets in org mode against my local machine and export the whole document as PDF or markdown to our wiki? Saves me a few minutes here and there
- sys_64738 7y agoWith emacs it feels like I can do almost anything.
- rvz 7y ago> Emacs support is on by default in MacOS. Given that the author is siding with the usability of macOS with something like Emacs over using it in a GNU/Linux distro is somewhat a surprising discovery and perhaps an insight into the falsehood of having a 'consistent' Linux Desktop; even for power-users like the author. If one has to go through a maze of settings and config files to configure Emacs shortcuts to work 'consistently' on either a GNOME or KDE desktop even for a typical developer, then I would at first question myself if such an endeavour is 'worth it' for something as arcane as Emacs. While it was a great spectacle to watch the Vi/Emacs wars, I'm afraid that I would favour getting my work done on my MacBook, thank you very much rather than messing around with something that could be easily mistaken as the editor for the prehistoric years.
- na85 7y agoI use the railwaycat port of emacs, which is frankly what any macos-based emacs user should use. I provides smooth scrolling, an interface with applescript, touch bar support, and lets you use os-native hotkeys including Command-as-Meta.
- spudlyo 7y agoI agree that the Mitsuharu version of emacs is pretty great on the Mac, but the lack[0] of multi-tty[1] support is a deal breaker for me. I like emacs-plus[2], which while not quite as nice as the railwaycat/mitsuharu version, allows me to run text frames and GUI frames on the same server process. [0]: https://bitbucket.org/mituharu/emacs-mac/pull-requests/2/add-multi-tty-support-to-be-on-par-with/diff https://bitbucket.org/mituharu/emacs-mac/pull-requests/2/add... [1]: https://www.emacswiki.org/emacs/MultiTTYSupport https://www.emacswiki.org/emacs/MultiTTYSupport [2]: https://github.com/d12frosted/homebrew-emacs-plus https://github.com/d12frosted/homebrew-emacs-plus
- petilon 7y agoI have been using Emacs for about 20 years, and I love that you can use it on Windows and Linux and character mode and GUI. Love the programmability and the keyboard shortcuts. Where it sucks though is programming language smarts such as "intellisense" completion. Even something basic such as syntax coloring doesn't work reliably--depends on the mode implementation and most of them are buggy. I get by in other editors such as Visual Studio and VSCode by downloading emacs emulators.
- na85 7y agoIntellisense was something I was missing for years. I contribute to a large C#/netcore project and it was a pain to use emacs until I discovered OmniSharp-Roslyn[0]. Auto code completion works pretty much flawlessly for me now. [0] - https://github.com/OmniSharp/omnisharp-emacs https://github.com/OmniSharp/omnisharp-emacs
- OrderlyTiamat 7y agoI have never got omnisharp to work reliably- spent quite a bit of time on it, too. I'm wondering if I should try again or just give up...
- DoingIsLearning 7y agoI am not sure what languages you are working with but have you tried Language Support Protocol lsp-mode? https://langserver.org/ https://langserver.org/
- gchamonlive 7y agoI am considering buying Intellij IDEA ultimate. Been testing pycharm Pro, and docker integration for specific OS settings, remote debugging, refactoring tools such as method extraction, package conversion, and terraform integration is a breeze. Any way I could set such an environment up in emacs?
- taude 7y agoi think it's fair that for big projects, you'll be fine with the IDE. I spend my days in emacs, Intelli-J/Rider, and VSCode... I don't do a lot of code editing in emacs, except for usually dotfiles and other single file operations. I do do a lot of code reading in it, though. Rip-grepping through multiple projects, opening the interesting looking files in Emacs....and then when I think i have what I want, I'll usually open the parent project in VSCode or Rider to do some editing.
- theCodeStig 7y agoJetBrains editors are superbly good at refactoring, IMO that's their one only advantage. Consider working primarily in an editor with LSP support (such as Emacs) and use JetBrains on the side solely for refactoring. Wean yourself off of JetBrains, as LSP improves.
- dragonsh 7y agoThe reason I use emacs over vscode is due to the reason, that it does not waste cycle in rendering html, use irc instead of slack and discord, and does one thing very well which is processing and rendering text. Emacs inspired me to take on and understand functional language. Rust still feels an incremental improvement with memory safety over C. I believe C is unfairly criticised. C has it’s own drawbacks but it is one of the language which really gave me power to tinker with hardware directly and it was refreshing. Rust may be a great language in design but didn’t generate that feeling of directly able to work with hardware as I had when I used basic peek and poke and later C. If org-mode, text processing and lisp stays with emacs it will continue to survive for next 40 years. Yes it needs constant evolution but I do not agree with the list like renedering html, working with slack.
- Zelphyr 7y agoI've been writing Clojure lately but I'm a greybeard (literally) Vi/Vim user. vim-fireplace is nice but I can't help wonder if I'm losing something by not using Emacs. At the same time, Clojure is so wonderfully different from the other languages I know that I don't feel like I have the cycles to learn a new editor at the same time I'm learning a new language. Then again, maybe that's the best time to learn Emacs?
- drbojingle 7y agoAlso a Vim (NeoVim) user. I've been curious about Clojure and I've learned that there's a plugin called Conjure that's suppose to be pretty good. I've yet to try it myself but, might be something to look into. https://github.com/Olical/conjure https://github.com/Olical/conjure
- jdormit 7y agoI've never used Fireplace, so I can't speak to the comparison. But CIDER (the Emacs Clojure IDE) is an utter joy to use - I can't recommend it enough. If you do try it out, I would be interested to hear how it compares to Fireplace.
- elwell 7y agoI learned Clojure and Emacs at the same time, and I have to say that it tested my patience. You need to reset your mind to expect to move slowly for a week or two. With that said, I'm really happy with my current setup, except for days when emacs pinky comes. You can mitigate that with Key Chords [0] and mapping Caps Lock to Control. Emacs' CIDER is the de-facto Clojure(Script) dev environment. [0] - https://www.emacswiki.org/emacs/KeyChord https://www.emacswiki.org/emacs/KeyChord
- justaj 7y agoA question for Emacs user: Do you use the GUI version or the terminal version? I found the terminal version next to unworkable because I couldn't find any terminal that didn't capture some keystrokes that were meant for Emacs.
- dmortin 7y agoGUI. Why should I use the terminal version if I work at a GUI. If you have SSH then you do not even have to log in to sites, to run emacs. Just use Tramp.
- maemilius 7y agoI use the terminal version of Emacs. I've used a number of terminals and currently use Kitty[1]. It had some keybindings that conflicted with Emacs, but the config file has a really handy "unset everything" command. So, I only have keybindings for things I actually use. 1: https://sw.kovidgoyal.net/kitty/ https://sw.kovidgoyal.net/kitty/
- elwell 7y agoI've found GUI plays pretty well with macOS.
- TeMPOraL 7y agoBoth. Roughly 2/3 of the time I use the GUI version on my desktop; remaining 1/3 of the time I use a terminal frame over SSH, connecting from my "sidearm" to that desktop. If you use a 256-color-enabled terminal, the terminal version can look almost identical to the GUI version, which is very nice.
- bitwize 7y agoTerminal. I started using Emacs in the terminal because I wanted to train myself to use its keybindings rather than menus and icons. I haven't looked back because running it in a window is just one more window to manage (rather than being slot 0 in my tmux session).
- zelly 7y agoTerminal support is the only reason I use Emacs. Remote editing is a must. Emacs is the most feature-complete editor available on terminals. The alternatives are: run VNC or RDP to get a remote graphical environment for an IDE or use VS Code's proprietary remote extension. Neither of these get me excited for many reasons. The trick for terminal Emacs is to run Emacs as a daemon and spawn Emacs with the `emacsclient` command. alias e='emacsclient -nw -a "" -c "$@"' You will have to rebind some of the key chords that terminal emulators refuse to pass through, but you really shouldn't be using key chords anyway (to avoid RSI).
- thibran 7y agoThe idea of Emacs will survive, that's quite sure. The editor, I wouldn't bet on this one.
- arminiusreturns 7y agoOn the note in the video about irc, I think there is room to update irc but keep it going. Right now as an in between I'm leaning towards a mumble/irc setup. The only other two things that really catch my eye are matrix and mattermost (which has a jitsi integration). I hate the trend to proprietary chat apps so much. After years of ventrillo and teamspeak, around 2009 I discovered mumble and was using it for years, but in the last ~1year or so everyone started switching to freaking Discord and it drives me crazy.
- swah 7y agoI changed Emacs for Sublime and now VScode - my main reason to change IIRC was that my fingers/wrist hurt from using chords so much :(
- globular-toast 7y agoHow does Sublime or VSCode help with that? Emacs has evil mode which enables a vi style interface.
- swah 7y agoFor once, they help because you don't feel like playing with the editor so much... Emacs was a timesink. Like, where now I use https://insomnia.rest/ https://insomnia.rest/ to interact with APIs, when I used emacs that could/would be solved with elisp files filled with elisp functions to run those calls interactively...
- dmortin 7y agoYou should have simply switched to sticky keys, so you don't have to press keys simultaneously: https://en.wikipedia.org/wiki/Sticky_keys https://en.wikipedia.org/wiki/Sticky_keys Also, you can change the keybindings.
- swah 7y agoI tried a few times, but could not go from "pressing at the same time" to "presssing in a sequence". I just "chorded"...
- innagadadavida 7y agoFabric Bellard’s ema s port (QEmacs): https://bellard.org/qemacs/ https://bellard.org/qemacs/ It’s amazing how fast it is. Unfortunately it is not fully compatible and missing many features.
- newusertoday 7y agothat's 150kb! and already addresses html/css which the author was complaining about...
- Myrmornis 7y agoIt doesn't have an emacs lisp interpreter right? It's funny, for me, emacs is emacs lisp. I sort of don't understand why one would emulate emacs without a lisp interpreter (given it's Bellard I'll probably find out I'm wrong and it does have a complete emacs lisp interpreter).
- nonbirithm 7y agoIf Emacs is to be "the" editor for the next forty years, I really hope it can better combat random hangs. As someone who uses Emacs as a daily driver and loves it to death for its extensibility paradigm it's painful when it maxes out the CPU, I have to restart and have no idea what it could have been. But then again scripting languages don't really have these interruption features by design. I'm developing something with a scripting layer and occasionally come across accidental infinite loops myself. I wonder what e.g. Factorio or Minecraft do if a mod enters an infinite loop. If the answer is "program more carefully" and "don't use badly coded mods" then I guess it can't be helped. Proper concurrency in elisp can't come fast enough. At least then we could have a task manager to kill hung threads with.
- michael-ax 7y ago(setq-default garbage-collection-messages t) ??
- showdeadplease 7y agopkill -SIGUSR2 emacs That will cause Emacs to interrupt whatever it's doing and display a backtrace.
- threatofrain 7y agoPeople who use Racket on Emacs might appreciate Racket Mode, which I only recently discovered: https://github.com/greghendershott/racket-mode https://github.com/greghendershott/racket-mode
- Myrmornis 7y agoI've been using Emacs for 15 years or so. I recommend Emacs to anyone who thinks it would be fun to use Lisp to configure a text editor, even if just a bit. However, that is an "if and only if". If you choose to go beyond using emacs lisp for configuration, then I would say that emacs-lisp is an extremely fun and productive environment to work in: many programming languages give you a good standard library and package ecosystem, but with Emacs lisp you not only get that, but from the outset your project will be born into a mature and extremely fully-featured text editing environment. It's possible to create useful projects with a very good feel, with relatively few lines of code. If you don't have another excuse to use a lisp in your life, this is a very good one. I would like it if Emacs would stop distributing itself with the ridiculous splash screen and 1990s menu icons.
- selfishgene 7y agoCould TeXmacs solve some of the problems mentioned in the slides? http://www.texmacs.org http://www.texmacs.org TeXmacs is based on Guile and there is apparently already a Guile-based implementation of Emacs that is near feature complete. Perhaps a Guile-based Emacs could somehow be embedded as an elisp-compatible interpreter "back-end" inside TeXmacs, much like how Mathematica is separated into a kernel (for computation) and a front-end (for input and rendering) that communicate with each other over a protocol called MathLink. There is also DomTerm from Per Bothner, who perhaps coincidentally has also worked hard to produce his own Scheme-based version of Emacs (by way of the JVM). https://domterm.org https://domterm.org One of the downsides of TeXmacs is the significant keystroke input latency caused by the extensive amount of page redrawing that is often required when editing "rich text." It's one of the main reasons that many still prefer latex-preview mode inside Emacs instead. Maybe latency would be less of an issue inside a graphics-aware terminal emulator like DomTerm.
- aurelien 7y agoEmacs is an extensible editor ... It just need to be adaptive now to programming language evolution. If Lisp have make the job from a while it should be nice to keep that solution, but, to had more flexibility for next generations. A simple example, I works with it every days, IRC, mail, web, source code ... but on Ycombinator, I need to load an html browser to vote ... But yes I works out of Xorg ... and that is an important value that most of editor just don't understand. Thanks for GNU Emacs, I really love it.
- lxbarbosa 7y agoauthors seems to not know melpa and is away from emacs news. eglot is about to ship into emacs core, emasc has pdf reader for decades and remacs is a rewritten of emacs in rust, that had contributiuon from emacs core devs too. and guile is ready to use into emacs as a alternative to elisp
- ReneFroger 7y agoI struggled a lot with my Emacs setup, and developing for clients and languages. But I was able to puzzle my pieces together with https://emacs.zeef.com https://emacs.zeef.com , it is your friend