Org-mode 9: impossibile valutare i blocchi di codice


45

La mia configurazione di Emacs vive all'interno di un .orgfile da cui aggroviglio i blocchi sorgente in un .elfile. Potrei valutare i blocchi di origine conC-c C-c

Oggi ho aggiornato alla versione 9 in modalità org da org elpa e ora sto valutando un blocco sorgente come

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

con C-c C-cstampa il seguente messaggio

La valutazione di questo blocco di codice emacs-lisp è disabilitata.

Nel mio init.elho già definito le lingue per org-babel:

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

Se carico la versione originale di Emacs della modalità org, posso aggrovigliarmi C-c C-ccome previsto. Non sono riuscito a trovare modifiche al riguardo nel registro delle modifiche per la modalità organizzazione 9.

Come abilitare la valutazione dei blocchi di codice in modalità org 9?


1
Hai gli stessi problemi, quando lo usi org-babel-execute-src-block?
— Bertfred

Reinstallare org-mode (cancellare org cartella dal .emacs.d/elpaprimo), tale questione potrebbe essere stato già risolto: lists.gnu.org/archive/html/emacs-orgmode/2016-11/msg00054.html
— VanLaser

@bertfred ha lo stesso comportamento di <kbd> Cc Cc </kbd>.
— visita il

1
Ho avuto lo stesso problema e ho dovuto reinstallarlo (qualcosa del genere ma non ricordo perché ero frustrato e non prendevo appunti: disinstalla, esci da emacs, elimina da elpa, avvia emacs, installa da elpa, esce da emacs , avvia emacs))
— tra l'

Sono molto triste nel riferire che questo problema sembra essere tornato. Quanto segue proviene da una nuova installazione in una macchina nuda; la valutazione dei blocchi di origine è disabilitata e non vedo come abilitarlo. Org-babel sembra essere morta. (versione emacs) "GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 versione 10.9.5 (build 13F1911)) del 2016-09-17" (versione org) "9.0.5"
— Reb.Cabin

Risposte:


42

Penso che questo problema è causato dal cambiamento di org-babel-check-confirm-evaluateda una macro a una funzione. Se hai org-modecaricato (e quindi la vecchia macro) quando compili il nuovo codice, vedrà la vecchia macro invece della nuova funzione.

Come altri hanno sottolineato, la disinstallazione org-moderiavvia Emacs (senza caricare org-mode) e la reinstallazione risolverà il problema. È inoltre possibile eliminare i .elcfile compilati e ricompilare con byte-recompile-directory.


Fantastico ho avuto lo stesso identico problema e non riuscivo a capire perché non funzionasse
— Joafigue

1
Sì, questa è una buona spiegazione e soluzione. Ma ho trovato la soluzione qui sotto, da @ בנימן הגלילי molto più semplice della disinstallazione / reinstallazione della modalità org.
— Modulitos,

38

Per elaborare su @erikstokes:

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

dove ORGDIRNAMEè il nome della directory principale ogrmode. Riavvia emacs e ora puoi eseguire org-babelblocchi di codice.


1
Questo ha funzionato per me con org-9.1.13. È più veloce della reinstallazione. Si noti che il nome della directory dell'organizzazione sarà probabilmente diverso .
— efsmith,

1
Questo ha funzionato per me sui veicoli spaziali
— prasad il

4

per me disinstallare il pacchetto org-plus-contrib e reinstallarlo risolto.


Reinstallare la stessa versione o una successiva?
— JeanPierre,

rimuovi la versione corrente e installa l'ultima versione di Melpa
— zeltak il

3

Su Emacs 25.2 (9.0) e usando org-plus-contrib:

  • org-babel-execute-src-block mi ha dato lo stesso errore di C-c C-c
  • l'eliminazione della .emacs.d/elpacartella e la reinstallazione non l'hanno riparata
  • ma M-x package-delete [RET] org-plus-contribe reinstallandolo con M-x package-install [RET] org-plus-contrib DID risolvilo

0

Per impostazione predefinita, Org abilita solo i blocchi di codice 'src' di emacs-lisp per l'esecuzione.

org-babel-no-eval-on-ctrl-c-ctrl-c La variabile può essere utilizzata per rimuovere l'esecuzione del blocco di codice dal collegamento "Cc Cc".


-1

Penso che dovresti aggiungere il seguente codice nel tuo .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)))

In genere consiglierei di non aggiungere alcun tipo di requirefile init, perché rallenta l'avvio.
— Stefan,

Fino ad ora non lo sapevo. Grazie per il consiglio!
— Takuya Ebata,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.