I love Emacs. For all of its warts, "historical reasons", and vestigal features, it is the editor that really opened my eyes to alternative ways to do introspection and programming, in general.
I want to believe the friction comes if you try to "fix" Emacs too early.
You kinda have to conform to the Emacs way when learning it and leave all of your assumptions at the door. I see a lot of people who come to Emacs from Vim expecting Evil Mode to be the panacea for Emacs. It's not. At the end of the day, it's still Emacs and people run into friction because they expect it to be Vim-ish all over or they want to force Emacs to be Vim.
Personally, I came from Vim to Emacs via Spacemacs. I was a bit of a zealot about Vim until I tried Emacs. I left all of my expectations behind and I was pleasantly surprised by many things inside. Were there things I disliked? Of course. But, I wasn't looking for an excuse to hate it.
> I see a lot of people who come to Emacs from Vim expecting Evil Mode to be the panacea for Emacs. It's not. At the end of the day, it's still Emacs
Yes. I've been Emacs guy for close to two decades now, and switched to Evil about four years ago, because Vim controls are just better, no two ways about it. However you still need to escape back into Emacs every now and then to do various un-Evil'd tidbits. That's easy for me, but would be problematic for someone who expects Evil to (as you put it) "fix Emacs".
I had a similar path to Emacs: became really proficient with Vim, avoided Emacs since everyone I knew hated it, saw someone doing things with incredible speed and efficiency in Emacs at Enova (hi Kyle) that I had never imagined could be done, tried Emacs myself, and spent weeks customizing it to become extremely fast with rapid development in Clojure using CIDER.
But now that I do vanilla front-end dev, I have found VS Code to give me nearly all the same productivity I had before, but with practically no configuration, and in an editor that actually has reasonable per-pixel scrolling. (Emacs added per-pixel scrolling in 2017 but still got it wrong somehow.)
Being a vim guy myself, I only use Emacs (Spacemacs, to be precise, so as to get rid of all those a-x a-y a-z a-m-s-x type shortcuts and replace them with something ergonomic) as a git client - because Magit is the best git client out there.
I’ve tried using Spacemacs as a main editor for a while, but it’s too much of a mess, and if anything goes wrong (and it often does) you’re stuck with obscure lisp tracebacks, thanks but no thanks, I’ll use vim or kak as the actual text editor. I also noticed I spent an enormous amount of time constantly tweaking my spacemacs config as opposed to doing actual work.
if anything goes wrong (and it often does) you’re stuck with obscure lisp tracebacks
Is Spacemacs really that broken? I use the same GNU Emacs configuration across Windows, FreeBSD, Ubuntu, CentOS, and macOS, along with packages like tramp, magit, slime, and python-mode, and the worst thing that's happened in recent memory is that either jinja2-mode or salt-mode (I forget which) doesn't indent things the way I like.
I also have had issues getting Spacemacs up and running (with Windows), what has worked better for me as a Vim user is to just use vanilla emacs and install the evil vim mode plugin only.
I've had several bouts of trying to learn emacs throughout my life.
It isn't necessary to list all the benefits, sure, there's a lot. Yes, I get it's "extensible" and you can write little elisp programs to do just what you want.
Here's the obstacle: Motor skills. It just takes way to long to first memorize reams of commands and then to train your fingers to issue those commands effortlessly. In the meantime, searching, "apropos" and googling stuff isn't an attractive thing to do when you have _actual_ work to do.
That's a serious obstacle and no listing of all the awesome-ness of emacs is going to convince many of us to put in that kind of effort.
> isn't an attractive thing to do when you have _actual_ work to do.
Leaning any new tool when you have work to do is never an attractive thing. Whether that's an editor, a language, an issue tracker, or any tool. There is always a period of learning that is less productive, but the hope is that after learning the new tool your overall productivity is higher, resulting is more gains in the long run.
Emacs out of box comes with menus and toolbars (underrated features) to accomplish most basic commands, so you shouldn't have to memorize a whole bunch of stuff to start being modestly productive. I think it's way ahead of vim in these regards, you don't have to learn a whole new paradigm of "modal editing" to get even the basics done.
I had a similar experience to yours until I realized that the extensible part also means you don't need to use the builtin commands and shortcuts. I have been using emacs for 10 years (used vim for about 12 before that, using emacs with evil-mode now) and, to this day, I have to google 'how to quit emacs' when I am faced with a vanilla emacs :)
I just feel it's "my" editor more than any other editor I've ever used.
> Here's the obstacle: Motor skills. It just takes way to long to first memorize reams of commands and then to train your fingers to issue those commands effortlessly.
Do you know VI? You can use viper-mode and use it as VI. And it's not a handful of keystrokes as the likes of Eclipse implement, it's a full blown VI mode.
Your comment about "apropos" tells me you have never ever tried Emacs help system. There is a nifty tutorial, you can search for commands, functions, what have you. Need to know what happens when you type a keystroke, even down to the source code if you want? describe-key. Need to know anything about your enabled modes? describe-mode. And so on. There are more describe commands, but I never had to memorize them due to completion.
The only times I feel like using something like VSCode are:
– Learning a new and popular language: as of late, you can find nice extensions which sometimes even integrate installation of external commands, so you have a working system out of the box. Since I'm learning, I don't yet know what I need.
This use-case is diminishing as of late due to Spacemacs.
– When I feel the need to have something "fancier" in terms of UI widgets. For instance, the popup golang help that VSCode provides is less disruptive than having a pop-up buffer.
This is just a case of being attracted to eye-candy, which the exclusively text-based does not provide by design (although it can display graphics to some extent).
That's it. I always end up going back to Emacs as it provides so much more. And specially when interacting with Git, Magit is wonderful and far better than any applications I have seen - including the command line. Org-mode is always at my fingertips.
One thing though. If you are unwilling to learn Emacs because you are happy with your environment and you have other priorities, that's perfectly fine.
If you are unwilling to learn Emacs _even though you feel that there are benefits_, then that's not a good sign. We need to learn new things all the time to stay relevant and productive. If there is a new tool, language or process that will improve your professional life, you are doing a disservice to yourself by refusing to learn.
Personally I like to bind virtually everything to a sequence of keys starting with a leader key instead of control this alt that coltrol the other thing.
Hydras further provide an attractive discoverable menu to remind you of what options are available.
Major mode hydra let's you define a hydra per mode and pops up the correct one based on the mode you are in.
A useful thing is that it's possible on all major platforms to bind modifier keys like for example shift to produce a different symbol when pressed and released instead of held in combination with another key.
This means that for example you could use left shift to start global sequences and right shift for mode specific operations preferring short sequences for common operations.
Example
lshift -> b switch buffers
lshift -> f r find recent files
Because these can be bound to unused global keys example f13 if your keyboard lacks such they can be bound globally and work everywhere regardless of mode or with or without evil.
Because of the friendly visual indication see the pictures of major mode hydra even if you don't recall a binding you don't need apropos to find it.
For functionality that you haven't bound fuzzy matching makes it easy to find said functionality and call it in one step.
I understand that your experience is yours but I also believe that you might be going about it the wrong way.
First, you don't REALLY need to know anything but Meta-X and Control-XS, Control-XF, Control-XC to get going. Those aren't really that hard to remember or make muscle memory for, IMO. It IS hard to have to go back a bit to re-integrate how to do things in a new way if you're already happy with your existing workflow, so if there's no value for you, then... don't use it. Use whatever works for you.
That's how I feel about Visual Studio Code. I've tried it several times, and it's fine for what it is, but I don't see how it's worth it to relearn to do the Visual Studio Code way all the things I currently do the Emacs way.
Furthermore, there's little to no chance of me being able to type up a little program in Visual Studio Code, eval it on the fly, and add it to my config instantly. You have to write a plugin, because of the model the editor uses for extensions. And that's the difference between an extensible editor and an editor for which extension is an integral part of the workflow.
And virtually no other editor or IDE I know of has the equivalent of M-.
> Here's the obstacle: Motor skills. It just takes way to long to first memorize reams of commands and then to train your fingers to issue those commands effortlessly.
You don't have to use the builtin keys. I don't. There is Spacemacs, evil mode, etc. so you can use VI keys if it works better for you.
Emacs is about making it work like you want. Emacs adapts to you, not the other way around.
The time investment is worth it. Once you ease into the keybindings you rarely think about it, well at least for the most common things you do.
The single greatest thing about Emacs is the robust basic modes, which most other modes extend from. So far I haven't used anything as good, although I feel the gap is lessening with VSCode.
I really dislike switching between mouse and keyboard. Emacs's consistency and mouse-free operation speaks to my heart the same way Mark Zuckerberg wears the same shirt every day, it's one less thing to think about, and that's why I love it.
Spacemacs is better about this, it shows possible continuations while you issue the command. Not to mention that vim keybindings are much saner.
This being said, I've abandoned Spacemacs for VSCode (with amVim). I feel really diety about this, but at least "jump to definition/declaration" in C++ works like it should.
To me the serious obstacle that vanilla emacs is not that powerful at all.
The article lists over 20 extensions you need to install to "feel the power". And every emacs user will have their own set of extensions, carefully curated. Everyone ends up with rather huge init.el setups with increasingly bizarre and arcane settings.
After over two years of using emacs and a 437-line init.el[1] of my own I gave up when one day it stopped properly displaying cyrllic text in jabber.el and some extension minor update broke something major.
Very nice list, thank you for the writeup and for sharing this!
One interesting thing about the Emacs modes listed here is that many one of them are by themselves already enough to justify the use of Emacs for at least someone in specific application domains.
For example, there are statisticians who do not use much of the breadth of Emacs, except for the listed ESS mode, and who do a lot of their work in that mode. The same for magit, Org mode, calc, dired, Tramp and others.
In addition to this richness in features and flexibility, a major attraction of Emacs is that switching between all these aspects is instantaneous.
I used Emacs for 15 years. I've been off of Emacs for about 5-6 years now and I won't ever go back.
Here's why:
1. Refactoring. The refactorings in IntelliJ are amazing. Amazing. The ability to say (yeah, this class is now called Foo instead of Bar) and have everything automatically changed is outstanding. This is a basic example of course but you can also do things like remove a function parameter, and also do things like lookup reverse symbols.
2. Stable. IntelliJ is just amazingly stable. Part of this is that I had to write elisp to get Emacs to do stuff that IntellJ just already provides for me. Everytime Emacs would upgrade I would have to upgrade Emacs.
3. Pair programming. I could NEVER work with other engineers on their code and vice versa. We just didn't speak the same language.
Now mind you I also created a lot of the code you use in Emacs. I co-created EDE for example.
Java is more like assembly language programming at this point in software history.
You shouldn't be editing Java with any editor, let alone emacs.
This is because if you are using 3 frameworks, and 30 classes with DI and reflection, just to post a json to a http end point, you should be using an IDE to handle that kind of madness.
I'm using Emacs for my daily tasks, both writing and programming. One question I have to more experienced Emacs users: Can you recommend an email client? It needs to be able to display html mails. Currently, I use claws-mail and am fairly happy with it, except for the search. I've got about 30,000 mails in the inbox and full-text searching them takes too long.
Is there a way to transition my claws-mail folders to Emacs, or ideally use both programs at the same time for a while?
The article recommends notmuch-emacs. But I'm afraid of 2 things, (i) loosing existing mails in the transition (due to e.g. faulty conversion tools), and (ii) that after a complicated transition I'm not happy with the new setup. Any recommendations? Is it possible to use the claws-mail email inboxes directly in Emacs?
Another thing is org-mode. I never really managed to get deep enough into it to really see the benefits. I've even bought the printed org-mode manual, but the setup seems so complicated. Can someone recommend a good "light" tutorial for it? What are you using it for?
> Another thing is org-mode. [...] Can someone recommend a good "light" tutorial for it? What are you using it for?
I would recommend starting using Org just for note taking, using its outline capabilities. It's simple and avoid being overwhelmed and buried in features. One tutorial for this is [1], but even then it has advanced parts you can ignore at first. There are many Org tutorials, at some point it's best to just pick one and dive in instead of looking for the best one and ending up paralyzed by choice (a problem sometimes with Org and Emacs...).
Then once familiar with this you can extend your usage in various directions: add TODO and agenda for GTD, use it to export to nice web pages with a "read the doc" theme [2], etc.
I use mu4e. No better way of ripping through emails and getting down to inbox zero. When there's an email I need to action I can very quickly turn it into an org-mode task, and then archive it, knowing the task will contain a link to the email body. I rarely have more than 10 emails in my inbox.
Org-mode is like a Swiss army knife. I honestly started using it, unaware of the whole GTD functionality. I was using it as an alternative to markdown, as it allowed me to use CSS with the exported HTML. Then I learned of the GTD aspect and started using that as well. Now I have my init file written in org-mode using babel to drag out the lisp.
For email I like mu4e. I set it up to use Imap it is a bit slow to load up. I had the same fears about losing email, I just created an additional gmail account and forwarded, played around with it till I wasn't concerned anymore.
You don't have to do everything, I just started adding pieces of his .emacs file one at a time until I was happy with way it worked. Very nice if you want to do GTD type open task reviews on a recurring basis.
For email in Emacs, I've previously used VM, and also Gnus for a while, paired with BBDB addressbook and some of my own add-ons.
VM mostly worked very well (and Gnus was probably more powerful than any forum software/site you've ever seen), but there were a few pros&cons of preferences, including being tired of having so much in one Emacs process, so I moved.
One of the biggest downsides of moving email out of Emacs is that I lost the utility of BBDB. Which is doubly a shame because it was written by JWZ, yet Netscape Communicator and later Mozilla things that should've been influenced by JWZ have much-much less useful addressbooks.
If your emails are in anything other than mbox format, then notmuch will not modify your email files - it merely builds an index for them so you can query. That should take care of your search needs.
As for HTML email, if you mean HTML converted to text, then notmuch will do it. If you mean show it as proper HTML, it won't. It can also show images inline (although my setup stopped years ago and I haven't debugged why). To be frank, I don't like how it converts an HTML email to text - it doesn't even preserve links (i.e. it shows the text only, and not the URL it links to). I need to look into how I can improve it.
But despite these headaches, I still use it. It's good.
I remember giving Emacs a serious go 5 years ago. I really wanted to like it but the archaic mode switches[1] were just too much when you are used to the convenience of Ctrl+C and Ctrl+V (I'll call these "modern shortcuts").
I've tried using ErgoEmacs[2] but what I've learned was that it doesn't really play nicely with all the other extensions.
It's a shame because I've wanted to find something a bit more powerful than nano for config and code updates on remote machines.
“I don’t care what editor you use for source code – you can use Quick basic for all I care – but look, you have to know that Magit exists. Even if you don’t use Emacs in any other capacity, you may want to use it for Magit.”
There are exactly two instances of “Magit” in this web page and I just quoted both of them.
So, emacs is a platform for text-based programs to do things that i already have other stable, reliable, and familiar programs to accomplish. I’m not sold. I need a better value proposition before i feel sold to spend my time climbing that learning curve.
I've been a vim guy for 5 years now. And last month I tried to switch to emacs. But it just didn't feel natural for the following reasons:
1. My usual coding session would involve Vim+Tmux, on trying the same with emacs. I was seeing some lag(although small, but noticeable).
2. I am very used to the key strokes "g-d, g-D" in vim to quickly move around calls/declarations of functions. For that emacs makes use of Ctags, which is more versatile but not great for a quick lookup.
3. I have had better luck with Vim's linting plugins like ALE and haven't found similar plugins for Emacs which was eventually a major game changer to switch back to Vim.
On the other set of tools:
- Org-mode and latex-preview-pane-mode are the 2 set of tools which I have integrated into my workflow and they are very suitable to me.
- ERC is also pretty neat.
- I have tried Magit and although seems useful, for my use case of Emacs currently doesn't hold a lot of promise.
- Switch to Gnus, mu4e as mail clients replacements is too painful, at least to a Thunderbird user.
I am currently only using Emacs for org mode, and overall it works great for taking notes, keeping track of tasks, and outputting documentation.
However... I would _love_ to see a GUI version of just org mode which would combine a few features of OneNote, well I would be happy if it only made adding pictures better!
If only Emacs had become the VM of the web rather than Chrome! I'm more than ready to trade our impending soyberpunk police-state dystopia for a case of carpal tunnel syndrome.
I used emacs for years and had accumulated about 10000 loc init.el over that time.
With my new employer I'm forced to use notepad++ on Windows. The difference in actual productivity: zero!
Emacs is a nice hobby but when you want do get shit done it won't help you being more productive except for some rare corner cases.
So don't buy into the Emacs Plattform. Maybe just learn the basics because sometimes it is the only editor installed. If you spend more than two hours on it you are wasting your time.
I've used emacs for 25 years, and I kinda agree, actually.
What keeps me using it is precisely that it's been stable that long. Given that I don't really need that many features, it's been nice to not have to change editors, what, 5 or 6 times in that period of time?
I've got some very light customization to expose the macro features more conveniently, and like three or four keybindings for my major languages I work in.
Other than that, part of what keeps me in emacs is that it supports SSH'ing to remote systems to edit things very well, so I can use my desktop editor in all kinds of environments with everything I'm used to, no matter where I'm having to edit something, as long as SSH can get to it. While there are other editors that can do this to some extent, I find that when it's nominally "time" to switch to New Editor of the Half-Decade it's often a missing or poorly-implemented feature.
Also, as strange as it may seem, a lot of editors aren't all that great at editing 5 files at a time. They certainly can, but they're not that great at it. Emacs is pretty good. I don't even use any funky extensions for it.
I still don't really know elisp. I've seen emacs wizards, and I'm not one, despite 25 years with it. Given that editor features aren't really that important, why not pick one decent tool and stick with it? At least then I'm not surprised when I have to pick up a new tool and, oh, crap, it doesn't do networks, and, tabs, seriously, tabs for multiple buffers with no keyboard access based on names? No.
(I do also know enough vi to get around in it when I have to use it on some system for some reason.)
Once or twice a quarter I'll end up with a relatively mechanical task that I can do with a keyboard macro, query-replace-regexp/dired-do-find-regexp-and-replace. That normally saves me at least 30-45 minutes compared to either doing it manually or writing a script.
I don't know notepad++, so I don't know if you can open any file in it from any directory just by typing the file name. I never navigate directory structures when opening files, because emacs completes files for me from any directory on my computer, and it saves me a lot of time, because I can open any file literally in seconds.
It would set back my productivity a lot if I had to use the open file dialog for this.
- learn elisp instead of learning "emacs"
- if you want to memorize something, just learn the name of the command: if you use it very often then learn/define a keybinding for it
---- part 1: I'm happy I've learned elisp in the last year
People complain about memorizing emacs keybindings, but most of the time I just call the command name with M-x command-name. Only if I find myself using it often I bother memorizing or setting a keybinding for it.
As for why I use emacs, I started using it for org-mode, which I considered it's only killer feature at the time. Since 1 year ago I started learning elisp and I think only now I can see what's the whole point of emacs.
In just 1 year of (beginner-level) elisp I wrote 75 files containing elisp functions to help myself with dozens of tasks that comprise:
- move/mirror parts of ascii diagrams
- automate some tasks just clicking on custom org-mode links
- wrap ammonite-term-repl to get Ammonite completion for scala scripts [1] [2]
- add rudimentary support for kawa scheme to geiser (my first pull request ever (still waiting for response))
- control video player from within emacs while I'm writing subtitles
---- part 2: you can have different emacs configurations
Another common complain is that emacs tends to become slower as you add more and more packages.
As a spacemacs user, I noticed that too.
For this reason when I don't need spacemacs goodies I use multiple, different emacs configurations (with evil-mode though).
This is how I do it:
1 - Make a new ".emacs.d" user directory somewhere
You could achieve the same result using cask, which would be more elegant imo, but takes a couple of seconds more to start.
---- part 3: use elisp to call other languages
As for elisp, once you have learned enough of it (not much), if you are determined not to use it, there are different ways to call other languages from it:
- clojure through cider plus clomacs
- common lisp through slime
- shen through shen-elisp [3]
- different compiled languages through dynamic modules:
- C (example at [4])
- go (example at [5])
- ... many others I haven't investigated...
Just out of curiosity, I explored the shen-elisp path. I tried a whole week to see if I could replace it with shen-elisp. At the end of the week I learnt how to call elisp from shen-elisp and shen-elisp from elisp... and the fact that every time you restart shen-elisp you have to re-declare types. However I abandoned the idea for 2 reasons:
- Plain elisp is faster: I don't know the implications
- I wanted to focus on elisp so I can contribute better to other elisp projects
[+] [-] RaycatRakittra|6 years ago|reply
I want to believe the friction comes if you try to "fix" Emacs too early.
You kinda have to conform to the Emacs way when learning it and leave all of your assumptions at the door. I see a lot of people who come to Emacs from Vim expecting Evil Mode to be the panacea for Emacs. It's not. At the end of the day, it's still Emacs and people run into friction because they expect it to be Vim-ish all over or they want to force Emacs to be Vim.
Personally, I came from Vim to Emacs via Spacemacs. I was a bit of a zealot about Vim until I tried Emacs. I left all of my expectations behind and I was pleasantly surprised by many things inside. Were there things I disliked? Of course. But, I wasn't looking for an excuse to hate it.
[+] [-] eequah9L|6 years ago|reply
Yes. I've been Emacs guy for close to two decades now, and switched to Evil about four years ago, because Vim controls are just better, no two ways about it. However you still need to escape back into Emacs every now and then to do various un-Evil'd tidbits. That's easy for me, but would be problematic for someone who expects Evil to (as you put it) "fix Emacs".
[+] [-] sdegutis|6 years ago|reply
But now that I do vanilla front-end dev, I have found VS Code to give me nearly all the same productivity I had before, but with practically no configuration, and in an editor that actually has reasonable per-pixel scrolling. (Emacs added per-pixel scrolling in 2017 but still got it wrong somehow.)
[+] [-] aldanor|6 years ago|reply
I’ve tried using Spacemacs as a main editor for a while, but it’s too much of a mess, and if anything goes wrong (and it often does) you’re stuck with obscure lisp tracebacks, thanks but no thanks, I’ll use vim or kak as the actual text editor. I also noticed I spent an enormous amount of time constantly tweaking my spacemacs config as opposed to doing actual work.
[+] [-] xenophonf|6 years ago|reply
Is Spacemacs really that broken? I use the same GNU Emacs configuration across Windows, FreeBSD, Ubuntu, CentOS, and macOS, along with packages like tramp, magit, slime, and python-mode, and the worst thing that's happened in recent memory is that either jinja2-mode or salt-mode (I forget which) doesn't indent things the way I like.
[+] [-] roland35|6 years ago|reply
[+] [-] valignatev|6 years ago|reply
[+] [-] alpaca128|6 years ago|reply
[+] [-] throw0101a|6 years ago|reply
Are you aware of Emacs with evil mode (i.e., Extensible VI Layer)?
* https://www.emacswiki.org/emacs/Evil
[+] [-] yarrel|6 years ago|reply
[+] [-] jjtheblunt|6 years ago|reply
[+] [-] crispyambulance|6 years ago|reply
I've had several bouts of trying to learn emacs throughout my life.
It isn't necessary to list all the benefits, sure, there's a lot. Yes, I get it's "extensible" and you can write little elisp programs to do just what you want.
Here's the obstacle: Motor skills. It just takes way to long to first memorize reams of commands and then to train your fingers to issue those commands effortlessly. In the meantime, searching, "apropos" and googling stuff isn't an attractive thing to do when you have _actual_ work to do.
That's a serious obstacle and no listing of all the awesome-ness of emacs is going to convince many of us to put in that kind of effort.
[+] [-] admax88q|6 years ago|reply
Leaning any new tool when you have work to do is never an attractive thing. Whether that's an editor, a language, an issue tracker, or any tool. There is always a period of learning that is less productive, but the hope is that after learning the new tool your overall productivity is higher, resulting is more gains in the long run.
Emacs out of box comes with menus and toolbars (underrated features) to accomplish most basic commands, so you shouldn't have to memorize a whole bunch of stuff to start being modestly productive. I think it's way ahead of vim in these regards, you don't have to learn a whole new paradigm of "modal editing" to get even the basics done.
[+] [-] fipar|6 years ago|reply
I just feel it's "my" editor more than any other editor I've ever used.
edit: typos
[+] [-] outworlder|6 years ago|reply
Do you know VI? You can use viper-mode and use it as VI. And it's not a handful of keystrokes as the likes of Eclipse implement, it's a full blown VI mode.
Your comment about "apropos" tells me you have never ever tried Emacs help system. There is a nifty tutorial, you can search for commands, functions, what have you. Need to know what happens when you type a keystroke, even down to the source code if you want? describe-key. Need to know anything about your enabled modes? describe-mode. And so on. There are more describe commands, but I never had to memorize them due to completion.
The only times I feel like using something like VSCode are:
– Learning a new and popular language: as of late, you can find nice extensions which sometimes even integrate installation of external commands, so you have a working system out of the box. Since I'm learning, I don't yet know what I need. This use-case is diminishing as of late due to Spacemacs.
– When I feel the need to have something "fancier" in terms of UI widgets. For instance, the popup golang help that VSCode provides is less disruptive than having a pop-up buffer. This is just a case of being attracted to eye-candy, which the exclusively text-based does not provide by design (although it can display graphics to some extent).
That's it. I always end up going back to Emacs as it provides so much more. And specially when interacting with Git, Magit is wonderful and far better than any applications I have seen - including the command line. Org-mode is always at my fingertips.
One thing though. If you are unwilling to learn Emacs because you are happy with your environment and you have other priorities, that's perfectly fine. If you are unwilling to learn Emacs _even though you feel that there are benefits_, then that's not a good sign. We need to learn new things all the time to stay relevant and productive. If there is a new tool, language or process that will improve your professional life, you are doing a disservice to yourself by refusing to learn.
[+] [-] michaelmrose|6 years ago|reply
Hydras further provide an attractive discoverable menu to remind you of what options are available.
Major mode hydra let's you define a hydra per mode and pops up the correct one based on the mode you are in.
https://github.com/jerrypnz/major-mode-hydra.el/blob/master/...
A useful thing is that it's possible on all major platforms to bind modifier keys like for example shift to produce a different symbol when pressed and released instead of held in combination with another key.
https://gist.github.com/tanyuan/55bca522bf50363ae4573d4bdcf0...
This means that for example you could use left shift to start global sequences and right shift for mode specific operations preferring short sequences for common operations.
Example lshift -> b switch buffers lshift -> f r find recent files
Because these can be bound to unused global keys example f13 if your keyboard lacks such they can be bound globally and work everywhere regardless of mode or with or without evil.
Because of the friendly visual indication see the pictures of major mode hydra even if you don't recall a binding you don't need apropos to find it.
For functionality that you haven't bound fuzzy matching makes it easy to find said functionality and call it in one step.
[+] [-] bitcrusher|6 years ago|reply
First, you don't REALLY need to know anything but Meta-X and Control-XS, Control-XF, Control-XC to get going. Those aren't really that hard to remember or make muscle memory for, IMO. It IS hard to have to go back a bit to re-integrate how to do things in a new way if you're already happy with your existing workflow, so if there's no value for you, then... don't use it. Use whatever works for you.
[+] [-] bitwize|6 years ago|reply
Furthermore, there's little to no chance of me being able to type up a little program in Visual Studio Code, eval it on the fly, and add it to my config instantly. You have to write a plugin, because of the model the editor uses for extensions. And that's the difference between an extensible editor and an editor for which extension is an integral part of the workflow.
And virtually no other editor or IDE I know of has the equivalent of M-.
[+] [-] dmortin|6 years ago|reply
You don't have to use the builtin keys. I don't. There is Spacemacs, evil mode, etc. so you can use VI keys if it works better for you.
Emacs is about making it work like you want. Emacs adapts to you, not the other way around.
[+] [-] harrygeez|6 years ago|reply
The single greatest thing about Emacs is the robust basic modes, which most other modes extend from. So far I haven't used anything as good, although I feel the gap is lessening with VSCode.
I really dislike switching between mouse and keyboard. Emacs's consistency and mouse-free operation speaks to my heart the same way Mark Zuckerberg wears the same shirt every day, it's one less thing to think about, and that's why I love it.
[+] [-] antisemiotic|6 years ago|reply
This being said, I've abandoned Spacemacs for VSCode (with amVim). I feel really diety about this, but at least "jump to definition/declaration" in C++ works like it should.
[+] [-] dmitriid|6 years ago|reply
The article lists over 20 extensions you need to install to "feel the power". And every emacs user will have their own set of extensions, carefully curated. Everyone ends up with rather huge init.el setups with increasingly bizarre and arcane settings.
After over two years of using emacs and a 437-line init.el[1] of my own I gave up when one day it stopped properly displaying cyrllic text in jabber.el and some extension minor update broke something major.
[1] https://gist.github.com/dmitriid/4078311
[+] [-] triska|6 years ago|reply
One interesting thing about the Emacs modes listed here is that many one of them are by themselves already enough to justify the use of Emacs for at least someone in specific application domains.
For example, there are statisticians who do not use much of the breadth of Emacs, except for the listed ESS mode, and who do a lot of their work in that mode. The same for magit, Org mode, calc, dired, Tramp and others.
In addition to this richness in features and flexibility, a major attraction of Emacs is that switching between all these aspects is instantaneous.
[+] [-] burtonator|6 years ago|reply
Here's why:
1. Refactoring. The refactorings in IntelliJ are amazing. Amazing. The ability to say (yeah, this class is now called Foo instead of Bar) and have everything automatically changed is outstanding. This is a basic example of course but you can also do things like remove a function parameter, and also do things like lookup reverse symbols.
2. Stable. IntelliJ is just amazingly stable. Part of this is that I had to write elisp to get Emacs to do stuff that IntellJ just already provides for me. Everytime Emacs would upgrade I would have to upgrade Emacs.
3. Pair programming. I could NEVER work with other engineers on their code and vice versa. We just didn't speak the same language.
Now mind you I also created a lot of the code you use in Emacs. I co-created EDE for example.
[+] [-] dmortin|6 years ago|reply
[+] [-] kamaal|6 years ago|reply
You shouldn't be editing Java with any editor, let alone emacs.
This is because if you are using 3 frameworks, and 30 classes with DI and reflection, just to post a json to a http end point, you should be using an IDE to handle that kind of madness.
[+] [-] JohnStrangeII|6 years ago|reply
Is there a way to transition my claws-mail folders to Emacs, or ideally use both programs at the same time for a while?
The article recommends notmuch-emacs. But I'm afraid of 2 things, (i) loosing existing mails in the transition (due to e.g. faulty conversion tools), and (ii) that after a complicated transition I'm not happy with the new setup. Any recommendations? Is it possible to use the claws-mail email inboxes directly in Emacs?
Another thing is org-mode. I never really managed to get deep enough into it to really see the benefits. I've even bought the printed org-mode manual, but the setup seems so complicated. Can someone recommend a good "light" tutorial for it? What are you using it for?
[+] [-] yaantc|6 years ago|reply
I would recommend starting using Org just for note taking, using its outline capabilities. It's simple and avoid being overwhelmed and buried in features. One tutorial for this is [1], but even then it has advanced parts you can ignore at first. There are many Org tutorials, at some point it's best to just pick one and dive in instead of looking for the best one and ending up paralyzed by choice (a problem sometimes with Org and Emacs...).
Then once familiar with this you can extend your usage in various directions: add TODO and agenda for GTD, use it to export to nice web pages with a "read the doc" theme [2], etc.
[1] https://sachachua.com/blog/2008/01/outlining-your-notes-with...
[2] https://github.com/fniessen/org-html-themes
[+] [-] MarcScott|6 years ago|reply
Org-mode is like a Swiss army knife. I honestly started using it, unaware of the whole GTD functionality. I was using it as an alternative to markdown, as it allowed me to use CSS with the exported HTML. Then I learned of the GTD aspect and started using that as well. Now I have my init file written in org-mode using babel to drag out the lisp.
[+] [-] mcshicks|6 years ago|reply
For orgmode I like this website
http://doc.norang.ca/org-mode.html
You don't have to do everything, I just started adding pieces of his .emacs file one at a time until I was happy with way it worked. Very nice if you want to do GTD type open task reviews on a recurring basis.
[+] [-] nextos|6 years ago|reply
One thing that sets Notmuch apart from other MUAs is that it never ever touches your email files.
[+] [-] neilv|6 years ago|reply
VM mostly worked very well (and Gnus was probably more powerful than any forum software/site you've ever seen), but there were a few pros&cons of preferences, including being tired of having so much in one Emacs process, so I moved.
One of the biggest downsides of moving email out of Emacs is that I lost the utility of BBDB. Which is doubly a shame because it was written by JWZ, yet Netscape Communicator and later Mozilla things that should've been influenced by JWZ have much-much less useful addressbooks.
(I made this when I moved: https://www.neilvandyke.org/bbdb2tbird/ )
[+] [-] BeetleB|6 years ago|reply
As for HTML email, if you mean HTML converted to text, then notmuch will do it. If you mean show it as proper HTML, it won't. It can also show images inline (although my setup stopped years ago and I haven't debugged why). To be frank, I don't like how it converts an HTML email to text - it doesn't even preserve links (i.e. it shows the text only, and not the URL it links to). I need to look into how I can improve it.
But despite these headaches, I still use it. It's good.
[+] [-] rbanffy|6 years ago|reply
There is no right or wrong answer, but I like the Emacs way.
[+] [-] tasubotadas|6 years ago|reply
I've tried using ErgoEmacs[2] but what I've learned was that it doesn't really play nicely with all the other extensions.
It's a shame because I've wanted to find something a bit more powerful than nano for config and code updates on remote machines.
[1] http://ergoemacs.org/emacs/emacs_kb_shortcuts_pain.html
[2] https://ergoemacs.github.io/
[+] [-] betenoire|6 years ago|reply
https://github.com/hlissner/doom-emacs
It is a much thinner configuration, and you will learn Emacs instead of layers and Spacemacs conventions.
It only took me about a week of deliberate use to adapt my work flow and get used to it, and it has been my primary editor for nearly a year now.
[+] [-] egypturnash|6 years ago|reply
There are exactly two instances of “Magit” in this web page and I just quoted both of them.
[+] [-] lame88|6 years ago|reply
[+] [-] fourier_mode|6 years ago|reply
1. My usual coding session would involve Vim+Tmux, on trying the same with emacs. I was seeing some lag(although small, but noticeable).
2. I am very used to the key strokes "g-d, g-D" in vim to quickly move around calls/declarations of functions. For that emacs makes use of Ctags, which is more versatile but not great for a quick lookup.
3. I have had better luck with Vim's linting plugins like ALE and haven't found similar plugins for Emacs which was eventually a major game changer to switch back to Vim.
On the other set of tools:
- Org-mode and latex-preview-pane-mode are the 2 set of tools which I have integrated into my workflow and they are very suitable to me.
- ERC is also pretty neat.
- I have tried Magit and although seems useful, for my use case of Emacs currently doesn't hold a lot of promise.
- Switch to Gnus, mu4e as mail clients replacements is too painful, at least to a Thunderbird user.
[+] [-] roland35|6 years ago|reply
However... I would _love_ to see a GUI version of just org mode which would combine a few features of OneNote, well I would be happy if it only made adding pictures better!
[+] [-] jstewartmobile|6 years ago|reply
[+] [-] mark_l_watson|6 years ago|reply
[+] [-] ReneFroger|6 years ago|reply
[+] [-] sprash|6 years ago|reply
With my new employer I'm forced to use notepad++ on Windows. The difference in actual productivity: zero!
Emacs is a nice hobby but when you want do get shit done it won't help you being more productive except for some rare corner cases.
So don't buy into the Emacs Plattform. Maybe just learn the basics because sometimes it is the only editor installed. If you spend more than two hours on it you are wasting your time.
[+] [-] jerf|6 years ago|reply
What keeps me using it is precisely that it's been stable that long. Given that I don't really need that many features, it's been nice to not have to change editors, what, 5 or 6 times in that period of time?
I've got some very light customization to expose the macro features more conveniently, and like three or four keybindings for my major languages I work in.
Other than that, part of what keeps me in emacs is that it supports SSH'ing to remote systems to edit things very well, so I can use my desktop editor in all kinds of environments with everything I'm used to, no matter where I'm having to edit something, as long as SSH can get to it. While there are other editors that can do this to some extent, I find that when it's nominally "time" to switch to New Editor of the Half-Decade it's often a missing or poorly-implemented feature.
Also, as strange as it may seem, a lot of editors aren't all that great at editing 5 files at a time. They certainly can, but they're not that great at it. Emacs is pretty good. I don't even use any funky extensions for it.
I still don't really know elisp. I've seen emacs wizards, and I'm not one, despite 25 years with it. Given that editor features aren't really that important, why not pick one decent tool and stick with it? At least then I'm not surprised when I have to pick up a new tool and, oh, crap, it doesn't do networks, and, tabs, seriously, tabs for multiple buffers with no keyboard access based on names? No.
(I do also know enough vi to get around in it when I have to use it on some system for some reason.)
[+] [-] alexhutcheson|6 years ago|reply
[+] [-] dmortin|6 years ago|reply
It would set back my productivity a lot if I had to use the open file dialog for this.
[+] [-] spellcard199|6 years ago|reply
I completely agree with the others who say:
---- part 1: I'm happy I've learned elisp in the last yearPeople complain about memorizing emacs keybindings, but most of the time I just call the command name with M-x command-name. Only if I find myself using it often I bother memorizing or setting a keybinding for it.
As for why I use emacs, I started using it for org-mode, which I considered it's only killer feature at the time. Since 1 year ago I started learning elisp and I think only now I can see what's the whole point of emacs.
In just 1 year of (beginner-level) elisp I wrote 75 files containing elisp functions to help myself with dozens of tasks that comprise:
---- part 2: you can have different emacs configurationsAnother common complain is that emacs tends to become slower as you add more and more packages. As a spacemacs user, I noticed that too. For this reason when I don't need spacemacs goodies I use multiple, different emacs configurations (with evil-mode though).
This is how I do it:
1 - Make a new ".emacs.d" user directory somewhere
2 - Make a new "init.el" user file inside it
3 - Add to the beginning of init.el :
4 - Call emacs with: That's it.You could achieve the same result using cask, which would be more elegant imo, but takes a couple of seconds more to start.
---- part 3: use elisp to call other languages
As for elisp, once you have learned enough of it (not much), if you are determined not to use it, there are different ways to call other languages from it:
Just out of curiosity, I explored the shen-elisp path. I tried a whole week to see if I could replace it with shen-elisp. At the end of the week I learnt how to call elisp from shen-elisp and shen-elisp from elisp... and the fact that every time you restart shen-elisp you have to re-declare types. However I abandoned the idea for 2 reasons: ---- references[+] [-] JohnAtCC|6 years ago|reply
[deleted]
[+] [-] milin|6 years ago|reply