9 ms·
Emacs is not just an editor (2015)
- ihatepython 4y agoI thought it was an operating system?
- ramin_hal9001 4y agoBack in the 80s and 90s people did not often distinguish between app platforms and operating systems, because back then there were no widely-used portable app platforms like Java or the Web. Nowadays though, with a few popular app platforms running on numerous operating systems, there is a clear distinction between OS and app platform. Emacs is an app platform for client-side applications.
- lispm 4y ago> Emacs is an app platform for client-side applications. Yes, exactly. That app platform provided a system-independent UI for text- and editor-based apps. But I would think that even in the 80s/90s there were a bunch of other examples for app platforms.
- gpderetta 4y agoOn the other hand these days[1] we run OSs within OSs via virtualization. And we can run apps on bare or virtualized metal without an OS. So the I think that the distinction between app platform and OS is almost non-existent. Given virtualized hardware, even OS as an hardware abstraction client is not so clear cut. I'll say it: the browser is an OS, sue me. [1] we always could of course, it was just not mainstream
- comfypotato 4y agoThe farther away you move from the editing functionality, the more bugs start showing up. I’ve fallen into something of a cycle of adding packages until I’m annoyed by things breaking which results in me cutting back down to the basics. I’m always amazed, once I get back to bare emacs and mostly elpa packages: everything works so well.
- doesnt_know 4y agoIf you start using an extendible tool like Emacs for something and put in the effort to learn it's key bindings, how it works, it's language if it has one etc it becomes increasingly annoying and a chore to use other software. You either start trying to cram every possible task into that tool or try to find other software that was developed specifically for users of that tool (eg: Nyxt and Qutebrowser). It feels like a very natural thing to do at the time even if it sometimes results in subpar results like what you're describing. I've personally declared "Emacs bankruptcy" multiple times and even go through periods of completely changing workflows if I get annoyed enough.
- taeric 4y agoI mean, this is true of all computing? My phone works rather well, and then I see all of the crap family adds to their phone. Then I'm shocked it works. Same for computers at large. Let parents or kids install whatever, and expect woes. Emacs can feel worse, in this regard; but, I for one love how open it is to extend. Literally a defun and you've extended it.
- Jtsummers 4y ago> Emacs can feel worse, in this regard; but, I for one love how open it is to extend. Literally a defun and you've extended it. Which is how all (or at least most) of our computing systems should work. The inability to easily extend programs is what leads to the "need" to replace them so often with other programs that satisfy unmet needs or capabilities. Which ends up mostly creating churn, not value or utility.
- otabdeveloper4 4y agoEmacs Lisp is probably the worst language for "programming in the large". (After Javascript.) Sorry, but it has to be said. Using a more sane language would cut down on the bugs and dependency problems in Emacs in a huge way. P.S. Been using Emacs for over 25 years.
- ernst_klim 4y ago
- martin1975 4y agoare there plugins/add-ons to emacs for Java that lets a dev do the kind of refactoring available in eclipse or intellij? It seems emacs brings a lot of power to develop such tools with it, but are the tools there yet or am I stuck having to write every little thing on my own by having to master lisp?
- fiddlerwoaroof 4y agolsp servers supply most of the refactorings available in VSCode.
- pschw 4y agolsp-java mode should handle most of that: https://emacs-lsp.github.io/lsp-java/ https://emacs-lsp.github.io/lsp-java/
- squeegee_scream 4y agoI worked at a place where several people used a Jetbrains IDE and they loved them. We were doing web dev with Go and TS. So I asked one day what were the killer features that they liked so much and I don't remember what they listed but Emacs had all of it. So I would assume that applies for Java.
- simiones 4y agoEmacs definitely doesn't have any of the advanced refactoring and code analysis features of a Jetbrains IDE. Now, these are all mostly niche features that you'd use maybe once a month, but when you do need them, they save huge amounts of time for large code bases. Here are some examples: - Extract class / method / function (takes a piece of code and converts it to a class/method/free-floating function, while detecting all context dependencies and turning them to parameters or fields; also generates the proper constructors to populate those fields; and calls the right constructors/methods passing those parameters from context) - Extract parameter / field (takes a local variable and makes it a parameter/field, and identifies all callers to propagate a value) - Versions of the previous extractions that can go through a deeper call stack, automatically propagating along all functions along the way; essentially identical to using the same thing repeatedly, but in a single step - Data flow to/from here (takes a variable and tells you something like 'the value here is coming from this parameter, which was populated from that field, which is assigned to in these two places; in the first place, it is assigned from this IO function; in the second place it is set to the value of this parameter which is populated from this constant; for "from", it is doing the same, but for all downstream uses of this value)
- II2II 4y agoSpeaking as someone who typically uses Emacs as anything but an editor: Emacs is recognized as an editor because it was designed as an editor with macros (thus the name). Those who call Emacs an editor are rarely trying to diminish what it is. If anything, they call it an editor since that is the main entry point to using it and it is much less intimidating than emphasizing elisp. If anything, the opposite is true: those who try to diminish Emacs point out the absurdity of referring to it as an editor. To them, what has been accomplished through elisp is more of an indicator of a lack of focus or of bloat than it is of Emacs versatility.
- throw2311 4y ago[flagged]
- Jtsummers 4y agoWhat is an editor in "modern parlance" then?
- emodendroket 4y agoSo, in other words, it is? I mean yanking and killing are cut and paste by any reasonable standard.
- throw2311 4y agoApart from the fact you have a kill ring you can edit like any other file sure. In the same vein a car is a tricycle.
- dinkleberg 4y agoIf you're a vim user but interested in trying out Emacs, I'd highly recommend Doom Emacs: https://github.com/doomemacs/doomemacs https://github.com/doomemacs/doomemacs. I had been using neovim as my main editor for a while, but the vim bindings (evil) in Doom Emacs are excellent. It was a lot to take in at first, so I went back to neovim. But I started using org mode more and more until I finally just went all in on Emacs. Now I understand that the editor war is pointless. Bringing vim + emacs together is bliss.
- gnulinux 4y agoSpacemacs comes with evil-mode (emacs vim emulator) default and it's very feature rich, so I think for someone coming from vim it'd be ideal. I personally use spacemacs with evil-mode disabled (I don't do vim, never did, have no plans on learning it) and I absolutely love. It's just a bit unstable but overall great operating sys... ehm editor.
- MikusR 4y agoSpacemacs is also dead. Last release was 5 years ago. Since then emacs has had many significant updates.
- imran-iq 4y agoHonestly the biggest blocker for me is just how slow emacs feels compared to (n)vim. Using both in a gpu accelerated terminal emulator, emacs just feels slower especially on larger files. Granted, I have not tried to use emacs once the jit landed in 28 (or was it 29?). But it's something I really would really like to use since instead of having a different application for irc/mail/etc it could all just be emacs.
- cybrexalpha 4y agoOver the course of my career I've moved from Emacs (in-terminal), to Spacemacs (emacs mode), to Spacemacs (vim mode), to Doom Emacs (vim mode), to neovim (in-terminal). After a while of using both emacs and vim text editing, I found the vim way much easier for me. I used emacs with "evil mode" (vim keybindings) for a long time, but I wasn't using all of the other features the author here speaks about. So I found it easier to run Neovim alone instead of the extra complexity of getting emacs to behave like vim.
- lc9er 4y agoDid you customize Emacs much? Or add functionality, rather than just customize? I'm a long time vim/nvim user and as much as Lua brought to the party, I'm finding I want to add functionality, and that feels more appealing in Emacs.
- cybrexalpha 4y agoMostly just LSP integration. I didn't really feel the need to manage my email or filesystem with Emacs. Even git I prefer to use on the command line than use an editor/IDE plugin for.
- lc9er 4y agoYeah same. I'll probably spend a some more time with Emacs, having fun toying around with it, and then realize all I really want is a fast, snappy editor. Then I'll be back to nvim. Wash-rinse-repeat every couple of years.
- cybrexalpha 4y agoNothing wrong with that. There was nothing wrong with emacs in vim mode — it functioned just fine. I'm familiar with lisp so it wasn't even hard to configure particularly, just not as easy as neovim for my particular use-case.
- jwrallie 4y agoI know the basics of Emacs as an editor, and I understand that it is possible to use Lisp to extend it, but I have not come in contact with a good resource to teach me the fundamentals of how to do so. I know a bit of Lisp, I am more curious about how to expose the existing interfaces (API), where and what to look for. Does anybody have any suggestions? I like learning more by seeing somebody do it than by reading reference documentation if that helps.
- anon35 4y agoAn excellent tutorial that takes exactly this approach (building up to a novel Emacs mode for NYT Crosswords, of all things) is the O'Reilly book "Writing GNU Emacs Extensions, by Bob Glickstein.
- db48x 4y agoIf you like seeing how other people have extended Emacs, then I recommend reading the source code of existing Emacs extensions. Emacs comes bundled with more than a million lines of such code you could read, and there is another million or so available to download from the package archive. There really is no shortage of examples to choose from. Also the Emacs Manual and the Emacs Lisp Manual, which come with Emacs, very thoroughly document the Emacs extension interfaces.
- donio 4y agoThe Emacs Lisp Reference Manual is the obvious resource. It also comes with Emacs so once you are comfortable with the Info reader you can have it at your fingertips at all times. https://www.gnu.org/software/emacs/manual/elisp.html https://www.gnu.org/software/emacs/manual/elisp.html Emacs also has comprehensive and high quality docstrings on functions and variables. I find them to be much more useful than in most other languages. You can very often get by just reading the docstrings. And finally don't be afraid to look at the source. Bind find-function and find-variable to some convenient keys. For those who are new to Lisp or want a refresher the Elisp Intro is great too: https://www.gnu.org/software/emacs/manual/eintr.html https://www.gnu.org/software/emacs/manual/eintr.html Start simple. Find a personal itch to scratch, write some interactive functions that you can bind to keys. Or a hook to make something work way you'd prefer.
- freetonik 4y agoI consider Emacs a framework for building (primarily) text-based applications. By default it comes with multiple applications, lots of building blocks and a very rich API.
- cglong 4y ago> They basically "live" within Emacs only. They've added another abstraction layer on top of their classic operating system. This does provide great abilities whose benefits can't be understood by most people unfortunately. I'd be curious to know what are these benefits. I traditionally prefer specialized tools for different purposes, so would be curious to know what others prefer about the Emacs-only life :)
- natrys 4y agoEmacs is more like an ecosystem, within it you absolutely can and do have specialised tools for different purposes. The benefit is that, traditional process based boundary forces you to use IPC mechanism for combining different tools, e.g. unix pipes. This is fine for many things, but your communication medium is usually still a stream of bytes with no structure. Unless what you want can be achieved by simply combining two or more tools, when you write bespoke tools, you end up doing serialising and deserialising data over and over again just to send through pipe. In Emacs all "plugins" reside in same process space, so they aren't handicapped by requirement of structure-less IPC. You can simply write functions that work on each other's structured data. This is more pronounced in case of TUIs such as ncurses programs (as opposed to CLI programs), they can't be composed or combined with each other easily, but in Emacs that's not a problem because underlying data layer remains accessible all the same. Overall, the mechanism of composing multiple specialised tools to produce gestalt effect is arguably more streamlined in Emacs, not less. On the flip side, this homogenous ecosystem comes at the expense of not having an array of languages at your disposal like in unix. But tbh elisp is a fine general purpose language, so that's not as big a problem as you might think. There are other concerns like security, plugins being able to peek into another's data is one of seminal reasons why OS process as boundary is a thing.
- lejalv 4y agoEmacs is fantastic, and yet it has to fight the uphill battle of "everything is a string". So even though emacs is "much more than an editor", in the words of Voit, it is "not enough" (https://project-mage.org/emacs-is-not-enough https://project-mage.org/emacs-is-not-enough).
- shanebellone 4y agoWhy choose Emacs or vim over an IDE? I'm still not clear on the advantages/disadvantages.
- kelipso 4y agoI do almost all my coding over ssh and it takes about 5 mins to set up emacs by installing packages and copying the config file. I tried VScode and Pycharm multiple times and I kept getting errors so I switched back to emacs.
- alkonaut 4y agoThe one that immediately stands out is the ability to run it inside a shell (so also on a remote system).
- shanebellone 4y agoI would consider this a USP rather than simple preference. Although, in what circumstance would live editing really be value-added?
- brabel 4y agoI use emacs (sometimes) for two main reasons: * it's much, much more lightweight than IDEs like IntelliJ and VSCode. * it supports every obscure language I like to try, not just the popular ones the IDE vendor has interest in supporting (third-party plugins for other IDEs tend to be pretty poor, IMO), and adding your own "macros" for new languages is very easy. If you have a very powerful laptop with a lot of RAM and don't mind only using that for programming, and you only use languages that are well supported for your IDEs, then I don't think you would like emacs. Otherwise, it's great to have it!
- worldsayshi 4y ago> it supports every obscure language I like to try For syntax highlighting and other syntax related features yes. But I often felt that it was a pain to get more involved features like debugging to work. I don't remember what the story was for automatic refactoring. I don't remember that working.
- well1912 4y agoAnecdote from this morning: I was taking notes on a technical book in a field I have only a little experience with, and came across a lot of words that I wanted the definition of. At first I opened wiktionary in my browser, but then I thought it'd be nice to have everything in Emacs, after which I used `M-x eww`, `!wikt <term>`. Then on a whim I tried `M-x dictionary`, and lo and behold Emacs has a built in dictionary, which you can even install new dictionaries in and search across. The default dictionary wasn't perfect, with a few terms not existing, but it's hard to beat the convenience for the 95% case. As a bonus, it defaults to searching the word under your cursor. The point here is less "hey, Emacs has a dictionary!" (I'm sure many/most editors do!), more "hey, Emacs has a lot of use cases built in and they're easily discoverable." It's a great platform with a lot of care put into it over the years by different people, and if you come to it with the perspective of "it's just an editor" you'll be missing out.