you use emacs to do stuff, you dont just listen to/watch it do its thing.
chopsticks might not seem like a good metaphor at first glance, as they are much more simple, but they are highly compatible with a lot of tasks and can be utilized in many ways that a fork, spoon, spork or colander just wouldnt handle as well. to my mind, the simple thing hidden in emacs' complexity is that it is a closeted lisp machine
I hear arguments around what products can offer me all the time, they make sense, but I generally go with how a product makes me feel. Probably more than I even realise.
I don’t use Emacs, I do whisk eggs and fish doughnuts out of oil with chopsticks, I couldn’t fully say why for either.
i am still a bit iffy about emacslisp, but less so than before i grokked CL (thanks for that goes to "practical common lisp" by peter seibel)
but: whatever floats your boat will keep your boat afloat :D
I will admit that for that very last teaspoon full of rice, though... I grab a spoon.
I have a strange nostalgia for the old Unix days that I was too young— perhaps not even alive yet— to experience the first time around. It's what draws me to learning and using things like vim, Perl, awk, sed, etc. Those tools feel arcane and mystical.
But going all the way back to the Big Bang at V0, a funny thing happened.
The essence wasn't still there, things were still missing, because indeed the open-source foundation wasn't only born from Unix and the PDP-11.
No. The missing half of the puzzle is ITS and the PDP-10.
This is where GNU and the free software philosophy was born. The root of emacs, LISP, TeX, and many more. And interestingly, they're both older and more timeless than the Unix part of the puzzle. Unix (and then Linux) just happened to be a hardware abstraction layer for what really mattered. And then I reached the end of my journey to enlightenment.
I finally understood that GNU's Not Unix!
Not everything open and insecure, but hackable up to the last bit.
A minor joke here:
> Hell, probably if IntelliJ toolset would allow me to customize it deeper with Lua/Lisp/JS/whatever I’d probably switch in a jiffy.
It's not going to be quick and it's not going to be pretty, but I think you could technically do it with Clojure :-)))
- IDE-like features via LSP
- The best git porcelain out there: magit. Even when I'm not using emacs, I come back to magit for code-browsing (recursive blame) and staging hunks.
- Emacs/vim's fantastic buffer/window concept, where open files are not owned by their windows. I miss this whenever I use anything else.
- project support to quickly grep across all files or jump to files
- Very mature vi keybindings, with their infinite composability
I still sometimes find that it's either too rigid or too manual at certain things, but I could say the same for CLion and VSCode. I still come back to CLion for its refactoring tool, the 3-way merge window and the debugger integration.
It is a bit messy though. It's very well done for what it is, but it's cobbled together from many disparate components. It seems that it should be possible to create the same type of experience from a simpler, more coherent system. I rarely update the base system, but when I do, I've occasionally had to google for some exotic elisp error and add a fix here or there.
Why is this useful? I basically treat my nvim buffers like windows. What am I missing?
[1] Why can't we just delete the extra file after we recovered the .swp!
oh hell yes!
But, now I realize this is a very powerful configuration of Emacs if and only if you prefer using the VI keybindings.
It looks like spacemacs is that as well.
I actually enjoy Emacs keybindings, and would like to find something as polished and supported as Doom, but without using VI keybindings.
Does anyone know where I should look for that?
Or, can I revert to emacs keybindings in Doom and use the rest of the amazing features? I'm concerned I might be swimming against a tsunami if I try to do that and would be better off finding another project.
See https://github.com/doomemacs/doomemacs/blob/master/modules/e...
https://emacs.stackexchange.com/questions/53319/how-to-disab...
There's also prelude which doesn't include evil by default. Not quite as fully featured as doom/spacemacs, but it's a good place to start.
All that said, you could just set it up from scratch. Now that lsp-mode and dap-mode are things, you can setup a fully featured IDE in not very much config at all. I have everything in my init.el and setting up projectile, lsp-mode and dap-mode which is like 85% of what you need for a fully featured IDE. That bit is only about 30 lines of config. Throw in flycheck, company-mode, hydra for keybindings. maybe treemacs for a project view.. a few hundred other lines to make it not all look like trash....
On second thought, it's kind of a pain in the ass. Just use clion or vscode or something.
Can't I beg you to share your init.el? I want LSP and the other stuff but Doom even when turning off evil mode seems to far away from the emacs I'm familiar with.
https://pastebin.mozilla.org/mShC6Dm0
I'm still using evil mode. Most of my important functions are bound to some combination off space bar though.
It's certainly not perfect and has some "quirks" (or bugs if we're being honest), but it works pretty well.
Unconfigured Emacs is a bit clunky, but you'll understand it a lot better if you configure it yourself. Also, just in my opinion, there are better options than the packages supplied by Doom.
My suggestion is to set up Emacs with use-package for package configuration (this will be in Emacs 29 anyway), and then you can easily play around with different package combinations.
I'd add a nice-looking theme first of all, then try adding the following modern packages, one at a time. Play around with them a bit before adding another so you know what they do.
Vertico - visual completion UI (selecting files, buffers, commands etc.)
Orderless - user-friendly completion framework
Consult - search and navigation commands
Embark - contextual actions
Marginalia - fancy completion decorations
Magit - nuclear-powered Git framework
Eglot - lightweight LSP functionality (will be in Emacs 29)
...that gives you a powerful selection of features that play nice together and you can easily build on.
https://gitlab.com/gshulegaard/my-emacs
Disclaimer: This config is a bit perpetually dusty at this point, so I wouldn't copy it verbatim but instead use it as inspiration for some packages that might be worth looking into. JFYI anything that is from Marmelade might be worth avoiding as I suspect it is unmaintained given it's SSL cert expired in 2018. I just haven't gotten around to removing it from my config.
Emacs has a high barrier of entry though. I think it would be difficult for a novice to get a good IDE experience from emacs, even with doom.
Well, that on top of the creepy uneasiness I always feel whenever dealing with companies like Google (or M$, FANG, etc.).
It's just a text editor. For many tasks it has better usability than the competition. This is why I use it. (Not for everything, though, and that's okay.)
I'd guess most people are like me. Configuring text editors is not our hobby.
Since most people today are more than happy to code in Jyputer notebooks (yuck), I guess I'm not actually that weird.
I'll never understand comments like this. There's a full Lisp implementation available in there. Other text editors don't come with org-mode, either.
Okay? Neovim and Lite XL ship with full Lua implementations. VSCode ships with a full JS implementation.
Being scriptable is not unique to Emacs. Though I do think the combination of - big ecosystem (missing for Lite) - scripting freedom (missing for VSC, iirc its plugin APIs are kinda limiting) - GUI (neovim) is pretty much unique.
A lot of other editors are also extensible, either via scripting or dynamically linking native code.
The only reason Org is unique to Emacs is that it's "too large to clone", i.e. it'd be a lot of work. I think a lot of editors could provide the same features with a plugin, given sufficient effort.
True, some extensive modes written in Lisp by users are a work of art. That's a layer a non-programming-user may not see.
... I really just use it as an editor/IDE these days, and couldn't be happier.
Emacs is how I learned LISP which forever transformed me as a programmer and I'm grateful. But let's be clear WHY I was doing that: it was horrible as an IDE at the time and I needed it to do the thing.
Now, with elpa, great themes, solid modes for every major language, magit etc, it just works. I customize ... via customization.
I still have my .emacs (dating myself there) and a few nifty functions I wrote. I maintain a programming language, so pact-mode is still there. The ugly truth there is that it's actually easier to write integrations (for a LISP-like no less!) for VS Code than write a major mode.
I miss hacking on emacs but I'm more productive for it.
Not even to centralize the `backup.foo~` and `#auto-save.foo#` files that emacs loves to litter the file system with? I can't wrap my mind around it.
My first, very brief, foray into Emacs was at the suggestion of a friend back in, oh, '91-92. He raved about the buffers and the shell windows. Well, I couldn't run my 4GL programs in the shell windows, since they were full screen programs, and the terminal emulation wasn't working. So, I just stopped and went back to what I was doing.
This turned out to be a blessing in disguise. For this what the heart of the UNIX explosion. Everybody and their mother had some new box running some sort of UNIX, and we were installing software on all of them. While I spent my day in SCO on 486/66 (Shared by 8 other people), we were installing on Suns, IBM, NCRs, DG, Sequent, HP, and probably something else. I was always on someone else machine.
vi, of course, was everywhere. Not so much Emacs. I was also working in their environments, not mine, so box stock was the norm. And at the time, vi was more than suitable and capable. I still use vi pretty much the same way. Today I have multiple windows, unlike back then, but beyond that those formative years were so ingrained, those patterns and habits stick to this day. vi doesn't need plugins, it has bang-pipe. My file systems (notably tmp) are littered with x.x, y.y, z.z, etc. files adding as ad hoc cut and paste buffers. If I couldn't do the work with bang-pipe, shell out, bonk on some data in /tmp/x.x, pop back into vi and :r /tmp/x.x. Is it a single keystroke? No. But it's not in vi either. yyp is about as short as you can get.
Later, as I moved into Java and Python, I started adopting Emacs. I was particularly attracted to its auto formatting support for Java. Later on I chose Ant (Java build tool) because is had a -emacs switch to make the output compatible with emacs so I could jump to compiler errors. But that's stock behavior in emacs, we get that "for free", Ant conformed to emacs, vs the other way around.
I still kept my vi habits in emacs. If I wanted to refactor something, I was more apt to do something like vi `find . -name "*.java" | xargs grep methodToRename` than use emacs. I had multiple windows, so this was simple to do. Since Java is strictly typed, it coped well with yelling at my ham fisted endeavors when I went stomping through the code base.
I finally moved to an IDE, NetBeans, around NB 5 or so. Auto complete spoiled me.
Today my use of Emacs is mostly only for Lisp, and even then my Nerd Cred isn't up to par. I don't use Slime. I use emacs for lisp almost solely for auto indent, and paren matching. vi's lisp indent isn't spectacular, but emacs' is pretty good. The paren matching is about par, it doesn't bother me to use % in vi to test parens, but emacs is better. Then, I just ^S, and reload the file in my REPL.
I've tried Slime, but simply I don't do enough Lisp to make it worthwhile. It doesn't stick, so I have to relearn it when I come back. Just not worth the bother. I just want to work and get stuff done, not fight tools. Emacs on the Mac works well enough out of the box for me. Scroll wheel scrolls, Cmd-XCV cuts/copies/pastes, I can mouse around and double click things. You know, text editor. I also like messing with elisp in the scratch buffer. Even an old guy like me can remember ^J.
Basically what I've learned in my computing career, having to jump around every place, there's one commonality that's at every location I visit. Me. Rather than relying on adapted environments, I rely on an adaptable me. I like tools, I use tools, but I pick tools that work well out of the box. I want a tool, not a kit. Unix, thankfully, comes with a base set that I learned a long time ago. The important ones (important to me) have stuck with me. I can awk all day long, but I can't even spell 'perl', and it's my go to shotgun if I need it.
VSCode? It's got its fan base and it's quite vocal. Actually, Didn't VSCode collate the majority of the former Atom users, as Atom collated the majority of SublimeText before it?
I'm an editor vagabond. I went from Ed 4 to Notepad++ to JEdit to UltraEdit to TextPad to Sublime Text to Atom to VS Code.
Of all of these, Sublime Text is the one I still use every day. TextPad on Windows was the other one that was sticky, though Sublime has replaced it. I kept dabbling with Emacs, kept knocking into vi flavors for "just getting it done."
Perhaps it's time to find a home with Emacs and try to use it for everything. But there's always that next one... maybe Xi, maybe NightCode (nope), maybe Edita...
Emacs and vi will still be there, and I'll probably pay for the next three versions of Sublime Text like have the first three.
I'm also on the lookout for my next "forever home" but I set the bar to only try a modal editor that acrually differs from Vim's modes. So, modal without vim-mode.
I have been using Emacs for 40 years and still love it, but I do find myself using VSCode more often now for Python work. Emacs has very good CoPilot support, but it sometimes lags a bit behind the support in VSCode. I also have started using a proprietary MarkDown editor instead of Emacs or VSCode.
For me a big draw of Emacs is that I have it easily configured for almost all programming languages I use.
One way to think of it is any tool requires some investment. The big difference with Emacs is it has always been around and always will be around, so you are continuously building upon that investment. Contrast that more modern tools. The learning curve is nowhere near as severe to start out, yet one is far less likely to learn how to use it so the same depth in the long term since it is far less likely to exist for the long term.
It's the same thing with free software. I care, but not enough to stop me from using the easiest thing out there to use regardless of whether or not it's free.
I agree, let's not exaggerate, if the overwhelming majority in aggregate acts in the exact same way, the aggregate action overwhelms the minority action.
In this case, most people don't care and share my viewpoint on the situation.
You can care about something, but have other contributing factors to your decision that override that care.
I care about the environment, but I still drive an internal-combustion vehicle, because NOT doing so isn't really an option where I live.
I care about issues of poverty, but enough to minimize all our expenses in order to give away more funds, because we want to be able to enjoy our lives.
Emacs is likely to continue to exist for a long time, but the gap between it and modern IDEs is also likely to widen over that same timeline.
He starts with a completely empty emacs config and builds it up to a full blown IDE explaining how everything works along the way.
Some of the things he does, there are better alternatives these days but most is still relevant and it'll teach a lot about how emacs works.
That said, emacs is more of a hobby than an IDE. If you just want to get work done, using something like vscode or intellij or whatever else makes way more sense. If you find it fun to tinker around and customize your editor you can make emacs incredible, but it's something you have to want to spend time on.
My main gripe is dealing with several major modes at once, I still find that Emacs isn't the best at that.
I will say for anyone curious about Emacs, do try it out in your spare time. It's so much fun to customize and play around with.
There is an odd aggression against Emacs that typically does lead to people having to go to extra effort to justify why they use it. And I can agree many of the justifications can feel like a stretch. They aren't false, though. Nor are we working on some archaic thing that only we can appreciate.
I'm also always amazed at how we think Emacs is somehow more archaic than anything else in a computer. Getting my kids into computers. It is Scratch to start, than probably crippled Python environments. That they are almost certainly going to break and wonder what happened. We even got started on some Arduino stuff, and their IDE is not bad, necessarily, but don't pretend like it is easy and quick in ways that Emacs isn't. Want to make a small game? Good luck, as there are no other environments for that anymore. (Used to, the computer booted into a BASIC shell in ages past.)
And this is avoiding the environments for content creation. Blender is amazing. And amazingly hard to use/explain. Fusion? TinkerCAD is at least easy to explain. But again, very easy to screw up in. (And I'm growing rather tired of all of the times I come back to a computer with hundreds of tabs in a browser all convinced they need to save data.)
All of that is to say, computers are tough. Period. I hope people can find a comfort zone for creation. But I am not convinced there is a single answer there. And more than happy to share what has worked for me.
No other editor comes with such a good tutorial.
> I rarely hear people talking with excitement about WebStorm or VS code.
You seem to be living in a very remote area where no programmers can reach you, beside those using Emacs. Yeah, people using VSCode talk about it a lot, given an opportunity.
In an average programming company, programmers might talk more about Emacs because for the overwhelming majority it's a mystery. It's the same how others might be driven to discuss UFOs or weird cultural kinks found in distant lands. But, really, it's not an indication of anything.
It just works for me. It really, really does need some improvements in places but in other areas everything else just lags behind.
Emacs is the best. I do not hesitate to recommend it. Will it work for you? I don't know. Might it be exactly what you were looking for? Yep! That's how it was for me: it gave me everything I ever wanted and more. Period.
I love it, it’s great, and as many others, I tried to move out of it but there was something I couldn’t do I KNEW I could get in Emacs and it frustrated me so much I kept going back.
But I don’t think it brings a lot of added value. There are many very very powerful IDEs and editors which offer out of the box great UX and feature discoverability. Hell, probably if IntelliJ toolset would allow me to customize it deeper with Lua/Lisp/JS/whatever I’d probably switch in a jiffy.
I compare Emacs to vinyls or paper books. It requires investment, in many cases it is worse than competition and requires more energy to just be on par. But it is absolutely lovable. Vinyl record comparison - they are expensive, heavy, require a lot of maintenance but for specific type of people it makes their heart skip a beat when they take it from the sleeve.
That’s why people are constantly talking about their Emacs. Same with vim or nvim. I rarely hear people talking with excitement about WebStorm or VS code.
So yeah, if you’re not into it just keep in mind that like some freak who spend their weekend on polishing rims of dream come true 1959 Fiat 500, some of us spend their time with Emacs.
Don’t get bullied into it, don’t get FOMO about it, but please don’t spoil our fun.
You’re always welcome to join in.