Tryb organizacji 9: nie można ewaluować bloków kodu


45

Moja konfiguracja Emacsa mieszka w .orgpliku, z którego splatam bloki źródłowe do .elpliku. Mógłbym ocenić bloki źródłowe za pomocąC-c C-c

Dzisiaj zaktualizowałem wersję org-mode w wersji 9 z org elpa i teraz oceniam blok źródłowy jak

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

z C-c C-cdrukuje następujący komunikat

Ocena tego blokowania kodu emacs-lisp jest wyłączona.

W moim init.elzdefiniowałem już języki dla org-babel:

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

Jeśli załaduję standardową wersję trybu org Emacsa, mogę plątać się C-c C-czgodnie z oczekiwaniami. Nie mogłem znaleźć żadnych zmian w tym dzienniku zmian dla org-mode 9.

Jak włączyć ocenę bloków kodu w org-mode 9?


1
Czy masz te same problemy, kiedy używasz org-babel-execute-src-block?
bertfred

Ponownie zainstaluj tryb organizacji ( .emacs.d/elpanajpierw usuń folder organizacji ), ten problem mógł już zostać rozwiązany: lists.gnu.org/archive/html/emacs-orgmode/2016-11/msg00054.html
VanLaser

@bertfred daje takie same zachowanie jak <kbd> Cc Cc </kbd>.
rrogg

1
Miałem ten sam problem i musiałem przeprowadzić ponowną instalację (coś takiego, ale nie pamiętam, ponieważ byłem sfrustrowany i nie robiłem notatek: odinstaluj, zamknij emacsa, usuń z elpa, uruchom emacsa, zainstaluj z elpa, zamknij emacsa , start emacs))
amitp 11.11.16

Z przykrością informuję, że problem ten powrócił. Poniżej przedstawiono świeżą instalację na gołej maszynie; ocena bloków źródłowych jest wyłączona i nie widzę, jak ją włączyć. Org-babel wydaje się martwy. (wersja emacs) „GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265.21 Wersja 10.9.5 (kompilacja 13F1911)) z dnia 17.09.2016” (wersja org) „9.0.5”
Reb.Cabin

Odpowiedzi:


42

Myślę, że ten problem jest spowodowany przez zmiany w org-babel-check-confirm-evaluateod makro do funkcji. Jeśli org-modezaładowałeś (a więc i stare makro) podczas kompilowania nowego kodu, zobaczy on stare makro zamiast nowej funkcji.

Jak zauważyli inni odinstalowanie, org-modeponowne uruchomienie Emacsa (bez ładowania org-mode), a ponowna instalacja naprawi problem. Możesz także usunąć skompilowane .elcpliki i ponownie skompilować byte-recompile-directory.


Niesamowite, miałem dokładnie ten sam problem i nie mogłem zrozumieć, dlaczego to nie działa
Joafigue

1
Tak, to dobre wyjaśnienie i rozwiązanie. Ale znalazłem rozwiązanie poniżej, autorstwa @ מןימן הגלילי, znacznie łatwiejsze niż odinstalowanie / ponowne zainstalowanie trybu org.
modulitos

38

Aby rozwinąć na @erikstokes:

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

gdzie ORGDIRNAMEjest nazwą podstawowego katalogu ogrmode. Uruchom ponownie emacsa i możesz teraz uruchamiać org-babelbloki kodu.


1
Działa to dla mnie z org-9.1.13. Jest szybszy niż ponowna instalacja. Pamiętaj, że nazwa katalogu organizacji prawdopodobnie będzie się różnić .
efmith

1
To działało dla mnie na kosmicznych
prasad

4

dla mnie odinstalowanie pakietu org-plus-contrib i ponowna instalacja go rozwiązały.


Ponowna instalacja tej samej lub nowszej wersji?
JeanPierre,

usuń aktualną wersję i zainstaluj najnowszą wersję z Melpa
zeltak

3

W Emacsie 25.2 (9.0) i przy użyciu org-plus-contrib:

  • org-babel-execute-src-block dał mi ten sam błąd co C-c C-c
  • usunięcie .emacs.d/elpafolderu i ponowna instalacja nie naprawiły go
  • ale M-x package-delete [RET] org-plus-contribi ponowna instalacja za pomocą M-x package-install [RET] org-plus-contrib DID to naprawić

0

Domyślnie Org włącza tylko bloki kodu emacs-lisp 'src' do wykonania.

org-babel-no-eval-on-ctrl-c-ctrl-c Zmienna może być użyta do usunięcia wykonania bloku kodu ze skrótu klawiszowego „Cc Cc”.


-1

Myślę, że powinieneś dodać następujący kod w swoim .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)))

Chciałbym ogólnie zalecane przed dodaniem jakiegokolwiek rodzaju requiredo własnego pliku init, ponieważ spowalnia starcie.
Stefan

Do tej pory nie wiedziałem o tym. Dzięki za radę!
Takuya Ebata
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.