¿Debería haber eliminado `(shell. T)` para borrar un error de inicialización ob-shell?

8

Primer comentario. Me gustaría confirmar si solucioné los problemas con éxito una instalación de Emacs y, si no lo hice, instrucciones sobre dónde y cómo proceder.

Mi configuración:

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

Recientemente instalé Emacs junto con Kierian Healy's [ https://kieranhealy.org/resources/emacs-starter-kit/font>( kit de inicio de ciencias sociales ). Cuando lancé Emacs por primera vez después de la instalación, recibí un error (a continuación) que, por lo que pude ver, no impidió que nada funcionara, aunque dado que soy nuevo en Emacs, uno nunca puede estar seguro.

Una vez instalado, recibí el siguiente mensaje de error en el lanzamiento:

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.

Lancé Emacs desde la terminal al modo de depuración, pero no pude descifrar la traza. Así que comenté secciones de mi archivo init.el hasta que encontré la línea de código problemática:

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

Entonces abrí el archivo starter-kit.org y hago lo mismo que me lleva al siguiente código

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

Después de buscar en el sitio web del modo org y algunos foros, probé lo siguiente que borró el error:

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

Tengo entendido que la . tparte del código es un significante verdadero / falso. Pero si eliminarlo del archivo fue sabio o tonto, es lo que quiero saber. O, para expresar mi pregunta en los términos más claros:

  1. ¿Solucioné el problema con éxito? ¿Si no, porque no?
  2. ¿Hay algo que debería haber hecho, o debería hacer además de eliminar el (shell . t)?
Luke M Perez
fuente

Respuestas:

7

¿Has solucionado el problema con éxito? ¡Por supuesto! ob-shellestaba volteando y dejaste de cargarlo. Eso es, en cierto sentido, una solución!

Dicho esto: la porción de código que encontraste y comentaste controla qué idiomas carga org babel , que es una función bastante poderosa dentro de org. Si tiene algún interés en usar / evaluar bloques de código de shell, querrá corregir el error que obtuvo de una manera diferente. Tienes razón: . tasocia la verdad con un valor. En este caso, indica que la organización debe cargar el backend de shell para los bloques de origen de la organización.

Todo esto dijo: si desea que se ejecute el backend de shell, no hay suficiente información en su publicación original para diagnosticar qué le sucede. Puedo decirte que mi archivo de configuración no tiene (shell . t), sino más bien (sh . t). Una cosa que debe verificar es que está utilizando una versión del modo Org mayor que 8, con la que puede hacer M-x org-version. Más allá de eso, tengo muy poco que sugerir al momento de escribir.

¡Entonces! ¿Quieres usar bloques fuente de shell? En caso afirmativo: ¡más problemas para resolver! Si no: ¡lo arreglaste!

Estufa de gas
fuente
Gracias, @Gastove Me estoy cambiando a Emacs para poder escribir artículos académicos en modo org con código R para estadísticas: así que sí, necesitaré el shell hasta donde puedo ver. Definitivamente revisaré la documentación de babel y shell con cuidado en los próximos días. Rápido seguimiento: He intentado reemplazar (shell . t)con (sh . t)y también borra el error. ¿Son esos dos funcionalmente lo mismo?
Luke M Perez
Honestamente: hubiera esperado (shell . t)que funcionara; Sé que (sh . t)también funciona, así que lo sugerí, pero sé que el cargador es un poco complicado.
Gastove
2
Puedo confirmar que la sustitución (shell . t)de (sh . t)los archivos de ~/.emacs.d/starter-kit-org.orgobras. Al menos en mi instalación de FreeBSD.
gallina - reinstalar a Mónica el
5

Encontré el mismo problema. Obtuve mi nuevo Emacs 25.3 con una org-modeversión incorporada 8.2.10. Cuando comencé Emacs con mi antiguo archivo init, obtuve exactamente lo mismo.

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

Busqué en Google el mensaje de error y encontré esta pregunta. Entonces me cambié (shell . t)a (sh . t). Pareció resolver el mensaje de error.

Sin embargo, algunos días después, cuando intenté usarlo realmente org-mode, encontré que la versión integrada carecía de alguna característica y la actualicé a 9.1.4. Luego encontré el siguiente error al ejecutar realmente algo org-mode.

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

Luego (sh . t)volví (shell . t)y resolví el problema.

Me parecía que el nombre de ob-shfue cambiado de ob-shque ob-shellen algún lugar entre la versión 8.2.10 y 9.1.4.

Lei Zhao
fuente