I'm really glad that emacs is integrating modern tooling like LSP and tree-sitter, now Claude Code, but this approach is showing its age. I'm an emacs user of 20 years and honestly it's getting hard to configure everything these days. Claude Code before the IDE integration was actually the easiest thing to get working (since it just worked and then auto-revert-mode keeps my buffers in sync.)

I'm on a new MacOS install for $WORK trying to get lsp and ts work with a Typescript/Go repo and after some $PATH wonkiness (my default shell is not the same shell as the one that emacs launches in) got typescript-ls working but gopls is still having issues being downloaded. I haven't spent the hour or two it would probably take to figure out why the in-built downloader can't put gopls in the right place.

I'm curious what emacs users are doing these days. I'm using Zed right now and really enjoying it but it's really hard to give up 20 years of emacs and I do love how emacs can scale from small one-off config file editing to huge projects and I love how configurable it is.

Is neovim better in this space? Should I be learning how to debug elisp better to understand how the commands interact with my environment? I've been using emacs keybindings (in Dvorak at that) for so long I don't know if I'd enjoy the neovim editing experience.

> Should I be learning how to debug elisp better to understand how the commands interact with my environment?

Hell yeah, you should. I just don't understand how the heck people would claim to be using Emacs for decades and still not knowing how to use the built-in profiler, edebug, apropos, macro expansion, advising system, indirect buffers, etc.

They would complain how "fickle" Emacs is, without even realizing that they are literally operating a living, breathing, dynamic and malleable system. If there's a car that allows you to assemble some parts onto it and turn it into a submarine while you're still driving it, of course it would require you at least the knowledge of basic troubleshooting and the acceptance that shit may break at any point.

You have no idea how liberating the feeling is when you can pinpoint a problem, launch a gptel buffer and then ask Emacs to write some elisp for a hook or an advising function, you can even try the snippet in-place, without ever moving it anywhere.

These days I don't even try to strive for a "clean" config - it's modular enough and I can relatively easily navigate through it. Whenever I face a problem, I just add some elisp. When something breaks (usually due to upstream changes), I don't even get annoyed. Identifying a problem and finding a workaround doesn't take too long - typically minutes - and it doesn't even happen very often.

> Hell yeah, you should. I just don't understand how the heck people would claim to be using Emacs for decades and still not knowing how to use the built-in profiler, edebug, apropos, macro expansion, advising system, indirect buffers, etc.

Yes I'm familiar with apropos, macros/extensions, advising, indirect buffers, and a lot of stuff. I've just never debugged elisp mostly because I haven't had a hard time just iterating on elisp to make it work and have never bothered debugging packages I've installed. I've put off learning edebug because for the most part I've used the "Lisp debugging" part of my brain on SBCL and Common Lisp. It's just one of those "do I really need to shave this yak?" kind of things and until now it's been no.

Sounds like edebug is the next elisp frontier for me, thanks.

(Btw your comment is a bit condescending sounding but I actually love reading your emacs comments on HN because your enthusiasm for emacs is great.)

> You have no idea how liberating the feeling is when you can pinpoint a problem, launch a gptel buffer and then ask Emacs to write some elisp for a hook or an advising function, you can even try the snippet in-place, without ever moving it anywhere.

Yes absolutely this though. I've been having a lot of fun with gptel and in general I have all sorts of fun bindings that do exactly what I want to do. There's a reason I don't want to give up emacs and it's this ability to write elisp and wrangle text.

> When something breaks (usually due to upstream changes), I don't even get annoyed. Identifying a problem and finding a workaround doesn't take too long - typically minutes - and it doesn't even happen very often.

I'll be honest, my interest in dealing with this kind of thing greatly varies based on what's going on in my life at the time. Sometimes I'll be locked in and go on a deep binge to optimize my environments. Other times I find it very painful. Maintaining an emacs config has always been quite annoying but I put up with it because the power and customizability of the whole thing is unparalleled.

(The fact that an editor like Cursor is a proprietary fork of an open codebase that restricts you to the team's vision is, uh, honestly pretty silly to me. Like why? I can write code can't I? Guess that means I need to maintain configuration but I'd rather do that than use Cursor any day.)

> Maintaining an emacs config has always been quite annoying

I dunno, I feel it stopped being like that for me long ago. Perhaps I'm just a "tinkerer" and maybe I never even minded improving my setup. But like I said, at some point, my workflow has become purely "goal-oriented" - whenever I see a problem, I either:

- Make a todo list item and forget about it until next time

- Or start writing some Elisp (if the problem is simple enough)

Let me share some practical examples of each.

One day I got annoyed that it was taking me more than a minute to search for my own comment on HN, around some interesting conversations. I made a todo list item. Then at some point I wrote a function, then later I published a package. I can't even tell you how effing nice it feels now - takes me seconds to find relevant stuff.

The other day I was reading a pdf, while taking notes. pdf-tools has this nice feature called pdf-view-themed-minor-mode - it adjusts the colors of the document to the colors of your theme, nicely blending the pdf into your editor. I use it all the time. I also use a package called circadian.el - using Emacs' built-in solar calendar, it adjusts the color theme based on the time of day. So, my color theme changes automatically, but it doesn't get automatically reflected in pdf documents I previously had opened. Not a biggie, I still can do it manually, yet it took me a few minutes to concoct an advising function that runs after (load-theme) and sets the colors in every pdf. Of course, why do something manually that the computer is supposed to figure out without your assistance?

Now, neither pdf-tools maintainers, nor the author of circadian.el know about my customizations. If any of them make some changes that break my beautiful zen fidgets, why would I even get mad about it? I'll try to fix it, and if it takes me longer than three minutes, I'll just remove it altogether and go back to toggling it manually - not a biggie, never was.

That has become my philosophy that probably extends beyond Emacs - my terminal, my browser, my WM, etc. The world is never meant to be perfect for everyone. But you can make it perfect just for you. I learned that it's better to apply ideas that enable you to build your perfect world, than someone else's perception of what _your_ ideal world should be. That's why for an individual programmer, choosing FOSS tools almost always yields better results in the long run. In a team setting that may be a bit difficult, but if you get inventive enough, you can always find workarounds. This is what Emacs taught me that no other tool ever did - the instinct to never settle for the status quo. Whenever something bothers me, I either discover workarounds on the spot or make it a todo item.

edebug is great! It was way ahead of its time.

> I just don't understand how the heck people would claim to be using Emacs for decades and still not knowing how to use the built-in profiler, edebug, apropos, macro expansion, advising system, indirect buffers, etc.

The second half of your message is interesting. The first half is needlessly condescending.

> is needlessly condescending.

While this may sound condesending, I believe it's understandable where the snub is coming from. VSCode doesn't need evangelism - it has become the de facto standard that every programmer is expected to know. Emacs occupies a different position entirely, and when curious newcomers encounter comments like "I used Emacs for 15 years before switching to...", they draw conclusions that may not reflect the full picture. Upon closer examination, these long-time "experts" often reveal they barely engaged with Emacs beyond basic editing - they've never published packages (which is actually far simpler than creating VSCode extensions), never written custom functions, never even added a simple advice for their own needs. This isn't truly "using Emacs"; it's merely dabbling in it.

Unlike conventional tools where years translate to expertise along a predictable curve, Emacs rewards deep engagement over mere time served. When someone who spent years passively using Emacs criticizes it publicly, they inadvertently discourage potential users who might have discovered something transformative. The damage is disproportionate: criticizing VSCode barely makes a dent in its massive user base, but dismissing Emacs can deter the very people who would thrive in its ecosystem - those willing to invest in understanding a tool that becomes an extension of their thinking rather than just another tool.

Therefore, of course I would be confrontational. I honestly have not ever seen an accurate, honest, factual review of Emacs criticism and comparison with other tools in the same space, because simply there isn't any other tool that operates at the same level. Critics compare surface features while missing that Emacs is essentially a different category of software altogether.

I think this sort of comment turns people off from Emacs.

Most people don’t want to become experts in the editor. The editor is a means to an end: writing code, writing text, etc. This comment suggests to the new user: if I don’t program Emacs and publish packages in it, I’m not really using it, I’m just dabbling in it. But I don’t want to program the editor, so I shouldn’t use it at all.

I also don’t think the comments you criticize discourage users who would have discovered something transformative. Someone interested in programming their editor isn’t discouraged by someone who complains that Emacs is missing some modern prettiness, or that it’s not popular. There is plenty of Emacs evangelism that will hook those receptive to it.

I would like to balance out your comment by saying: it is just fine to, as you would say, dabble in Emacs. Don’t write advice. Don’t publish packages. Use customize. Don’t write a .emacs. Use the pull-down menus. It is still a delightfully powerful and well-documented editor even if you do none of the “expert” things. The developers have added so many of these features precisely so Emacs is easier to learn and use, and don’t let commenters who call you a dilettante convince you that if you’re not an Emacs Lisp maestro, you shouldn’t bother with Emacs.

To start, I disagree. If it takes a person to turn away from a tool just because some random human tool said something online, maybe they are not ready, on what level - emotional, spiritual, mental, moral - I'll leave them to decide.

I'm not saying "don't dabble in Emacs", dable all you want. Just use the damn tool - it's not that hard. To use the tool you just need to use the fucking tool with the intent to fucking use it. When someone says something like "I used Emacs for a decade as just a text editor" to me it sounds like: "I had this smartphone for the past two years and used it only to make calls. Not even video - I never bothered to figure out how that works..."

Emacs is a Lisp-based event-loop, with an embedded editor in it. This is of course a "simplification", but that will do. What do you do with a Lisp interpreter? You feed Lisp programs into it. Try writing some Lisp, it's not that hard. Swallow you hubris, swallow your pride - whichever you prefer and stop blaming parenthesis, bad weather, ThePrimeagen's mustache, sanctions or AI. With AI tools these days it may even feel like playing a video game.

You don't need to be "an expert" there are no "experts" in Emacs, there's no "career ladder," progression system, no ranks and shoulder straps, I don't know anyone who gets paid even just a little bit more for simply being good in Emacs - I certainly don't. Use it or not - just don't think of being "a newbie" or becoming "an expert" you either enjoy it or not, whichever it is - it's fine.

And by the way, I personally think I would've loved to witness my kind of evangelism back when I was still a tool, just much younger.

Evangelism takes at least two forms:

- You're a sinner, a wrong-doer, and you must repent.

- This world you have not yet experienced is wonderful. Let me tell you about it.

Many, probably most, respond better to the second form.

My message in this particular instance is not aligned with either of these, and you seem to be misreading me. I have no issue with people choosing different tools, switching techniques, finding different ways of thinking about problem solving, text-editing, etc. It's not even about "punishing" those who choose to leave my beautiful world or trying to get them back, it's about setting expectations for those who have never seen it.

What I see quite often is when people profess years of using the tool and finding it unsatisfactory, only to reveal (if ever) that they've engaged with just its surface layer. It's like someone saying they found a piano limiting after years of only using it as a percussion instrument. My point is about embracing Emacs as a Lisp environment from day one - not because everyone must use it this way, but because that's what it actually is. When you treat it as 'just an editor' you're working against its design rather than with it. Those who embrace its programmable nature early often discover possibilities they didn't know they were looking for. Yes, this may mean a slightly steeper upfront commitment, but it also means actually using the tool rather than having square-peg-round-hole mismatched expectations.

It's not about choosing nicer or harsher messaging, it's about the truth, and it comes from the heart - I personally, of course, regret years wasted in vain instead of finding Emacs sooner; it works great for me. I understand it may not work that well for everybody, and I'd rather they realize that sooner, instead of wasting years of their lives. I also spent a long time trying to rationalize Emacs in my own head, because I kept approaching it from the wrong angle, but I am happy I didn't quit. Some people may not have that kind of patience.

> When you treat it as 'just an editor' you're working against its design rather than with it.

No. This is exactly the sort of talk that turns people off from Emacs. You can use it as "just an editor." Indeed, read the GNU Emacs Manual. It almost entirely describes "just an editor." An excellent editor. The user needs to consult the Emacs Lisp Reference Manual only if extending Emacs is desirable.

Comments like this one suggest that Emacs is designed only to be programmed and that if the user does not program it, the user is "working against its design." This is just as false as saying that a Vim user who writes no VimScript is working against Vim's design. No, the user who doesn't program the editor is...using the editor. As designed.

> You can use it as "just an editor."

You can, sure - sometimes we all do, when we need to debug a faulty package, we run it with the -Q option. I've been working for many years with people who use Emacs, have many friends who use Emacs, have mentored complete newbies and regularly discuss advanced topics - I have yet to meet someone who uses Emacs as is - with no customizations whatsoever. In fact, if I meet anyone who does that, I would very much be interested in learning their rationale, and perhaps even try to question their mental or emotional state.

Vim on the other hand, is very different in this, there are in fact plenty of users who do use it with zero customizations, daily.

> read the GNU Emacs Manual.

Okay. Let's do it... M-x info-emacs-manual - the very first two sentences - "Emacs is an advanced, extensible, customizable, self-documenting editor. This manual describes how to edit with Emacs and some of the ways to customize it." The third paragraph right there, at the very top, already explicitly says: "For information on extending Emacs, see Emacs Lisp". Five words pertaining extensibility in just three opening paragraphs, against only a couple of cognates of "editor".

What the heck are you even trying to argue here? Rephrasing your point doesn't change the underlying fact - Emacs is first and foremost an "extensible editor", not "an editor that can be extended (if desired)" - the emphasis is on "extensible", not on the "editor". That's what sets it apart from literally any other tool that gets used as "just an editor".

If regurgitating the factuality engrossed in the manual, ardently or otherwise, turns some people off from Emacs - so be it, like I already said before - it's probably for the best. Better for them, better for the Emacs community.

Neovim editing has come a long way; you go from barebones (no plugins) to full-blown IDE and everything in between.

There are lots of pre-configured Neovim distributions if you don't want to roll your own, such as LazyVim [1].

There are lots of AI plugins for Neovim [2].

[1]: https://www.lazyvim.org/

[2]: https://github.com/rockerBOO/awesome-neovim?tab=readme-ov-fi...

I have no idea why you're being downvoted.

> I'm curious what emacs users are doing these days.

Using Emacs for pretty much everything. Org (w/ babel) for most of my notes, blogs, presentations and todo lists. Magit for everything git. Gnus for keeping up with the linux kernel mailing list firehose. LSPs for C, Python, Go, Rust. Tide for typescript. I use aider and aidermacs for my AI pair programming. Haven't tried Claude Code yet but it's on my todo list because everyone raves about it. I even use mastodon.el, and Circe for IRC.

I use macOS native emacs built from source, currently 31.0.50. The largest project I work with is the Linux kernel which I edit remotely using Magit and LSP over TRAMP.

`use-package` has pretty much simplified everything:

  ;; c
  (use-package c-mode
    :ensure nil
    :defer t
    :mode "\\.cu?\\'"
    :config (setq c-default-style "gnu"
                  c-basic-offset 2)
    :hook ((c-mode . lsp)
           (c-mode . bmacs-ide)))

Use-package can even install third party packages automatically. Definitely worth learning. I converted my .emacs a few years ago. I'm using borg[0] to install stuff though because I like git.

[0] https://github.com/emacscollective/borg

> I'm curious what emacs users are doing these days.

Integrating with a new language ecosystem is a significant amount of work for me because it involves making choices about what packages to configure and how, and which external dependencies to go with (e.g., which LSP server to use). I try to make those choices carefully, and for a lot of projects I touch in only a dabbler in those languages. It takes time to figure out.

But for actually managing external dependencies (LSP servers, linters, static analyzers, etc.), I use Nix (in particular devenv.sh) and direnv so that Emacs doesn't have to download them; it just finds them on the path. I also sometimes configure those tools via Devenv as well, creating an in-repo RC file for them and pointing to it with an appropriate environment variable. Then my configuration lives in source control and the rest of my team can use the same tools regardless of editor choice.

Yes Nix is also something I've been thinking of diving into with emacs to solve this issue. What's your experience been running Nix on non-Linux targets? I mostly use MacOS and FreeBSD outside of Linux, primarily MacOS.

I've written most of the development environment declarations for my team's projects, which are mostly glue code or IaC in Terraform, Python, Bash (Nix can do some really cool things with Bash scripts[1]), and Ruby, and some Nix packages that we also use to deploy those projects. About half of my team uses Nix on macOS, and the other half uses Nix on Linux (via WSL), and our other deployment targets are all Linux on AWS (some EC2 boxes, some Lambda services, some ECS/Fargate deployments), though not all of those are Nix-based.

There are sometimes small differences, like sometimes a Python package with native dependencies will fail to build in some Linux environments but not on macOS or vice-versa, but generally you don't, even then, need to special-case things by operating system to make them work uniformly.

As for overall support, macOS is a more chaotic and quirky environment: macOS updates break applications or remove APIs more often than Linux updates do, macOS updates nuke configuration files in `/etc`, or blindly steamroll system users (low UIDs), the login shell doesn't manage environment variables or other aspects of the GUI session, etc. These are extra hurdles that Nix has to work around on macOS. But it generally works well and the only real hooks that Nix needs into your environment are some shell scripts that need to be sourced on startup. If you know how to manage your PATH and shell initialization in general, you can do it with Nix. (Additionally, one distributions of Nix itself includes some extra software for managing these hurdles that works pretty well at the cost of a more opinionated and more "invasive" install-- check out "Determinate Nix" if you're interested.) Other than that, it's basically the same as on Linux. Package selection is good, things mostly work the same way.

Nix's support for platforms other than Linux and macOS is less mature. In years past, efforts have waxed and waned, but in the past few years there've been some concerted and persistent efforts to make Nix and Nixpkgs more usable on Windows, NetBSD, and FreeBSD. Even native (e.g., not just cross-compilation from other platforms) support for Windows is actually a thing!

You can also easily set up "remote builders" to local VMs for Linux and FreeBSD so that you can transparently build packages and environments for those platforms on your Mac, if that's a frequent choice of development platform.

Overall I'd say it's pretty good, but I don't personally know much about the current status of FreeBSD. It looks like there are a few hundred FreeBSD-specific packages in Nixpkgs, and there's also a fork of NixOS based on FreeBSD called NixBSD. Most packages include "platforms = [ unix ];" in their metadata, which means they're at least intended to build for not just Linux and macOS but also FreeBSD, but I don't know if Hydra is building binaries for any FreeBSD platforms. If it's not, then many packages may be untested and have small build problems. My guess is that at worst, Nix on FreeBSD is probably slightly behind where Nix on Linux was when I got into it 7 or 8 years ago. At that time, Nix still felt amazing and very worth it, but certainly required a willingness to learn how to package things and fill in gaps yourself to get the most out of it. Consider dropping by NixOS' Matrix community; I'm sure there's a FreeBSD channel. --

1: https://github.com/abathur/resholve/

Btw, LLMs are actually quite helpful for configuring Emacs, in particular for creating custom functionality..

But yeah, I broke my home Emacs setup somehow so that rust-mode no longer works in some situations. I have my config in git, though, so maybe I'll figure it out!

At least I've started migrating to use use-package for configuration, to bring some structure to the configuration.

Zed does seem rather interesting, but I don't ever see it being as configurable/extensible at runtime as Emacs. I suppose one could always just implement such features into the Zed itself; I presume its code is not too indimidating, given it's a modern code base and not likely to break in unexpected ways.

For your particular shell issue:

https://github.com/purcell/exec-path-from-shell

It can extract PATH and other environment variables from your login shell configuration.

!! This seems really nice for macOS users! Less clunky than the "envfile" option Doom Emacs provides for sure.

I also recognize the author's name because I use their direnv integration package all the time! That one is great, too.

>> I'm curious what emacs users are doing these days.

Still using it because of the massive amount of customizations accumulated in a time span close to yours. I'm often tempted to switch, but if I look back, what other editor would have served me for ~20 years, mostly unchanged? I remember writing lots of macros for Visual Studio 6 and then Microsoft revamped the object system of their IDE with .NET. My understanding is that Visual Studio plugins may not work from an IDE version to the next. Yes, customizing Emacs requires time, but so does relearning a new environment every few years.

I do use other editors, however, for things that would require too much time to configure in Emacs, or for which I prefer a GUI interface. For example, at the moment I'm working on a C++ project in Emacs, yet for debugging and a Git GUI I have VSCode open.

>> Is neovim better in this space?

Maybe, because of the bigger use base of NeoVim/Vim.

>> Should I be learning how to debug elisp better to understand how the commands interact with my environment?

Definitely.

>> I've been using emacs keybindings (in Dvorak at that)

Hi, mate! (^_^)

>> for so long I don't know if I'd enjoy the neovim editing experience.

What? No [Neo]Vim user has ever ported Emacs keybinding to Insert Mode? O_o

> What? No [Neo]Vim user has ever ported Emacs keybinding to Insert Mode? O_o

I'm curious how fluid that is. My experience with Emacs keybindings has been, well, variable to say the least. Maybe the vim-alike folks can make better experiences. Readline's emacs bindings are a bit lacking but still fairly good for day-to-day usage.

I am truly, to borrow a phrase from another commenter on this post, a "longtime Emacs dabbler". But I use Evil mode everywhere and sometimes use other Emacs bindings in Insert mode where they don't directly conflict with some other Evil binding. It feels more or less harmonious to me, but I started with Evil and I'm not particularly attached to any default Emacs bindings.

> I'm curious what emacs users are doing these days.

8 years user here so still an emacs noobie, but I switched to nvim two months ago and haven't opened emacs in a month. Just slapped on lazy.vim and have been toggling the different AI tools in LazyExtras.

I do find the ecosystem a lot better in nvim and it seems the community around nvim is more publicly engaged with new AI tooling - check out ThePrimeagen for example.

> 8 years user here so still an emacs noobie, but I switched to nvim

I don't know man, whenever I see comments like this, I just don't get it - there's just no "switching" for me personally to anything, like ever, I just don't even see the possibility for it.

The question that always gets me is like: "were you just using it like ... I don't know to edit text? That's all you've done with it?..."

I have no idea how would I be able to do my things in anything else, whatever that is - Nvim, Sublime, Helix, etc.

- How would I control video playback from my editor while taking notes?

- How would I annotate PDFs?

- Or, create and manage Anki cards - my flashcards are just my notes, they don't require a different medium to exist.

- Or how would I test APIs - I don't need to use stuff like Postman - all my endpoint investigations are in my notes. Documented and perfectly reproducible.

- How would I manage my dotfiles? I use Org-babel for it and it makes my entire system immutable - is it better than Nix? I dunno, it just works and it's simple.

- What would I use for file management? I just wrote a wrapper that uses rsync to move large files around, how would I ever do anything like this in other than Emacs? How would I mark all the files that are over 1GB, older than three months and match a given regexp?

- In Emacs, I can move my cursor to a piece of plain text like "RFC 959", "SAC-28410", or "my-org/some-service#182" and immediately start reading shit - it intelligently recognizes that the first one is an RFC document, another is a Jira ticket and the third one is a Pull-request on GitHub.

- I can type a single query and simultaneously search for it on Wikipedia, Google, YouTube, GitHub, Hacker News or my own browser history, and I wouldn't even know how to do that in something that's not Emacs.

- In Emacs I can type a shell command and pipe results into a buffer, or pipe the content of a buffer to a shell command.

- In Emacs, my color theme changes depending on time of the day, because Emacs has built-in lunar and solar calendars.

- How would I read and manage my email in Helix?

- How would I track time? Clock in/out of tasks, generate time reports, do pomodoros?

- How would I search, browse and read Hacker News and Reddit?

- How would I create presentations?

- How would I test database queries?

- How would I manage Docker containers?

- How would I read man pages?

- How do I translate text?

- And how would I interact with LLMs?

...

Nope, there's no "switching" for me. It's just not possible. My entire life is woven into this text-based operating system. My thoughts, my work, my communications, my entertainment - they all exist as interconnected plain text that I can grep, link, transform, and version control. Every keystroke I've memorized, every workflow I've perfected, every piece of data that references another - it would take years to rebuild this in whatever there might be, and I'd still be left with a pale imitation. Emacs isn't just where I edit text; it's where I live.

I envy your level of emacs knowledge! I did a lot of things in it, but not as many as you: https://blog.calebjay.com/posts/my-emacs-environment/ I really wish I had finished my blog post I'm working on right now about my new life stack that no longer involves emacs, it'd contain all the info I'd like to convey here.

Looking at your list, I guess what it came to for me is that getting an excellent UX for any one of those given tasks is only possible by using a tool made for that job. Probably, I can get a very good experience using Emacs, or maybe even excellent, but it would take a lot of time for me to tweak a plugin or write my won.

Video playback: Are you playing your youtube or jellyfin videos in Emacs? Well, that's pretty cool, I just have a firefox tab open for one or the other, on a second screen. If I want to pause or skip, I `META-l` to that window on my second screen (i3wm) and use vimium bindings or the native player bindings to interact with it.

Annotate PDFs: I don't do this anymore. I used to hand-annotate in various tablets as an experiment, but in the end all my notes got digitized to a note taking application anyway (org mode, previously) so I just highlight things, handwrite notes when needed in a notebook, and then summarize them in a note taking application (or write them there directly).

Anki cards: I used to do this in emacs as well. Now I don't use anki at all anymore. I didn't find any improvement in my life, conversations, or blog posts from memorizing all these facts (and this includes memorizing words in my Mandarin learning journey). Instead all I seemed to be doing was exhausting what little learning energy I had on "the dreaded flashcards." Plus it was tedious to write and maintain them, even though it was happening right there in the same org file I used to take these notes.

I'd be curious to learn more about your API testing setup, that sounds very cool! At work, our API is served via FastAPI and there's swagger docs automatically available that I can browse in a web browser if I want, or I just in nvim `SPC f f` to open a fuzzy file finder and find the model definition I want and look at the endpoint directly, or I can do the same to find the kubb-generated react hook, or typescript model, for the endpoint. For other projects, I guess I browse the API docs in a web browser.

I've never heard of using org-babel for managing dotfiles, that's a cool idea! I just have them in `~/.configs/` which is a git repo that I mirror to a private github repo.

Re: file management: I do the same but just using either `mini-files` in nvim, or, just some combination of gnu tools in a terminal. If I need a script I usually write one in python or bash. Being able to do so in lisp sounds pretty cool, though.

Text under cursor - what modes is that? That's pretty cool. I just browse jira tickets and pull requests in a web browser. I've never found desktop apps, terminal wrappers, etc, to be as good as just whatever a given company is shipping for their webapp (e.g. I tried managing github PRs in magit using that magit-forge thing but didn't find the experience that great compared to github's webapp).

That is a very cool mode you have for searching, I think I saw something like that on reddit once, but my thought on it is the same now as it was then - why wouldn't I do that but on google.com or search.brave.com, both of which already search wikipedia, google, youtube, github, and hacker news? I can type the same into the address bar of my browser and it'll do the same but also search my web history.

Piping shell commands into a buffer is indeed very cool. You know much more about the terminal than me, I can tell. However naively I could just do this `whatever | nvim`, right?

I saw your comment about the color theme change, that's so sick and I admire you for setting that up. For me, just `vscode-default-high-contrast` was fine 100% of the time I had emacs open, or in nvim `kanagawa-dragon` is fine as well. I don't knock you for having a changing color theme, I just don't really see the point for me.

I used to manage my emails in mu4e and it was fine, but after getting fed up with html emails not rendering correctly, or send email failing silently occasionally and not realizing it, or missing emails for some weird reason, I let go and just switched to thunderbird. I miss having 100% keyboard interaction with email, but thunderbird gets it all done reliably: reply-all, CC, BCC, archive, whatever. I may try out mutt one day though.

I used to track time very well in org mode and that is an extremely useful feature. I thought it was very cool to send to-the-minute invoices to my clients. I would generate time reports and have them added to my `org-roam-daily` entries. So much interesting data! Then I realized, for my own journal, it was an overwhelming amount of data that was basically useless to me, and for my clients, they didn't give a shit, they'd pay me either way, so I started just roughly estimating my hours based on start/end times and that was good enough, got me paid basically the same amount, and took me less time and effort. I do keep a hobonichi techo journal where I annotate the week-view with a general overview of what I get up to hour to hour which is nice to keep me on task and make me quickly realize if I am addicted to a new book and spending too much time reading it.

As for searching reddit, I am a recovering reddit addict and don't use it anymore, though I used to just use it in firefox with ad blocker and using reddit's "old" mode. Hacker news I'm also addicted to and try to avoid using it too much, but again, I just use it in a web browser. Increased friction for my addictions is good: I stay logged out of these sites and only log in when I really need to interact for some reason. This is especially great for twitter which I can't even interact with in any way if I'm logged out.

I always thought it was cool that people were creating presentations in org mode, so I tried it once and then went to give a talk on job hunting at a local university. They didn't have a way to plug an arbitrary device into their projector, so they asked me to email them the microsoft slides files, or send them a link to the google drive presentation, and they obviously had no idea how to install emacs. I didn't have that so had to quickly copy my presentation to google. Google slides works 100% of the time at all the talks and presentations I give so I just use that now. My presentations are quite simple so it's not too much trouble.

As for testing database queries, again, what mode are you using? That's very cool. I test them in dbeaver or in psql directly.

Same question for your docker containers. I just use some combination of `docker ps` or editing docker-compose files, alongside netstat, cloudflare, and portainer's web ui.

I read man pages using `man {whatever}`. Out of all the things you've mentioned, this is the one where I'm actually not curious how you do it in emacs, I just want to know why lol. Come on, opening a terminal and typing `man` isn't that big of a deal, surely!

I translate text using the google translate web UI, which easily lets me switch languages, upload images, etc. I didn't know emacs had a mode for this, that's interesting but I can't imagine it to be quite as smooth as the webUI is...

LLM integration in emacs looks very interesting, I'd like to try it. I like that it can actually use claude's ide mode. As far as I know, no nvim plugin can do that yet. However, right now I don't think any IDE integration works as well as the tab-completion proprietary model cursor uses, that lets me just TAB TAB TAB TAB get something done really quickly. I think their agentic mode is ok, I liked the git-style accept/reject changes thing, but I can do the same by doing claude code in a terminal and then just checking the changes in magit, or, now I use lazygit. Or just `git` commands directly. Personally I'm still chasing the dragon from that first Cursor hit. I really don't want to use Cursor but I want to have something with as-good tab completion and nothing in emacs (before) or nvim (now) has come close, but I will be trying the modes mentioned in this thread!

Regarding org mode in general, I now use a combination of a handwritten daily journal, as well as Trilium-next note taking, which I found to just be a more feature-rich and portable experience in the ways I need it to be, whereas org-mode was feature rich in a way that didn't matter to me. Turns out a super-powerful tagging and organization method for my tasks didn't actually help me stay organized or get more tasks done, but a simple yearly, monthly, weekly, and daily task list supported by a handwritten piece of paper work much better for me. No need to know if a task is for work or pleasure or what the GTD context for it is, I can just check my notebook (or trilium daily entry) to see what needs to get done.

I'm not trying to convince you to "switch." I'm envious of how well you've tailored your emacs to yourself - you're the destination I thought I was headed for when I wrote that blog post linked above. I never arrived, which perhaps is sad, but on the other hand, I spent a lot of time doing a lot of other things, which is just life, I guess!

So how did the switch to neovim go? I'm very interested in where you ended up. Please share a summary if a full blog post is too hard!

> I'd be curious to learn more about your API testing setup, that sounds very cool! At work, our API is served via FastAPI and there's swagger docs automatically available that I can browse in a web browser if I want, or I just in nvim `SPC f f` to open a fuzzy file finder and find the model definition I want and look at the endpoint directly, or I can do the same to find the kubb-generated react hook, or typescript model, for the endpoint. For other projects, I guess I browse the API docs in a web browser.

I used restclient for this for a long time and that was great, but recently it got archived. Some of its functions are about to become deprecated so I'm thinking of moving to hurl-mode. I've used hurl a bunch so maybe that's where I'll end up. This is one of those things I don't like about emacs. The ecosystem is small enough where elisp tools just end up abandoned. CLI tools end up being better because their ecosystems are larger.

> I always thought it was cool that people were creating presentations in org mode, so I tried it once and then went to give a talk on job hunting at a local university. They didn't have a way to plug an arbitrary device into their projector, so they asked me to email them the microsoft slides files, or send them a link to the google drive presentation, and they obviously had no idea how to install emacs. I didn't have that so had to quickly copy my presentation to google. Google slides works 100% of the time at all the talks and presentations I give so I just use that now. My presentations are quite simple so it's not too much trouble.

Try generating PDFs of your presentations. I find that this works pretty much everywhere too. Even locked down computers on college campuses can generally just open up the default PDF reader and render your PDF. And if you're just doing text slides with maybe a graphic or two, then a PDF should be easy to generate.

I'm very tempted to switch, or at least try neovim. My reasoning to switch goes something like:

"The core of nvim is small and mostly depends on Unix-ish tools communicating using pipes. These tools tend to be better supported than a lot of sparsely supported elisp that lives in emacs. Moreover it's easier to debug neovim issues because it's a matter of spawning subprocesses and subshells and simply pushing data into/out of pipes."

I'm not sure if this thesis is correct. I may be off-base how much better support nvim actually has and maybe I'm walking into another emacs, in which case I'd stick with emacs. But also, I just love the editing experience of emacs. I love its chorded commands. I love the kill ring (never understood why folks would use cua-mode.) I love the fluency with which you can record macros. I love writing bits of elisp to automate the stuff I need. It's this experience that I'm not sure neovim can replicate, especially modal editing. I'm also a Dvorak typist and vim ergonomics seem very QWERTY-based.

But I'm very curious how well my thoughts stand up to reality.

Ah, PDF, that would have been smart :P

I can recommend at least trying neovim, but I had a much easier transition than perhaps you will, since I used `evil-mode` in emacs ;) So I've been a primarily modal editor for 8 years, and actually don't remember any of the chorded commands from my initial days learning emacs. I took one thing from that time: putting CTRL where CAPS is, then I installed evil-mode and never looked back.

I will say as someone who was feeling the start of RSI, I do find vim's bindings to be a lot less painful than emacs chorded commands.

But, I don't know if a "switch" is in the cards for you, from what you've said, because of the Dvorak and that you'd be learning vim and modal editing at the same time. As I understand it, dvorak vimmers can either rebind everything to be in "the same place" to maintain the inherent layout comfort of vim, and lose the mnemonics (`dtp` delete to "p"), and then have to deal with a full rebind on top, or, they can rebind nothing to maintain mnemonics and reduce startup cost, but then have the layout be super wonky and un-ergonomic. Neither sound that pleasant to me. You're right, vim bindings are very qwerty focused.

Also I desperately miss the kill-ring and still hit my binding for it. There are "registers" in nvim and I bet I can find some plugin or write something in lua that will let me switch, on paste, between my "most recent yanks," but I haven't learned how to do that yet.

Macros are great in vim, I think just as powerful as emacs. Lua is also very powerful, but of course, nothing beats the fact that Emacs is a REPL of elisp that you can modify on the fly. Nvim so far as I understand it must reload to register LUA changes (you can still run lua to modify buffer contents though).

However, I do believe the nvim community is more talkative than the emacs one, and busier. Maybe this is because more content creators are vim/nvim-forward, than emacs? I know like, 2 emacs youtubers, and 10 vimmers, some of whom are super famous for other stuff unrelated to programming.

I agree with you on focusing more on unix-ish tools and staying in terminal. It's something that attracted me to nvim. I realized I had been learning a lot of basically one ecosystem, emacs, when instead I could be learning tools that are available on any unix-based machine. Of course you can install emacs on anything, even android, but you gotta install it and get it running. Plus I just feel a lot cooler piping things between unix commands :P

Anyway, for me, the transition was fine. I slapped on lazy.vim and have been basically 99% as productive at work as I was with emacs, only making a couple mistakes here and there. I love the default bindings lazy.vim came with and adjusted to them well. If you do want to try it out, I recommend lazy.vim if you're considering trying out one of the nvim ide packages.

> You're right, vim bindings are very qwerty focused.

I can't share my personal experience, because I never tried switching either to Dvorak or Colemak - I never conceived my typing speed to be a bottleneck - I type faster than I can think of words (but that might be because I'm not a native English speaker), but I've been a vim user for a very long time, and thus I've talked to many vimmers. I have heard several stories that switching to another layout wasn't incredibly difficult, but I suppose the experience would be very personal.

> Macros are great in vim, I think just as powerful as emacs.

Not quite. In Emacs, you can not only record and replay macros, they are fully editable entities.

Vim macros mostly are limited to sequential keystrokes, there's no vars, no if/then logic, no loops, there's no prompting for input, no data manipulation. From practical point these don't really matter, but what sets Emacs apart that you can record a keyboard macro and then fully edit the corresponding elisp code it translates to. Which also allows you to embed logic in a macro - you can inject Elisp evaluation directly during macro recording, which in practice allows you to do things like: "Loop through lines until you find a blank one" inside a macro.

> Maybe this is because more content creators are vim/nvim-forward, than emacs?

That might be true, most Emacs users don't even bother sharing their "secret" knowledge. Some interesting bits quietly sit, marinating in private repos for years, sometimes decades without ever making into a package.

One thing you might be missing here - there is a ton of Emacs Lisp out there. GitHub alone contains some enormous amount of Elisp. It's pretty mind blowing - I suspect there's more Elisp in the wild than Common Lisp and Clojure combined. And of course, I don't need to remind you that Elisp is not a general-purpose language. It's made for one and one objective only - to serve as a configuration language for Emacs, it doesn't get used in anything else.

Even with all the current and increasing popularity of Neovim, it will probably take a while to catch up with Emacs in terms of written code and solutions for it. Case in point - Org-mode. It's been around for a long time; it is an incredibly ingenious system. Alas, so many attempts to clone it to work in something else still haven't gotten too far.

Oy vey, I guess I'll have to get more prescriptive than enumerative. I do seriously appreciate your wonderment and the invitation for less emotional and more scholarly discourse.

> getting an excellent UX for any one of those given tasks is only possible by using a tool made for that job.

That's true, but only to a certain extent. You see, when you look at Emacs' pieces individually, it's really difficult to see it as a perfect tool for any job. Emacs isn't the best email client, it certainly doesn't have the best web browser, it isn't the greatest debugging tool for any given programming language, it's not the best version control tool, etc. But that's when you look at each of the features in isolation. What makes Emacs the overall greatest thing is that it has the ability to act like glue, and things can work in harmonious integration, I've spoken about that before. https://news.ycombinator.com/item?id=44131735 "I cannot compare one or multiple selected aspects of Emacs, because in my view that is a pointless mental exercise — I have the holistic comprehension of Emacs features and only can speak about the emergent properties that arise from their integration. To isolate individual features would be like asking a fish to compare water to air - I exist within this environment so completely that I cannot meaningfully separate its components from the unified experience they create."

> it would take a lot of time for me to tweak a plugin or write my own.

It may take a long time regardless of what tools you use. It all boils down to the mastery of a chosen tool. The majority of beginners focus on shiny trinket features and text editing machinery of Emacs instead of reaping the fundamental principal truth about it - Emacs is not really a mere text editor; in fact, it's a kind of Lisp machine with a text editor embedded in it. Once someone understands that, accepts Lisp with all its enormous power and some unavoidable flaws, that fundamentally changes the entire philosophy of using Emacs to accomplish things.

Now, that's all axiomatic inscribed acoustics, let's get down to less theory:

- For video playback control I use mpv.el with some customizations. Turns out mpv player has IPC and can be perfectly controlled from Emacs, I bet Neovim users do that as well. It's nice when taking notes or when I need to review a bunch of videos in a folder. I have a transient I use to play, rewind, speed up, etc., all directly from the current buffer. It's great.

- I use org-noter for annotating PDFs - it's really nice. I just can't read any technical or scholarly sources without taking notes. And these notes are never disconnected from the source - I can always see my notes next to the exact page. I never needed to find a way to actually embed the notes in a way so I can read them on my phone or tablet, but I bet these days it would be just easier to run Emacs - Android lets you and I don't own Apple products anymore.

- > I don't use anki at all anymore

Oh, that's sad, because there is plenty of research done that proves the effectiveness of spaced repetition. Starting from Ebbinghaus and Pimsleur in the beginning-mid of the prior century, to the modern empirical studies - Cepeda, Kornell, Karpicke. Meta-analyses of Dunlosky and Carpenter. There's recent neuroscientific evidence - Smolen, Zhang, Byrne, et al.

What I like about anki-editor that my flashcards are just my notes - I don't need to maintain some special format, somewhere else. These days, I even often generate flashcards using LLMs and sync them to my phone.

- For testing API endpoints I use Org-mode source blocks. For simple queries - ob-http, for data-heavy stuff I use verb.el - what I like about it is that it exposes hooks where I automatically convert json response to Clojure data structures. IMO Clojure is hands-down the best tool for quick data manipulation. I would have a src-block with `:wrap src clojure` in the header, then I can immediately start exploring the data - slicing, dicing, grouping, mapping through it, visualizing it - all without having to send new requests over and over again. I'm pretty sure I can do the same thing with ob-http by advising corresponding functions, but verb.el has public hooks that are well documented, so... Besides, using org-mode source blocks allows me to pipe that data into any other different language - e.g. Python.

... I'm having to split it (HM whines that my comment gotten too long)...

- > I've never heard of using org-babel for managing dotfiles

Oh that technique is just bananas - my entire system is in a single .org file, I'm sorry I can't share it - it contains private stuff and I just never thought about separating and encrypting it, I don't want to accidentally put something in public portion of it. So, I have source blocks with headers such as:

    #+begin_src gitconfig :tangle ~/.gitconfig :tangle-mode (identity #o444)
       ... it contains my gitconfig values
    
That's quite straightforward, innit? The readonly mode is for so I am not tempted to manually change the file, and prefer making changes in my dotfiles using (org-babel-tangle) command. Then I have another corresponding part of the same file:

    #+begin_src gitconfig :tangle (if (eq system-type 'gnu/linux) "~/.gitconfig" "no") :tangle-mode (identity #o444)
    
You can see that the first part would write to ~/.gitconfig on any system, the second part only does it on Linux, e.g. gpg program path differs.

I have some other tricks like merging only the values I care about with the entire config template, for example for my terminal. Kitty's config template is self-documented, so I'd like to preserve all that, including the values I keep commented out, but I don't want having to include the entire template in my .org file, I only want k/v pairs I modify. What I do is that I run elisp functions on org-babel-tangle-finished-hook, one of them would force Kitty to generate config template, then grab the values from my config and merge them in there. Org-mode files can contain executable elisp, so my single org-mode file is not only declarative, but when needed it also uses imperative instructions. The simplicity of this is ingenious. The only remaining bottleneck for bootstrapping any new machine - VM, EC2, Desktop - Linux and Mac for me is to get a hold of Emacs, cloning my dotfile.org and running org-babel-tangle - usually takes less than two minutes.

- Dired for file management is superb. It's better than anything I ever used before. I have all the trinkets there - icons, vim-style navigation, subtrees, etc. I don't know if you know this already, but Dired stands for "DIRectory EDitor" - you can fully edit your directory structure, recursively, using whichever tools you have in Emacs - multiple cursors and such, you can edit it as if you're editing plain text, and when you commit, it unravels this new structure onto the filesystem - that's just nuts.

- > Text under cursor - what modes is that

For intelligently recognizing patterns in plain-text I use Embark, it's very cool and it's relatively straightforward to add new types and commands recognizing it. If you never used Embark, I highly recommend it - it adds context-aware actions - so if the cursor is at a url, it knows what to do with it. It works great with Consult and Vertico. Another alternative which I have never tried is Hyperbole. I just never explored it, because Embark I guess covers it for me, but maybe there are things there I'm unaware of, it's probably best to expire both.

- For searching on HN I use consult-hn, a package of my own. It's published on MELPA. There's a demo in the readme, where I show how I read HN and Reddit and do some other interesting things, like extracting all urls from a thread.

- > I could just do this `whatever | nvim`, right?

Well, the thing is - when you do that in Eshell, the stuff stays within the Emacs session, buffers remain as part of your workspace, you can append to existing buffers and the result is immediately available for searching, macros, etc. Your command output always remains a first-class citizen in your editing environment.

- For automatic color theme change I use circadian.el. It's a relatively simple package that utilizes Emacs' built-in solar calendar.

- > I used to manage my emails in mu4e

Long ago I got annoyed by inconsistencies in mu4e and switched to notmuch. I don't use email as much anymore as I used to, but notmuch for me works better for mailing list discussions. What I like about using email in Emacs is that I can link to any email in my notes, and can jump to it directly from my notes - which I also don't use a lot, but it's nice to have. I also have some customizations, like finding a given email and opening it in gmail in the browser, or identifying a given email in a mailing list and opening it in the web interface, etc.

- > I used to track time very well in org mode

Yeah, I don't do much of that anymore, except for pomodoros. Pomodoro technique is great and it lets me focus on specific tasks and track the time spent on each, but I have never used it for serious analyses. However, I still can if I ever need to do that.

- > I am a recovering reddit addict and don't use it anymore

Those fuckers shadowbanned my account of many years for no good reason, and now all my previous comments and posts are not publicly available. I tried to send appeal requests for weeks, every single day, but they seem to be going into a void. I used to be very active there, but now I realized those imbeciles just broke the whole idea of what makes Internet, and I don't use it much anymore.

- Presentations in org mode. I don't remember when I had to do it last time, but I had great success with org-reveal. There are a bunch of different ways to create presentations in Org-mode, reveal is just one of them.

- For testing database queries I still use org-mode source blocks, it looks something like:

    #+begin_src sql :engine mysql :dbhost 127.0.0.1 :dbport 6009 :database mydb
    ...
- For managing Docker there's docker.el, you can also directly explore any given container using TRAMP-mode, you'd just navigate to /docker:container-name:/path/to/file, and that also works for k8s pods

- > Come on, opening a terminal and typing `man` isn't that big of a deal, surely!

Yeah, of course, on the surface it isn't. But you know what I often do (because I can)? I would open a man page in Emacs, using either (man) or (woman) command - typically the second one on Mac. Then, I can select a region of text, narrow my buffer to it and just start typing LLM requests, e.g., "can you explain this part, etc..." That alone makes kind of a big deal for me, not to mention that it's all within the same environment - all the keybindings still work the same, I have imenu, narrowing, etc.

- > I didn't know emacs had a mode for this, that's interesting but I can't imagine it to be quite as smooth as the webUI is...

Ha, you have no idea. First of all, because it's once again, tightly integrated, I can immediately start translating - active region, word-at-point, my killring content, etc. I speak multiple languages and it's not so atypical for me to try to translate things in the midst of typing or reading text - the speed and the efficiency Emacs allows me is beautiful.

But that's not all. Check this out. I'm learning Spanish, alright? So when I want to translate something like "The colonel was born in 1939...", what does GTranslate do? It translates it into "El coronel nació en 1939", and that totally makes sense, right? But guess what? I really needed to see it like this: "El coronel nació en mil novecientos treinta y nueve", because, well, I'm still getting acquainted with the numbers. How would one do it in literally anything else, any other plugin - for Vim, for VSCode, etc? For VSCode, you'd probably have to talk to the maintainer of an existing extension, make PRs, or even make your own. In Vim, you'd have to rewrite an entire function. What did it take me? Like 15 minutes and a few lines of Elisp. Did I have to learn the internals of GTranslate API? No. Did I have to rewrite an entire function that sends the payload there? No! Here's what I did: Using the built-in profile I've identified the function that sends the payload, and advised it. I added an advising function that just before sending the payload, checks the text, finds a pattern, then sends that portion for processing, to the number-to-words function. Guess what? I couldn't even find implementation of such a function in Elisp, and I didn't have time to write my own. I simply delegated the task to the npm package. Hacky? Sure. Stupid? Well, maybe. Yet, it does work. Maybe shit ain't so stupid if thy shit works, eh? Tell me if such simplicity is ever possible in other editors.

- > LLM integration in emacs looks very interesting

Oh, once again, you have no idea. It's just beyond amazing. Using gptel, I can send LLM commands virtually from anywhere - like I'd be typing commands in Eshell and I can just ask an LLM for the proper options for, I dunno, docker-compose, or something. Right there, in-place.

That example alone is very illustrative of what makes Emacs such an amazing tool - the best of everything - you always have access to all the tools you can imagine - I can use spellchecking, thesaurus, translation and LLM while I want to type something in a git commit message, Jira comment, Slack thread, etc.

I'd be talking to someone on the phone, and they'd ask me to spell out some cryptic thing - like a ticket number - no problem, Emacs can help me here, I'd select it, and run (nato-region), it spells it out using NATO alphabet.

I need to quickly figure out the difference between two dates - no worries, built-in calendar has a way for it.

It's just really difficult for me to imagine any scenario, a use case that is text-related and Emacs can't help with for any reason.

Not long ago I wrote a command to OCR the content of my clipboard. Because I didn't want to distract my colleague when he was showing some stuff over Zoom. I didn't want to keep interrupting him with "hey, hold on, can you send me this url?", "wait a minute, I'm taking notes here...", etc.

> I never arrived

It's quite alright, even though it is never a destination but still a journey.

I hope I was able to open your eyes to how empowering Emacs can be. But hey, I'm a die-hard vimmer, I use evil-mode, and I do use Neovim too - it's a fine tool for certain things where Emacs can feel too big and too clunky.

You should really start a youtube channel with Emacs workflows screencasts :)

I have. I just suck at it splendidly and not getting any better https://www.youtube.com/@ilemming

btw, folks, if you have time, join our discussion today at 6PM Central Time https://www.meetup.com/emacsatx

Note, Zed now has integration with Claude Code too[0], as an alternative to its own native agent (which funds Zed itself)

[0] https://github.com/jiahaoxiang2000/claude-code-zed

> Typescript

If Typescript is a big part of what you need to deal with on a daily basis, then at some point it makes sense just to use VSCode. And BTW, thats totally by design and a part of Microsoft's developer aquisition strategy.

I run emacs in docker to manage these issues https://github.com/wwarner/emacs-native-dockerfiles

The path pain sounds to me like a job for nix. If a dependency is not ready at hand, the fix should be a single code change in the project, not separate environment fixes for each dev.

In macOS, I use the GUI Emacs from https://emacsformacosx.com/

Perhaps if you solve shell issues there once, they will stick.

I'm running Homebrew's GUI Emacs which inherits from its opening shell. If I run GUI emacs from my shell then it inherits the environment of the shell so that seems to be doing okay.

I'm quite busy outside of work right now so I'll probably take a crack at this in a few weeks, but it's also dismaying how annoying it is to manage all the ts and lsp dependencies to make my projects work, let alone pointing the lsp to use the right package.json or go path or other things. I have no doubt that, in time, I can whack-a-mole the issues down. It does reduce my confidence in changing my environment because of how brittle the stack is. That's what makes me curious about the rest of the ecosystem.

Zed mostly works though I have had to configure it to use project-specific linter configs using somewhat underdocumented settings files. I'm curious if neovim is easier to get working because it's a smaller beast so easier to debug, but I also just don't know if I'd enjoy a switch to few-key modal editing from the chorded emacs style I love.