Cómo arreglar "La definición de la función del símbolo es nula: org-babel-get-header"

7

¿Cómo te cuesta disparar esto? (tratando de ejecutar un bloque sh asíncrono)

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

Entonces lo hago

C-c C-c

yo obtengo

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

Mi configuración

preludio emacs25 org instalado

;; 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)                                                                                                    
   ))  
guerrero ninja americano
fuente
Hay (hoy) 34 preguntas que coinciden con function definition is void: emacs.stackexchange.com/… El error siempre significa lo mismo, en el sentido inmediato, aunque el remedio adecuado puede ser diferente en diferentes casos (por ejemplo, tratar de usar una variable como una función, paquete aún no cargado, versión incorrecta de Emacs). La causa más común no es cargar primero la biblioteca necesaria. Sería genial si alguien consolidara cuidadosamente la mayoría o todas esas preguntas en una nueva pregunta genérica de la comunidad con una buena respuesta.
Dibujó el

Respuestas:

12

De acuerdo con https://lists.gnu.org/archive/html/emacs-orgmode/2015-11/msg00425.html ob-sh fue renombrado ob-shellen org 8.2 ... y cito a partir de ahí:

org-babel-get-header se eliminó en 0d000f5 (babel: pequeño cambio en API., 2015-10-29), pero el antiguo ob-sh.el todavía está intentando llamarlo.

Eso significa que debe sustituir (sh . t)por (shell . t)en su llamada de org-babel-do-load-languages. ¡Y no olvide reiniciar emacs después! ;-)

EDITAR: No es necesario cambiar el idioma de origen de los bloques de código fuente de sha shell. Solo es importante llamar org-babel-shell-initialize.

Los idiomas de código fuente que son compatibles ob-shellestán definidos en la opción org-babel-shell-names(que se puede personalizar).

El valor predeterminado de org-babel-shell-nameses:

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

A partir de estos nombres, las org-babel-execute:...funciones son generadas por org-babel-shell-initialize.

Tobias
fuente
¿qué pasa con el encabezado del bloque de código, use sh o shell?
american-ninja-warrior
Puede usar cualquiera de los dos, pero hay una ligera diferencia entre ellos. Ver emacs.stackexchange.com/questions/35321/…
erikstokes