So beheben Sie "Die Funktionsdefinition des Symbols ist ungültig: org-babel-get-header"

7

Wie können Sie das Problem lösen? (versucht einen asynchronen sh-Block auszuführen)

#+BEGIN_SRC sh                                                                                                   
/tmp/7.sh                                                                                                        
#+END_SRC

Dann mach ich

C-c C-c

Ich bekomme

Symbol's function definition is void: org-babel-get-header

Mein Setup

Vorspiel emacs25 org installiert

;; my ~/prelude/personal/personal.el
(prelude-require-package 'ob-async)                                                                              
(require 'ob-async)   
(setq org-confirm-babel-evaluate nil)                                                                            

(org-babel-do-load-languages                                                                                     
 'org-babel-load-languages                                                                                       
 '(                                                                                                              
   (sh . t)                                                                                                      
   (ruby . t)                                                                                                    
   ))  
American-Ninja-Krieger
quelle
Es gibt (heute) 34 Fragen mit einer Übereinstimmung für function definition is void: emacs.stackexchange.com/… Der Fehler bedeutet im unmittelbaren Sinne immer dasselbe, obwohl das richtige Mittel in verschiedenen Fällen unterschiedlich sein kann (z. B. der Versuch, eine Variable als zu verwenden eine Funktion, Paket noch nicht geladen, falsche Emacs-Version). Die häufigste Ursache ist nicht, zuerst die benötigte Bibliothek zu laden. Es wäre großartig, wenn jemand die meisten oder alle dieser Fragen sorgfältig zu einer neuen, allgemeinen Community-Frage mit einer guten Antwort zusammenfassen würde.
Drew

Antworten:

12

Laut https://lists.gnu.org/archive/html/emacs-orgmode/2015-11/msg00425.html ob-sh wurde ob-shellin org 8.2 umbenannt ... und ich zitiere von dort:

org-babel-get-header wurde in 0d000f5 entfernt (babel: kleine Änderung in API., 29.10.2015), aber die alte ob-sh.el versucht immer noch, sie aufzurufen.

Das heißt , sollten Sie ersetzen (sh . t)durch (shell . t)in Ihrem Ruf org-babel-do-load-languages. Und vergessen Sie nicht, Emacs danach neu zu starten! ;-);

EDIT: Sie brauchen nicht die Ausgangssprache des Quellcodes Blöcke ändern aus shzu shell. Es ist nur wichtig anzurufen org-babel-shell-initialize.

Die von unterstützten Quellcode-Sprachen werden ob-shellin der Option definiert org-babel-shell-names(die angepasst werden kann).

Der Standardwert von org-babel-shell-namesist:

'("sh" "bash" "csh" "ash" "dash" "ksh" "mksh" "posh")

Aus diesen Namen werden org-babel-execute:...Funktionen von generiert org-babel-shell-initialize.

Tobias
quelle
Was ist mit dem Code Block Header, verwenden Sie sh oder Shell
American-Ninja-Warrior
Sie können beide verwenden, aber es gibt einen kleinen Unterschied zwischen ihnen. Siehe emacs.stackexchange.com/questions/35321/…
erikstokes