Hacker News new | ask | show | jobs
by iLemming 343 days ago
What a strawman argument. Your'e cherry-picking one specific thing while ignoring Emacs' extraordinary customization capabilities. What about advice system, hooks, dynamic binding, self-documenting, etc.?

In Neovim you can't redefine fundamental commands (like how self-insert-command works) or modify core behaviors with great granularity — in Elisp you can redefine one given aspect of a function without reimplementing the entire function. Or what about live introspection and modification of the running editor?

Yes, the echo area has limitations due to its C implementation, but using this edge case to claim "Emacs UI is the hardest to customize" ignores that Emacs lets you rewrite practically everything else - including replacing entire subsystems like completion, windowing, or even turning it into a completely different application.

1 comments

I think you misunderstand me. I’ve been using Emacs for years myself, and greatly prefer it over Neovim precisely because everything else is customizable (and because of Org-mode).

I’m picking that point because the parent poster is asking what OP wanted to customize in Emacs and couldn’t. Well, I wanted to customize the echo area, because I find it noisy and distracting, and couldn’t. There are lots of other minor UI annoyances like this – like how the TUI version has a black square in the bottom-right corner that you can only get rid of by changing your terminal background color or editing C code. Or how you can’t, AFAIK, disable line truncation markers if you disable the fringe (the best you can do is to put whitespace characters in the corresponding display char table, but that still takes up one char width at the edge).

Some UI things that are customizable are also needlessly hard to change. For example, I really dislike when major modes or themes decide to change font sizes in section headings or add styling like italics. Hunting down and disabling such settings in each package individually is tiring, and my workaround of looping over every face and disabling those font properties – and affixing load-theme to do this automatically after changes – feels overly complex for such a simple problem. In Sublime Text, for another example, there’s a global font setting to just disable italics completely (or any other font attribute you dislike), and many terminals have simple toggles for this as well. Look also at the workarounds Rougier had to do to manage some of his feats, compared to say what one could easily do by customizing the UI of Atom/Pulsar.

Emacs is overall great, but the UI customization is the least flexible part of it, IMHO.