Yes. I had to briefly visit the world of VSCode during a period of time when it had better AI integration than emacs did, but since I got Claude working well inside of emacs I've returned to 100% emacs. There just isn't anything like the old editors, built in the 80x24 terminal era, for getting huge swathes of code on your screen at once. I run a standard widescreen monitor with three vertical windows for emacs, each of which I often will break into two frames, so I can have up to six contexts active at once. I rarely do, but I frequently have 2 and 3. That's my entire 4K screen, full of code, usefully full of code. I'm not an IDE hater but they do put an awful lot of stuff on the screen that on a proportional basis I'm just not using as much as I use the code editor.
I had been getting somewhat nervous about emacs' long term prospects about 10 years ago. I would read the release notes for major versions and generally not be particularly excited about anything. Somewhere around treesitter something seems to have revitalized the project. It may well have been treesitter that revitalized it overall. You end up with a lot more wood behind fewer arrows when the project is able to put more work into generally-useful tools rather than every single language community maintaining their own separate mode for each language.
Now I am more excited about the major releases; for instance term issues are an issue for me with the aforementioned Claude integration. Not enough to stop me, but annoying. At the risk of saying something inflammatory to emacs fans, I feel like emacs is catching up to everything else better now... but it is catching up. It's getting easier to recommend it again as something you may want to seriously consider as a power-tool editor and not just something I used because I had 15 years of finger-experience with it and no significant reason to change. AI has eaten a lot of the IDE tools for me and you can type into a text box in emacs as well as you can anything else.
I still occasionally bring up VSCode now to use the debugger, I still don't feel like I have as nice an experience with that as I do with emacs, but my debugging habits have always been able to deal with doing something a little extra to do a debugging session. By its very nature, you're committing some time to the process just to do the debugging itself, no matter how slick the UI for it may be, so a bit of overhead isn't so bad.
> for getting huge swathes of code on your screen at once
This is my major gripe at most IDEs. Every window, or view, or sub-view insists on shaving off a little bit of vertical and horizontal space for... I don't know, tabs or things? Or to tell me what program I'm running?
I just want a dark screen with text (I run Vim, so I'll concede I allow a tiny bit of vertical space for line numbers and a little bit of horizontal space for the command space)
Wow, auto install treesitter grammars, editable xref, transposing window layouts, speed bar as a side window in frame, I had no idea any of these things were coming and were all some passing thoughts I’ve had in the last few weeks “it would be cool if this was supported OOTB”. Some dreams do come true!
I'm happy to see these improvements. One thing that has always been annoying with Emacs is how much configuration is required to get a modern editor going. Things like Doom Emacs, and Spacemacs try to solve that problem, but both feel far removed from vanilla emacs. I wish Emacs came with several presets so with a single line, you could transform the editor to different base points. For example, most devs want treesitter highlighting and LSP enabled by default. Why not have a preset like (preset-base-ide-1), so we don't need 200 lines of configuration before we can function? Instead we could build off of a much closer starting point.
Reading Rahul's post I got excited to build Emacs 31 from source, but reality occurred and I decided to wait for the release. I also like his articles on setting up Emacs.
I don't care what tools other developers use but in January I made my two dev Macs 'VSCode free' and use Emacs for everything. Feels better!
For decades I would spend tons of time experimenting with my Emacs setups but in the last few years I have been shifting to more out of the box experiences. I did write my own agentic coding platform in Emacs Lisp but I keep that separate from .emacs and .emacs.d
I use emacs --daemon instead of tmux inside my agent sandbox for session permanence and portability. A full editor rather than a layer between me and my editor. I can even waypipe the client windows if I want mouse support.
Systems like Emacs that are hyper-configurable via a text file seem tailor made for modern LLM's. If you've got a little bit of Emacs experience but bounced off of it because the learning curve was too steep I highly recommend diving back in with your agent. Agents are really good at setting up and maintaining your .emacs/init.el.
It's nice to hear the emacs terminal emulator has gotten some love, after all the controversy about the nasty language that used to be in its source code, which rms moved out to a separate file after somebody complained.
Open source with profanity in comments is statistically better than code without it:
DonHopkins on July 6, 2023 | parent | context | favorite | on: Open source code with profanity in comments is sta...
The original terminal emulator terminal.el in gnu emacs, written by mly (Richard Mlynarik), was particularly salty. I finally tracked down a copy, but it looks like somebody complained and in 1990 it was begrudgingly cleaned up a bit, so some of the worst stuff was moved out into a separate file called term-nasty.el for posterity (you, here, now), so as not to give "in to the pressure to censor obscenity that currently threatens freedom of speech and of the press in the US" (oh, Richard <3 ):
;; disgusting unix-required shit
;; Are we living twenty years in the past yet?
(defun te-losing-unix ()
nil)
[...]
;; (A version of the following comment which might be distractingly offensive
;; to some readers has been moved to term-nasty.el.)
;; unix lacks ITS-style tty control...
(defun te-process-output (preemptable)
;;>> There seems no good reason to ever disallow preemption
(setq preemptable t)
[...]
;; I suppose if I split the guts of this out into a separate
;; function we could trivially emulate different terminals
;; Who cares in any case? (Apart from stupid losers using rlogin)
[...]
(?\C-b . te-backward-char)
;; should be C-d, but un*x
;; pty's won't send \004 through!
;; Can you believe this?
[...]
;; Did I ask to be sent these characters?
;; I don't remember doing so, either.
;; (Perhaps some operating system or
;; other is completely incompetent...)
[...]
;;-- Not-widely-known (ie nonstandard) flags, which mean
;; o writing in the last column of the last line
;; doesn't cause idiotic scrolling, and
;; o don't use idiotische c-s/c-q sogenannte
;; ``flow control'' auf keinen Fall.
"LP:NF:"
;;-- For stupid or obsolete programs
"ic=^p_!:dc=^pd!:al=^p^o!:dl=^p^k!:ho=^p= :"
;;-- For disgusting programs.
;; (VI? What losers need these, I wo...
The issue was traced to library xinput2, when compiled with '--without-xinput2' the issue does not occur. But I do not know if that is something that Emacs can address.
Very cool! Looking forward to try out the xref and markdown features. The latter becomes increasingly important since the developer community at large seems to disagree with org-mode being the superior syntax...
This stuff all looks great, I can't wait to upgrade to 31 and then forget about all of it and just keep using Emacs the same way I have been for the past 20 years, /again/
back in 2nd year of university I remember thinking that vim is complicated so i went with Emacs. Now after using vim for couple years , I can't imagine going to Emacs and learning it. The availability of vim emulation in majority of text editors and IDEs has been a lifesaver
although the brief time I used Magit I was enamored I gotta say. I tried lazygit recently and it evoked the same feeling I had when trying Magit for the first time
I have been using Emacs for more than a decade, and I was always excited about the features. But with AI, something has changed. I no longer type/edit that much. Recently, LSP stopped working, and I was completely oblivious to it for about a week. Earlier, something like this would have been a major annoyance.
I recently sifted through a bunch of tagged entries in a text file, where each entry had a json array of image names, but the images resided on a remote server. I basically wanted a program that could detect if the cursor was on an image name, and display it on the right.
There's a bajillion ways to do this, some might even involve writing an html file and launching a remote server and tunneling and using a browser and what not. But no! ChatGPT wrote 20 lines of elisp code. I add a tramp basepath, open the text file, and got exactly what I needed. Need any behavior changes, callbacks, transformations? Modify, eval expression, new behavior!
I asked ChatGPT what other system I can use to achieve the same effect. The best answer it gave was neovim. No, neovim can't do that with the same degree of ease.
Disappointing and amazing at the same time.
The drawback of the emacs approach in my case is the tramp latency. To speed things up we'd want to add prefetch and that's gonna be much more than 20 lines and C-x e
Emacs cursor movement keystrokes are quite widely supported elsewhere too which use GNU readline or implement at least subset themselves.
Those work well also besides shells with Chromium/Chrome/Safari etc. many browsers input fields (address bar and text area). Cisco IOS, Juniper Junos, Netscreen load balancers too etc. IMHO makes jumping around CLI much much convenient and faster than moving hand to reach cursor keys.
My only gripe is that Firefox and its derivatives it doesn't work any more. Long time ago it did work. And I have no idea why feature was dropped some rewrite.
Answering to preemptively asked question that doesn't appear in TFA: yup I sure still do.
If anything compared to the 486 days, back when Eight Megabytes And Constantly Swapping was a joke that made sense, my computer now instead of 8 MB or RAM has 32 GB or RAM (so 4096x more RAM, or 2 exp 12 more RAM: something something about transistors doubling every 18 months and all that)...
Who's laughing now? ; )
Seriously though: Emacs with native-compilation, tree-sitter and LSP support (and stuff like Magit and ripgrep integration too) makes it really amazing.
Nothing else is capable of handling the variety of text-related things I want from my text editor.
- I consume HN and Reddit in Emacs. Allows me for example to quickly search through all the links shared in a thread.
- I read Jira and Slack in Emacs - in org-mode. It is far better for finding relevant things, extract them for my notes, etc.
- All my writing done in Emacs. Because I have: spellchecking, thesaurus, etymology and definition lookup, translations, LLM integration, etc. All my notes are in Org (Zettelkasten style).
- All my spaced repetition cards are in Org-mode (they are parts of my notes, I don't need a separate system to manage them). I can generate number of cards to study a topic, from selected notes.
- All my AI sessions are in Emacs. It's amazing that I can send just about any text to an LLM, anytime, anywhere. I can do it in the middle of typing a message, like this very comment.
- I watch YT vids controlling the playback directly. I can pause, rewind, speed-up, mute, extract transcript, etc. - this is indispensable while watching and taking notes.
- my email client is in Emacs (of course, why not)
- my Telegram client is in Emacs. I can easily retrieve a video from any web page and send it directly (without linking the page).
- I can extract any part of my screen and OCR the text out - it pops up in an Emacs buffer.
- I perform all searches from Emacs - I can google, duckduckgo, brave, HN (algolia), wikipedia, etc. I search through my browser history in Emacs.
- I can control my browser tabs, switch between them, find matching lines on the page, jump to links, etc.
- I read and annotate PDFs in Emacs.
- And I haven't even touched anything programming-related (tons of things)
Why, oh why would I ever feel unsatisfied, hoping that there's anything else that can help me do things better? Honestly, there just doesn't exist a piece of software that could help me do even a subset of things I can easily achieve with Emacs. You'd ask me that question in 20 years, if I'm alive and still using a computer - the answer would be - "Yes, what else would I use?"
I started with gosmacs then switched to gnu emacs in 1985ish. So about 40 years. The renaissance of emacs development in the last decade has been very nice to see.
Regarding emacs-style kbds in firefox -- I use vimium to remap most actions, and occasionally resort to an additional global keybinding helper app (e.g. BetterTouchTool on macOS).
Have they fixed MacOS startup performance yet? ISTR some post about why faster CPUs were making emacs even slower on startup. Seems to have gotten worse over the years.
I am always a little bit puzzled with the versions. I use Emacs from Snap on Ubuntu.
I have to use the pgtk channel, because Wayland.
pgtk/stable is 30.2, pgtk/edge is 32.0.50. Version 31 is not even offered on snap, in none of the channels. I am running on edge (32.0.50) with no problems.
I’m curious as to why - is it a matter of stability/feature completeness in 30.2 that you don’t need or want to bother with new releases? Or that you don’t like the direction of the project past that point?
49 comments
[ 4.4 ms ] story [ 53.7 ms ] threadSweet. GLP1 for my .emacs!
Yes. I had to briefly visit the world of VSCode during a period of time when it had better AI integration than emacs did, but since I got Claude working well inside of emacs I've returned to 100% emacs. There just isn't anything like the old editors, built in the 80x24 terminal era, for getting huge swathes of code on your screen at once. I run a standard widescreen monitor with three vertical windows for emacs, each of which I often will break into two frames, so I can have up to six contexts active at once. I rarely do, but I frequently have 2 and 3. That's my entire 4K screen, full of code, usefully full of code. I'm not an IDE hater but they do put an awful lot of stuff on the screen that on a proportional basis I'm just not using as much as I use the code editor.
I had been getting somewhat nervous about emacs' long term prospects about 10 years ago. I would read the release notes for major versions and generally not be particularly excited about anything. Somewhere around treesitter something seems to have revitalized the project. It may well have been treesitter that revitalized it overall. You end up with a lot more wood behind fewer arrows when the project is able to put more work into generally-useful tools rather than every single language community maintaining their own separate mode for each language.
Now I am more excited about the major releases; for instance term issues are an issue for me with the aforementioned Claude integration. Not enough to stop me, but annoying. At the risk of saying something inflammatory to emacs fans, I feel like emacs is catching up to everything else better now... but it is catching up. It's getting easier to recommend it again as something you may want to seriously consider as a power-tool editor and not just something I used because I had 15 years of finger-experience with it and no significant reason to change. AI has eaten a lot of the IDE tools for me and you can type into a text box in emacs as well as you can anything else.
I still occasionally bring up VSCode now to use the debugger, I still don't feel like I have as nice an experience with that as I do with emacs, but my debugging habits have always been able to deal with doing something a little extra to do a debugging session. By its very nature, you're committing some time to the process just to do the debugging itself, no matter how slick the UI for it may be, so a bit of overhead isn't so bad.
This is my major gripe at most IDEs. Every window, or view, or sub-view insists on shaving off a little bit of vertical and horizontal space for... I don't know, tabs or things? Or to tell me what program I'm running?
I just want a dark screen with text (I run Vim, so I'll concede I allow a tiny bit of vertical space for line numbers and a little bit of horizontal space for the command space)
I don't care what tools other developers use but in January I made my two dev Macs 'VSCode free' and use Emacs for everything. Feels better!
For decades I would spend tons of time experimenting with my Emacs setups but in the last few years I have been shifting to more out of the box experiences. I did write my own agentic coding platform in Emacs Lisp but I keep that separate from .emacs and .emacs.d
I use emacs --daemon instead of tmux inside my agent sandbox for session permanence and portability. A full editor rather than a layer between me and my editor. I can even waypipe the client windows if I want mouse support.
Someone should write an Emacs guide for people who haven't meaningfully touched their .emacs since the early 2000s
Open source with profanity in comments is statistically better than code without it:
https://blog.desdelinux.net/en/open-source-with-profanity-in...
https://news.ycombinator.com/item?id=36621699
DonHopkins on July 6, 2023 | parent | context | favorite | on: Open source code with profanity in comments is sta...
The original terminal emulator terminal.el in gnu emacs, written by mly (Richard Mlynarik), was particularly salty. I finally tracked down a copy, but it looks like somebody complained and in 1990 it was begrudgingly cleaned up a bit, so some of the worst stuff was moved out into a separate file called term-nasty.el for posterity (you, here, now), so as not to give "in to the pressure to censor obscenity that currently threatens freedom of speech and of the press in the US" (oh, Richard <3 ):
https://opensource.apple.com/source/emacs/emacs-59.0.80/emac...
1990-08-26 Richard Stallman (rms@mole.ai.mit.edu)
* terminal.el: Move possibly offensive comments to term-nasty.el.
https://www.digiater.nl/openvms/freeware/v10/emacs/common/li...
[...]
[...] [...] [...] [...] [...]Please, if you have something to do with Emacs, can you review this for NetBSD and OpenBSD when using gtk3:
https://www.unitedbsd.com/d/1621-emacs-30-wxaw
The issue was traced to library xinput2, when compiled with '--without-xinput2' the issue does not occur. But I do not know if that is something that Emacs can address.
although the brief time I used Magit I was enamored I gotta say. I tried lazygit recently and it evoked the same feeling I had when trying Magit for the first time
There's a bajillion ways to do this, some might even involve writing an html file and launching a remote server and tunneling and using a browser and what not. But no! ChatGPT wrote 20 lines of elisp code. I add a tramp basepath, open the text file, and got exactly what I needed. Need any behavior changes, callbacks, transformations? Modify, eval expression, new behavior!
I asked ChatGPT what other system I can use to achieve the same effect. The best answer it gave was neovim. No, neovim can't do that with the same degree of ease.
Disappointing and amazing at the same time.
The drawback of the emacs approach in my case is the tramp latency. To speed things up we'd want to add prefetch and that's gonna be much more than 20 lines and C-x e
Yes, 34 years and no plans to switch.
Emacs cursor movement keystrokes are quite widely supported elsewhere too which use GNU readline or implement at least subset themselves.
Those work well also besides shells with Chromium/Chrome/Safari etc. many browsers input fields (address bar and text area). Cisco IOS, Juniper Junos, Netscreen load balancers too etc. IMHO makes jumping around CLI much much convenient and faster than moving hand to reach cursor keys.
My only gripe is that Firefox and its derivatives it doesn't work any more. Long time ago it did work. And I have no idea why feature was dropped some rewrite.
e: s/deadline/readline/g
Answering to preemptively asked question that doesn't appear in TFA: yup I sure still do.
If anything compared to the 486 days, back when Eight Megabytes And Constantly Swapping was a joke that made sense, my computer now instead of 8 MB or RAM has 32 GB or RAM (so 4096x more RAM, or 2 exp 12 more RAM: something something about transistors doubling every 18 months and all that)...
Who's laughing now? ; )
Seriously though: Emacs with native-compilation, tree-sitter and LSP support (and stuff like Magit and ripgrep integration too) makes it really amazing.
Nothing else is capable of handling the variety of text-related things I want from my text editor.
- I consume HN and Reddit in Emacs. Allows me for example to quickly search through all the links shared in a thread.
- I read Jira and Slack in Emacs - in org-mode. It is far better for finding relevant things, extract them for my notes, etc.
- All my writing done in Emacs. Because I have: spellchecking, thesaurus, etymology and definition lookup, translations, LLM integration, etc. All my notes are in Org (Zettelkasten style).
- All my spaced repetition cards are in Org-mode (they are parts of my notes, I don't need a separate system to manage them). I can generate number of cards to study a topic, from selected notes.
- All my AI sessions are in Emacs. It's amazing that I can send just about any text to an LLM, anytime, anywhere. I can do it in the middle of typing a message, like this very comment.
- I watch YT vids controlling the playback directly. I can pause, rewind, speed-up, mute, extract transcript, etc. - this is indispensable while watching and taking notes.
- my email client is in Emacs (of course, why not)
- my Telegram client is in Emacs. I can easily retrieve a video from any web page and send it directly (without linking the page).
- I can extract any part of my screen and OCR the text out - it pops up in an Emacs buffer.
- I perform all searches from Emacs - I can google, duckduckgo, brave, HN (algolia), wikipedia, etc. I search through my browser history in Emacs.
- I can control my browser tabs, switch between them, find matching lines on the page, jump to links, etc.
- I read and annotate PDFs in Emacs.
- And I haven't even touched anything programming-related (tons of things)
Why, oh why would I ever feel unsatisfied, hoping that there's anything else that can help me do things better? Honestly, there just doesn't exist a piece of software that could help me do even a subset of things I can easily achieve with Emacs. You'd ask me that question in 20 years, if I'm alive and still using a computer - the answer would be - "Yes, what else would I use?"
It sounds inconceivable for non-TUI users such as myself.
I'd like to, but there is currently a RAM shortage
I have to use the pgtk channel, because Wayland.
pgtk/stable is 30.2, pgtk/edge is 32.0.50. Version 31 is not even offered on snap, in none of the channels. I am running on edge (32.0.50) with no problems.