Nick Dokos <ndo...@gmail.com> writes: > I would also recommend that the library *not* call its enable function > in general and leave it to the user to do so explicitly, but that may > be more controversial for "backward compatibility" reasons (with which > I disagree in these particular cases: I view them as bugs that need to > be fixed).
I think that we all agree on this point. The main question is where to draw a line between intrusive and non-intrusive side effects. For example, before loading ob-emacs-lisp #+begin_src elisp (+ 1 1) #+end_src will not be syntax-highlighted, while after loading it will. Is it intrusive? Somewhat. But maybe not bad enough to justify enable function. Similarly, loading ob-lilypond will alter how file containing lilypond fragments is tangled. Or loading ox-foo.el may alter export menu. We have plenty of examples with varying degrees of side effects in Org. And it is not fully clear to me which side effects are worth eliminating and which are not. Yet another option could be forcing certain side effects even without loading. For example, (add-to-list 'org-babel-tangle-lang-exts '("LilyPond" . "ly")) that sets up tangling of lilypond fragments can be changed to ;;;#autoload (add-to-list 'org-babel-tangle-lang-exts '("LilyPond" . "ly")) That way, we will consistently get the same tangle configuration even before ob-lilypond is loaded. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>