org-babel: laad (alle) talen op aanvraag

Ik ben een groot voorstander van het ondersteunen van zoveel mogelijk talen. In het bijzonder zou ik geen ondersteuning voor een bepaalde taal van org-babel willen uitsluiten. (Misschien zal ik ooit Fortran op een dag moeten schrijven.) Ik weet echter dat het laden van ondersteuning voor alle beschikbare talen tegelijk pijnlijk kan zijn.

Is er een manier voor org-babel om ondersteuning voor talen te laden wanneer ik daadwerkelijk een codeblok met die taal probeer te gebruiken?

EDIT: org-babel-execute-src-block is waarschijnlijk de functie die geadviseerd moet worden.

6

1 antwoord

Dit lijkt het voor mij te doen:

#+BEGIN_SRC emacs-lisp
(defadvice org-babel-execute-src-block (around load-language nil activate)
  "Load language if needed"
  (let ((language (org-element-property :language (org-element-at-point))))
    (unless (cdr (assoc (intern language) org-babel-load-languages))
      (add-to-list 'org-babel-load-languages (cons (intern language) t))
      (org-babel-do-load-languages 'org-babel-load-languages org-babel-load-languages))
    ad-do-it))
#+END_SRC

Tenminste, het werkte voor gnuplot (nadat ik het gnuplot-pakket en het uitvoerbare bestand had geïnstalleerd).

4
toegevoegd
Dit is geweldig! Bedankt!
toegevoegd de auteur PythonNut, de bron