Org-Modus 9: Codeblöcke können nicht ausgewertet werden

45

Meine Emacs-Konfiguration befindet sich in einer .orgDatei, aus der ich Quellblöcke in eine .elDatei verwirre . Ich könnte Quellblöcke mit auswertenC-c C-c

Heute habe ich von org elpa auf org-mode Version 9 aktualisiert und jetzt einen Quellblock wie ausgewertet

#+BEGIN_SRC emacs-lisp :tangle yes
(setq org-export-coding-system 'utf-8)
#+END_SRC

mit C-c C-cdruckt die folgende Meldung

Die Auswertung dieses emacs-lisp Code-Blocks ist deaktiviert.

In meinem habe init.elich bereits die Sprachen für org-babel definiert:

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

Wenn ich die serienmäßige Emacs-Version des org-Modus lade, kann ich mich C-c C-cwie erwartet verwickeln . Ich konnte diesbezüglich keine Änderungen im Changelog für org-mode 9 finden.

Wie aktiviere ich die Auswertung von Codeblöcken im org-mode 9?

Rogg
quelle
1
Haben Sie die gleichen Probleme, wenn Sie verwenden org-babel-execute-src-block?
Bertfred
Installieren Sie den org-mode neu (löschen Sie den org-Ordner .emacs.d/elpazuerst), dieses Problem wurde möglicherweise bereits behoben: lists.gnu.org/archive/html/emacs-orgmode/2016-11/msg00054.html
VanLaser
@bertfred führt zu demselben Verhalten wie <kbd> Cc Cc </ kbd>.
Rogg
1
Ich hatte das gleiche Problem und musste es erneut installieren (etwas in der Art, aber ich erinnere mich nicht, dass ich frustriert war und keine Notizen gemacht habe: deinstallieren, Emacs beenden, von Elpa löschen, Emacs starten, von Elpa installieren, Emacs beenden ,
starte
Ich bin sehr traurig zu berichten, dass dieses Problem zurückgekehrt zu sein scheint. Das Folgende stammt aus einer Neuinstallation in einer leeren Maschine. Die Auswertung von Quellblöcken ist deaktiviert und ich verstehe nicht, wie ich sie aktivieren soll. Org-Babel scheint tot zu sein. (emacs-version) GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS-Appkit-1265.21 Version 10.9.5 (Build 13F1911)) vom 17.09.2016 (org-version) 9.0.5
Reb.Cabin

Antworten:

42

Ich denke , dieses Problem durch die verursacht wird Änderung der org-babel-check-confirm-evaluatevon einem Makro zu einer Funktion. Wenn Sie org-mode(und damit das alte Makro) beim Kompilieren des neuen Codes geladen haben, wird das alte Makro anstelle der neuen Funktion angezeigt.

Wie bereits erwähnt, kann das Problem durch Deinstallieren, org-modeNeustarten von Emacs (ohne Laden org-mode) und erneutes Installieren behoben werden. Sie können die kompilierten .elcDateien auch löschen und mit neu kompilieren byte-recompile-directory.

erikstokes
quelle
Genial, ich hatte genau das gleiche Problem und konnte nicht verstehen, warum es nicht funktionierte
Joafigue
1
Ja, das ist eine gute Erklärung und Lösung. Aber ich fand die Lösung unten, von @ בנימן הגלילי viel einfacher als das Deinstallieren / Neuinstallieren des org-Modus.
Modulitos
38

Um auf @erikstokes näher einzugehen:

rm ~/.emacs.d/elpa/ORGDIRNAME/*.elc

wo ORGDIRNAMEist der Name des Core-Ogrmode-Verzeichnisses. Starten Sie emacs neu und Sie können jetzt org-babelCodeblöcke ausführen.

בנימן הגלילי
quelle
1
Das hat bei mir mit org-9.1.13 geklappt. Es ist schneller als eine Neuinstallation. Beachten Sie, dass sich der Name des Organisationsverzeichnisses wahrscheinlich unterscheiden wird .
Ephsmith
1
Dies funktionierte für mich auf Spacemacs
Prasad
4

für mich löste die Deinstallation des org-plus-contrib-Pakets und die Neuinstallation es.

zeltak
quelle
Dieselbe oder eine neuere Version installieren?
JeanPierre
Entfernen Sie die aktuelle Version und installieren Sie die neueste Version von Melpa
zeltak
3

Auf Emacs 25.2 (9.0) und mit org-plus-contrib:

  • org-babel-execute-src-block gab mir den gleichen fehler wie C-c C-c
  • Das Löschen des .emacs.d/elpaOrdners und die Neuinstallation haben das Problem nicht behoben
  • aber M-x package-delete [RET] org-plus-contribund Neuinstallation mit M-x package-install [RET] org-plus-contrib DID beheben
Gehhilfe
quelle
0

Standardmäßig aktiviert Org nur emacs-lisp 'src' Codeblöcke zur Ausführung.

org-babel-no-eval-on-ctrl-c-ctrl-c Die Variable kann verwendet werden, um die Codeblockausführung von der Tastenkombination "Cc Cc" zu entfernen.

Arun Kumar Khattri
quelle
-1

Ich denke, Sie sollten folgenden Code in Ihre hinzufügen .emacs.d/init.el.

;; ditaa
(require 'ob-ditaa)
(setq org-confirm-babel-evaluate nil)
(setq org-ditaa-jar-path
  "/path/to/ditaa-0_10.jar")
(org-babel-do-load-languages
  'org-babel-load-languages
  '((ditaa . t)
    (dot . t)))
Takuya Ebata
quelle
Ich würde empfehlen generell gegen das Hinzufügen jede Art von requireeinem der init - Datei, weil es nach unten Start verlangsamt.
Stefan
Das wusste ich bis jetzt nicht. Danke für den Hinweis!
Takuya Ebata