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?


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.


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.


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.


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

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.


-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)))

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.