Devo ter removido o `(shell. T)` para limpar um erro de inicialização do ob-shell?

8

Primeiro post. Gostaria de confirmar se solucionei com êxito uma instalação do Emacs e, se não o fiz, instruções sobre onde e como proceder.

Minha configuração:

  • Emacs 24.5
  • Macbook Pro Core Duo (meados de 2010)
  • OSX El Cap (10.11.4)

Recentemente instalei o Emacs junto com o Kierian Healy ( https://kieranhealy.org/resources/emacs-starter-kit/ ♡ ( kit de iniciação em ciências sociais ). Quando iniciei o Emacs pela primeira vez após a instalação, recebi um erro (abaixo) que, até onde eu sabia, não impedia que nada funcionasse - embora, como eu seja novo no Emacs, nunca se pode ter certeza.

Depois de instalado, recebi a seguinte mensagem de erro no lançamento:

Warning (initialization): An error occurred while loading     
`/Users/lmp/.emacs.d/init.el':

File error: Cannot open load file, no such file or directory, ob-shell

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

Lancei o Emacs do terminal no modo de depuração, mas não consegui descobrir o caminho de volta. Então, comentei as seções do meu arquivo init.el até encontrar a linha do código com problema:

(org-babel-load-file (expand-file-name "starter-kit.org" dotfiles-dir)) 

Então eu abri o arquivo starter-kit.org e fiz o mesmo, o que me levou ao código a seguir

(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(shell . t)))

Depois de pesquisar no site do org-mode e em alguns fóruns, tentei o seguinte que limpava o erro:

(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)))

Entendo que a . tparte do código é um significante verdadeiro / falso. Mas se a remoção do arquivo foi sábia ou tola, é o que eu quero saber. Ou, para declarar minha pergunta nos termos mais claros:

  1. Corrigi o problema com sucesso? Se não, por que não?
  2. Existe algo que eu deveria ter feito ou deveria fazer além de remover o (shell . t)?
Luke M Perez
fonte

Respostas:

7

Você resolveu o problema com sucesso? Certo! ob-shellestava invertendo e você parou de carregá-lo. Isso é, de certa forma, uma correção!

Dito isto: o pedaço de código que você encontrou e comentou controla quais idiomas são carregados pelo org babel , que é uma função bastante poderosa dentro do org. Se você tiver algum interesse em usar / avaliar blocos de código de shell, corrija o erro de uma maneira diferente. Você está certo - . tassocia a verdade a um valor. Nesse caso, indica que a organização deve carregar o back-end do shell para os blocos de origem da organização.

Tudo isso dito: se você deseja que o back-end do shell seja executado, não há informações suficientes na sua postagem original para diagnosticar o que há de errado com ele. Posso dizer que meu arquivo de configuração não possui (shell . t), mas sim (sh . t). Uma coisa a verificar duas vezes é que você está usando uma versão do Org Mode maior que 8, com a qual você pode fazer M-x org-version. Além disso, tenho muito pouco a sugerir no momento da redação.

Assim! Deseja usar blocos de origem de shell? Se sim: mais problemas a resolver! Se não: você consertou!

Gastove
fonte
Obrigado, @Gastove Estou mudando para o Emacs para poder escrever trabalhos acadêmicos no modo organizacional com código R para estatísticas: então sim, vou precisar do shell até onde sei. Definitivamente revisarei a documentação do babel e do shell com cuidado nos próximos dias. Acompanhamento rápido: tentei substituir (shell . t)por (sh . t)e também limpa o erro. Esses dois funcionalmente são a mesma coisa?
Luke M Perez
Honestamente: eu esperava (shell . t)que funcionasse; Sei que (sh . t)também funciona, então sugeri, mas sei que o carregador é um pouco meticuloso.
precisa saber é o seguinte
2
Posso confirmar que a substituição (shell . t)por (sh . t)no arquivo ~/.emacs.d/starter-kit-org.orgfunciona. Pelo menos na minha instalação do FreeBSD.
henning - restabelece Monica
5

Eu encontrei o mesmo problema. Eu recebi o meu novo Emacs 25.3 com um built-in org-modeda versão 8.2.10. Quando iniciei o Emacs com meu antigo arquivo init, obtive exatamente a mesma coisa.

File error: Cannot open load file, no such file or directory, ob-shell

Pesquisei a mensagem de erro no Google e encontrei esta pergunta. Então eu mudei (shell . t)para (sh . t). Pareceu resolver a mensagem de erro.

No entanto, alguns dias depois, quando tentei realmente usá-lo org-mode, encontrei a versão interna sem algum recurso e a atualizei para a 9.1.4. Em seguida, encontrei o seguinte erro ao realmente executar algo no org-mode.

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

Depois mudei de (sh . t)volta para (shell . t)e resolvi o problema.

Pareceu-me que o nome de ob-shfoi alterado de ob-shpara ob-shellalgum lugar entre a versão 8.2.10 e 9.1.4.

Lei Zhao
fonte