Como corrigir "A definição da função do símbolo é nula: org-babel-get-header"

7

Como você se incomoda em filmar isso? (tentando executar um bloco sh assíncrono)

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

Então eu faço

C-c C-c

eu recebo

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

Minha configuração

prelude 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)                                                                                                    
   ))  
guerreiro-ninja-americano
fonte
Existem (hoje) 34 perguntas correspondentes a function definition is void: emacs.stackexchange.com/… O erro sempre significa a mesma coisa, no sentido imediato, embora o remédio adequado possa ser diferente em diferentes casos (por exemplo, tentar usar uma variável como uma função, pacote ainda não carregado, versão errada do Emacs). A causa mais comum não é carregar primeiro a biblioteca necessária. Seria ótimo se alguém consolidasse cuidadosamente a maioria ou todas essas perguntas em uma nova pergunta genérica da comunidade com uma boa resposta.
Drew

Respostas:

12

De acordo com https://lists.gnu.org/archive/html/emacs-orgmode/2015-11/msg00425.html ob-sh foi renomeado ob-shellna organização 8.2 ... e cito a partir daí:

O org-babel-get-header foi removido em 0d000f5 (babel: pequena alteração na API., 29/10/2015), mas o antigo ob-sh.el ainda está tentando chamá-lo.

Isso significa que você deve substituir (sh . t)por (shell . t)na sua chamada de org-babel-do-load-languages. E não se esqueça de reiniciar o emacs depois! ;-)

EDIT: Você não precisa alterar o idioma de origem dos blocos de código-fonte de shpara shell. É importante apenas ligar org-babel-shell-initialize.

Os idiomas do código-fonte suportados por ob-shellsão definidos na opção org-babel-shell-names(que pode ser personalizada).

O valor padrão de org-babel-shell-namesé:

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

A partir desses nomes, as org-babel-execute:...funções são geradas por org-babel-shell-initialize.

Tobias
fonte
que sobre o cabeçalho do bloco de código, uso sh ou shell
american-ninja guerreiro
Você pode usar qualquer um, mas há uma ligeira diferença entre eles. Veja emacs.stackexchange.com/questions/35321/…
erikstokes