Or do you mean more like changing how editor looks, how many windows/panes/tabs are displayed and where are they displayed?
Or do you mean more like changing how editor looks, how many windows/panes/tabs are displayed and where are they displayed?
Good tools change the way you work because they make certain workflows possible. If it was that easy for you to tweak your editor, you would too.
This is very different from most extensible editors, where extensions are sandboxed and have a limited, controlled API to the core editor, which is kept separate.
This makes Emacs very "malleable", and it's likely easier than with most other tool to change it in custom, specific ways. It may seem dangerous, but it comes from a culture where this extensibility is very front and center, with documented design pattern to support it (hooks, customization settings...).
Count before you post; Emacs now boasts over 300,000 lines of C.
"Encompassing Massive Amount of C Source"
Emacs 29.1, excluding the test directory; top ten languages:
all SLOC=2618374 (100.00%) LLOC=182918 in 2584 files
elisp SLOC=1188181 (45.38%) LLOC=0 in 1566 files
man SLOC=501820 (19.17%) LLOC=0 in 48 files
C SLOC=387169 (14.79%) LLOC=159681 in 317 files
Texinfo SLOC=288384 (11.01%) LLOC=0 in 182 files
Lisp SLOC=175786 (6.71%) LLOC=0 in 1 files
Objective-C SLOC=18289 (0.70%) LLOC=8480 in 8 files
Tex SLOC=16031 (0.61%) LLOC=0 in 23 files
m4 SLOC=10436 (0.40%) LLOC=0 in 133 files
shell SLOC=6819 (0.26%) LLOC=0 in 28 files
C++ SLOC=6240 (0.24%) LLOC=2924 in 5 filesThe C base supports many platforms and variants, so only a part of it is used in a running Emacs instance. And to the 1+M lines of elisp one typically had many more extension packages. That's the the "relative".
In practice, when I want to change things I don't hit the C layer. Anytime I had to introspect Emacs to change something I was firmly in the lisp world. I don't remember having been limited by something being at the C level, which are things that cannot be changed dynamically. This is really what I meant: in practice to change Emacs the C level (although big in the absolute, and definitely complex) doesn't show up much and hasn't been a limitation at least to me.