Emacs is unbelievably full of them, but at the very least if it's missing a switch you can program it yourself easily (and fix any bugs yourself too). Not sure if that's a pro or a con, but the option is there.
I consider myself a seasoned programmer, but after a decade I continue to fail to do any significant customization (other than a tidy .emacs leveraging use-package (since before it was cool^H^H integrated by default)).
Lisp's syntax is easy, but Emacs' API surface and concepts are bewildering, especially due to its aforementioned mismatch with modern terms.