> 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.