I have recently approached the world of Emacs, which I find great… The problem though is that I feel I’m wasting too much time trying to have it running in order to do the real work (and I’ve seen, there are several memes about it), so I was wondering what are the must-have extensions to quickly fire something functional (similar to vscode… Don’t make me get back to that please) for development.
By the way, I’ve seen several configurations scattered around the web, and something tells me that I’ve ended up in another anarchic realm (which is, something I both hate and love), as if that of distros -being the same except for one thing- wasn’t enough.
Of interest are: Python, Go, Bash, Clojure, Elixir, yaml (Docker, Terraform, Ansible), json, csv
I would also appreciate the general must-have extensions, currently I’m getting lost navigating Doom Emacs and Melpa packages.
Thank you!
If you want a VS Code-like experience with no effort, you know where to find VS Code.
You use Emacs for an Emacs-like experience – that is, a reasonable starting point, but with infinite customizability, to the point where you are modifying and extending your editor as you work with it.
You can begin coding in Python, Go, and Bash today with no additional add-ons. You may have a tough time of it at first if you’re used to relying on autocomplete. Generally the first must-have package you should get is the major mode for whatever language you’re working in (if it doesn’t already come with Emacs). I generally use ivy to provide completion for things like file and buffer names, M-x commands, etc. so that’s also a good choice. Eglot or lsp-mode is commonly used to provide autocomplete via Visual Studio Code’s LSP.
Finally I recommend enabling auto-revert-mode, so that Emacs keeps itself automatically in sync with changes made to a file outside itself. This is built into Emacs.
Install all-the-packages. It installs all Emacs packages, so you don’t have to research or make decisions (who has time for that?). Disk space is cheap nowadays, so a few TB’s of data isn’t anything to worry about (who has time for that?).
Can confirm. Great resource. I’ve never asked about what to install since!
How much would you pay for all-the-packages?! Don’t answer yet because if you call now we’ll install even more packages. That’s right, packages which haven’t even been written yet will be installed the moment that their first alpha version is detected on the internet! And if that wasn’t enough, our first 100 callers will receive a free pair of GNU socks. Don’t miss this incredible offer.
So a newbie just popped out, liking the project, posing politely, feeling logically lost because there is so much out there and structured differently (everything you need to add points to the level of confusion), asking for suggestions on how they can arrange something quickly for their context to be able to start using it right away and make do as needed…
Then you come in, the elipsian version of the classic elitist piece of crap on Arch Linux.
I just want to sincerely assure OP that the community here is generally friendly and positive, dickheads like 'this individual who feel like berating for nothing instead of moving on uninteresting topics, are a distinct minority.
So a newbie just popped out
New to Emacs doesn’t mean “new to life”.
The question lent itself to both earnest and humorous replies, and it duly received both, so this seems very unnecessary. If you don’t think a joke is funny, down-vote it and move on.
Ugh, I hate to defend someone with “it was just a joke”, but I do think he was lightly mocking the OP’s approach.
The link is also worth sharing with new folks—they WILL get better information if they learn to look for stuff on their own, and if new folks do a lot of research BEFORE they ask in a forum, they’ll understand their question better as well.
All that said, while I don’t think he was being a total dickhead, yeah, it would be nicer if people shared that folks should do their own research in a kinder way.
Either way, though, thanks for calling him out and making me think about how we approach newcomers!
The GP’s response is very curmudgeonly and feels like the poster asked a question on Stack Overflow.
A mocking response also doesn’t count as a joke response. A joke response would be good-natured and not at the expense of the poster. I agree that it is more of a mocking. And mocking new users isn’t a helpful form of discourse - no matter how tired someone is of their style of questions.
I do appreciate that your response was much more earnest and trying to engage with the poster.
Yeah, you’ve convinced me… let’s not make fun of new people!
… I guess that shouldn’t be a controversial stance. Whoops!
That dickhead, despite his handle, is not particularly good at elisp and is particularly *bad* at putting people down. If you really want to feel like shit, the Clerk of Copmanhurst is happy to oblige.
This has been removed, as it is not very civil; please attack ideas, not people.
It can be overwhelming getting started with Emacs, but if configuring your editor feels like a waste of time to you, then this probably isn’t the right time for Emacs in your life.
But! If you see something you really like in Emacs, and you want to try to get a quick start and get to work, search the web for some articles on how to set it up as an IDE for ONE of those languages. Copy the code, make sure you’re putting it in the right place, and give it a shot! You may find yourself really liking the editor.
I also recommend Doom Emacs, whether you’re coming from Vim or not, because it makes it easy to get yourself 90% of the way to what you want, configuration-wise, with RELATIVE ease.
Good luck!
What don’t you like about vscode?
emacs is not going to be a good fit for that style of work, unfortunately
expect days to weeks of fucking around to configure things, followed by years of fucking around continuing to configure things.
They should put this on the emacs homepage.
Have you looked at bedrock emacs? Its a minimal config with a “dev” module to enable the IDE features.
I use languages: Go, Python, Bash, Groovy, Rust
All I need is: Lsp-mode (+ language specific checker), dap-mode (for live debugging), -mode. That’s all I need.
Lsp-mode: https://emacs-lsp.github.io/lsp-mode/
Dap-mode https://emacs-lsp.github.io/dap-mode/
language-mode can be installed with package-install
Sometimes it needs some configuration, but in general it’s not that hard.
This is the way, for basic IDE features it should be enough.
Treemacs is also useful if you are used to having a left menu to navigate your project files with the mouse like in most IDE
Anything more is about personal preference an customizing your emacs experience.
In this regard, installing a color theme could help you feel at home, for example this one is a dark mode reusing vs code’s colors : https://github.com/ianyepan/vscode-dark-plus-emacs-theme
Good call on Treemacs. Few long-term or even medium-term Emacs users use it, because it’s not actually an efficient workflow, but it can ease the transition.
Heck, I have it installed just for when someone’s looking over my shoulder and I want them to follow along better!
There’s something to be said for easing folks in with idioms they’re used to, before they find the more powerful idioms on their own.
And evil.
I really don’t think there is a single must-have package out there. One of the best coders I know has been using vanilla Emacs for 20+ years with, in their own words, just a few lines of config. Also, for anything additional you might want in an IDE there are almost certainly multiple options available.
That all said, you are unlikely to arrive at your perfect config in anything near zero time unless you happen to miraculously find a distro that’s somehow configured exactly as you’d like right out of the box. I can’t really speak for any of the distros as I haven’t used them, but if you choose the vanilla route (which might also help you to not get overwhelmed with config options right away), I’d recommend starting by adding options which are either included with Emacs (e.g. Eglot for LSP integration), or integrate well with Emacs’ existing facilities (e.g. Corfu for completion), and then moving on to the other options only if you find them unsuitable.
I think I have to disagree, if they want things that work and are full-featured out of the box - then the community packages like lsp-mode and Company and Swiper are much better alternatives 🤷🏼
Interesting, I’ve had the exact opposite experience, so maybe both or our view points are at least somewhat anecdotal.
Unfortunately, if you either don’t have the time or don’t want to spend the time configuring Emacs - the best I can recommend for you is to use a distribution. And I can see that you’re already using the most VSCode distribution, Doom. I like Doom because it sticks fairly closely to Emacs’ conventions (compared to Spacemacs), has a large user base, and enabling most features just involves uncommenting some lines. Doom also has a pretty good discord to join.
If you haven’t seen this tutorial series, it goes over some of the features in Doom in a short videos. It might be out of data on some parts - given that /u/zaiste started this series 5 years ago.
If you want to build your own configuration from scratch Then maybe check out System Crafters (note that’s like 12 hours of videos) on the idea https://www.youtube.com/watch?v=74zOY-vgkyw&list=PLEoMzSkcN8oPH1au7H6B7bBJ4ZO7BXjSZ
To answer your actual querstion:
- Org-mode
- Magit
- Multiple-Cursors
- LSP-Mode
- Flycheck
- Company
- Ido/Swiper/Ivy
- Projectile
none of these are language specific but they build up Emacs to have the modern features of an IDE that I care about. Connecting up the languages to work with these packages is left as an exercise for the reader. Though they can look at my garbage pile of a config if they’re really stuck.
I agree with those who say that this is not the right time to adapt Emacs to your use case, being ready to use is simply not its selling point and you would just end up getting frustrated and making comparisons with other things (I.E. vscode).
My advice is to use what you already know and one piece at a time, figure out ways you can adapt your workflow in Emacs.
I warn you that it will not be easy, but if you have well understood the positive factors of this editor, you know how many doors it opens.
Generally speaking I would recommend:
- yasnippet
- ivy
- smartparens
- hydra
- request
- projectile
- swiper
- magit
- counsel
- org-mode + org-roam
Explore org-mode a bit and try to get a sense of how you can leverage Elisp to do everything! (remember, that you can concatenate the different things and create very articulate workflows.)
In zero time: no one. Emacs gives you all the ingredients to make an IDE, but you can’t bake a cake in zero time. It will take time (and be gradual, just like leavening).
Can’t give you exhaustive reply right now but I suggest to try fit your editor to one language at a time: start with Emacs Lisp, then maybe Python then something else…
Make Emacs fit your needs NOW, or you’ll get overwhelmed.
Emacs is for those who like to hack stuff, you want to “get things done,” then you’re better going with VSCode, just plug and play, the style you’re looking for.
The two things that I would miss the most if I didn’t have them would be Evil Mode (even if my vanilla Emacs keybindings skills are getting a lot better) and the interlocking completion/filtering/sorting/querying/gosh-what-don’t-they-do systems of Vertico/Corfu/Orderless/Embark/Marginalia/Cape/Consult.
When I mess up my config and have to use vanilla Emacs to find the silly thing I did, those are what slow me down.
But once you have those (skipping Evil if you’re not a Vim user), for IDE-ness you probably want to explore the main major mode packages for those langauges, plus an LSP system (I like Eglot) to give you project-aware completion.
Oh! And if you’re a big terminal user, Vterm will give you something powerful, something flexible, and the kind of terminal experience you’re used to. You can always explore Eshell later!
Okay, and if you’re working with Git, which who isn’t, Magit is a must.
Okay, I’ll stop before I’m simply listing all the packages I use!
Don’t stop. I didn’t know about cape :)
The joy of emacs is the fucking around. In fucking around you intimately learn your text editor. If you were up and running straight away, what did you really learn?
to use asap emacs to programming, you will only need a lsp frontend, for example, eglot is now a built-in package, or lsp-mode, another lsp for emacs, if you configurate this package, you have a minimal ide on emacs.
Then when you have time, you can search about a completion frontend, like company or corfu, then a theme for emacs, like modus-themes or doom-theme, then you can use a minibuffer ui, like vertico, ivy or helm and to use git, the package is magit.
When you are familiar to emacs, you can see thing like,
completion-at-point-functions
, `completion-styles and begin to customizing emacs to your liking.