Sollte ich `(shell. T)` entfernt haben, um einen Ob-Shell-Initialisierungsfehler zu beheben?

8

Erster Beitrag. Ich möchte bestätigen, ob ich eine Emacs-Installation erfolgreich behoben habe, und, falls nicht, Anweisungen dazu, wo und wie ich vorgehen soll.

Mein Setup:

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

Ich habe kürzlich Emacs zusammen mit Kierian Healys [ https://kieranhealy.org/resources/emacs-starter-kit/ weibliches ( Starter-Kit für Sozialwissenschaften) installiert . Als ich Emacs nach der Installation zum ersten Mal startete, erhielt ich einen Fehler (siehe unten), der, soweit ich das beurteilen konnte, nichts daran hinderte, zu funktionieren - obwohl man, da ich neu bei Emacs bin, nie sicher sein kann.

Nach der Installation erhielt ich beim Start die folgende Fehlermeldung:

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.

Ich habe Emacs vom Terminal in den Debug-Modus gestartet, konnte aber für mein ganzes Leben den Backtrace nicht herausfinden. Also habe ich Abschnitte meiner init.el-Datei auskommentiert, bis ich die Problemcodezeile gefunden habe:

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

Also habe ich die Datei Starter-kit.org geöffnet und mache dasselbe, was mich zum folgenden Code führt

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

Nachdem ich die Website im Organisationsmodus und einige Foren durchsucht hatte, versuchte ich Folgendes, um den Fehler zu beheben:

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

Nach meinem Verständnis ist der . tTeil des Codes ein wahrer / falscher Bezeichner. Aber ob es klug oder dumm war, es aus der Datei zu entfernen, möchte ich wissen. Oder um meine Frage klar zu formulieren:

  1. Habe ich das Problem erfolgreich behoben? Wenn nicht, warum nicht?
  2. Gibt es etwas, das ich stattdessen hätte tun sollen oder zusätzlich zum Entfernen des (shell . t)?
Luke M Perez
quelle

Antworten:

7

Haben Sie das Problem erfolgreich behoben? Sicher! ob-shellwurde ausgeflippt und du hast aufgehört, es zu laden. Das ist in gewissem Sinne eine Lösung!

Das heißt: Der Code, den Sie gefunden und auskommentiert haben, steuert, welche Sprachen von org babel geladen werden , was eine ziemlich mächtige Funktion innerhalb von org ist. Wenn Sie Interesse an der Verwendung / Auswertung von Shell-Codeblöcken haben, sollten Sie den Fehler beheben, den Sie auf andere Weise erhalten haben. Sie haben Recht - . tverbindet Wahrheit mit einem Wert. In diesem Fall gibt es an, dass org das Shell-Backend für org-Quellblöcke laden soll.

All dies sagte: Wenn Sie möchten, dass das Shell-Backend ausgeführt wird, enthält Ihr ursprünglicher Beitrag nicht genügend Informationen, um zu diagnostizieren, was daran falsch ist. Ich kann Ihnen sagen, meine Konfigurationsdatei hat nicht (shell . t), sondern (sh . t). Eine Sache, die Sie noch einmal überprüfen sollten, ist, dass Sie eine Version des Org-Modus verwenden, die größer als 8 ist und mit der Sie arbeiten können M-x org-version. Darüber hinaus habe ich zum Zeitpunkt des Schreibens sehr wenig zu empfehlen.

Damit! Möchten Sie Shell-Quellblöcke verwenden? Wenn ja: mehr Problemlösung voraus! Wenn nein: Sie haben es behoben!

Gastove
quelle
Vielen Dank, @Gastove Ich wechsle zu Emacs, damit ich akademische Arbeiten im Org-Modus mit R-Code für Statistiken schreiben kann. Also ja, ich brauche die Shell, soweit ich das beurteilen kann. Ich werde die Dokumentation zu Babel und Shell in den kommenden Tagen auf jeden Fall sorgfältig prüfen. Schnell Follow - up: Ich habe versucht , zu ersetzen (shell . t)mit (sh . t)und es löscht auch den Fehler. Sind diese beiden funktional dasselbe?
Luke M Perez
Ehrlich gesagt: Ich hätte gehofft, (shell . t)dass es funktionieren würde; Ich weiß (sh . t), dass es auch funktioniert, also habe ich es vorgeschlagen, aber ich weiß, dass der Lader ein wenig pingelig ist.
Gastove
2
Ich kann bestätigen, dass das Ersetzen (shell . t)durch (sh . t)in der Datei ~/.emacs.d/starter-kit-org.orgfunktioniert. Zumindest bei meiner FreeBSD-Installation.
henning - Monica
5

Ich bin auf das gleiche Problem gestoßen. Ich habe meinen neuen Emacs 25.3 mit einer eingebauten org-modeVersion 8.2.10 bekommen. Als ich Emacs mit meiner alten Init-Datei startete, bekam ich genau das Gleiche.

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

Ich habe die Fehlermeldung gegoogelt und diese Frage gefunden. Dann wechselte ich (shell . t)zu (sh . t). Es schien die Fehlermeldung zu beheben.

Einige Tage später, als ich versuchte, sie wirklich zu nutzen org-mode, stellte ich fest, dass der integrierten Version einige Funktionen fehlten, und aktualisierte sie auf 9.1.4. Dann bin ich auf den folgenden Fehler gestoßen, als ich wirklich etwas ausgeführt habe org-mode.

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

Dann wechselte ich (sh . t)zurück zu (shell . t)und löste das Problem.

Es schien mir , dass der Name ob-shvon geändert wurde , ob-shum ob-shellirgendwo zwischen Version 8.2.10 und 9.1.4.

Lei Zhao
quelle