Org-mode 9: không thể loại bỏ các khối mã


45

Cấu hình Emacs của tôi nằm trong một .orgtệp mà từ đó tôi chặn các khối nguồn thành một .eltệp. Tôi có thể đánh giá các khối nguồn vớiC-c C-c

Hôm nay tôi đã cập nhật lên phiên bản org-mode 9 từ org elpa và hiện đang đánh giá một khối nguồn như

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

C-c C-cin thông báo sau

Đánh giá khối mã-lisp-lisp này bị vô hiệu hóa.

Trong tôi init.elđã xác định ngôn ngữ cho org-babel:

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

Nếu tôi tải phiên bản Emacs stock của chế độ org, tôi có thể bị rối C-c C-cnhư mong đợi. Tôi không thể tìm thấy bất kỳ thay đổi nào liên quan đến điều này trong thay đổi cho chế độ org 9.

Làm cách nào để đánh giá các khối mã trong chế độ org 9?


1
Bạn có vấn đề tương tự, khi bạn sử dụng org-babel-execute-src-block?
bertfred

Cài đặt lại chế độ org (xóa thư mục org từ .emacs.d/elpađầu tiên), vấn đề đó có thể đã được giải quyết: list.gnu.org/archive/html/emacs-orgmode/2016-11/msg00054.html
VanLaser

@bertfred dẫn đến hành vi tương tự như <kbd> Cc Cc </ kbd>.
rrogg

1
Tôi gặp vấn đề tương tự và phải cài đặt lại một cách khó khăn (một cái gì đó như thế này nhưng tôi không nhớ vì tôi đã thất vọng và không ghi chú: gỡ cài đặt, thoát emacs, xóa khỏi elpa, bắt đầu emacs, cài đặt từ elpa, thoát emacs , bắt đầu emacs))
amitp

Tôi rất buồn khi báo cáo rằng vấn đề này dường như đã trở lại. Sau đây là từ một cài đặt mới vào một máy trần; đánh giá các khối nguồn bị vô hiệu hóa và tôi không thấy cách kích hoạt nó. Org-babel dường như đã chết. (phiên bản emacs) "GNU Emacs 25.1.1 (x86_64-apple-darwin13.4.0, NS appkit-1265,21 Phiên bản 10.9.5 (Bản dựng 13F1911)) của năm 2016-09-17" (phiên bản org) "9.0.5"
Reb.Cabin

Câu trả lời:


42

Tôi nghĩ rằng vấn đề này là do sự thay đổi của org-babel-check-confirm-evaluatetừ một macro tới một hàm. Nếu bạn đã tải org-mode(và do đó macro cũ) được tải khi bạn biên dịch mã mới, nó sẽ thấy macro cũ thay vì hàm mới.

Như những người khác đã chỉ ra gỡ cài đặt org-modekhởi động lại Emacs (không tải org-mode) và cài đặt lại sẽ khắc phục vấn đề. Bạn cũng có thể xóa các .elctập tin đã biên dịch và biên dịch lại với byte-recompile-directory.


Tuyệt vời tôi đã có cùng một vấn đề và tôi không thể hiểu tại sao nó không hoạt động
Joafigue

1
Vâng, đây là một lời giải thích và giải pháp tốt. Nhưng tôi đã tìm thấy giải pháp bên dưới, bởi @ י יי dễ dàng hơn nhiều so với việc gỡ cài đặt / cài đặt lại chế độ org.
modulitos

38

Để giải thích về @erikstokes:

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

nơi ORGDIRNAMElà tên của thư mục lõi ogrmode. Khởi động lại emacs và bây giờ bạn có thể chạy org-babelcác khối mã.


1
Điều này làm việc cho tôi với org-9.1.13. Nó nhanh hơn cài đặt lại. Lưu ý rằng tên thư mục org sẽ có khả năng khác nhau .
ephsmith

1
Điều này làm việc cho tôi trên spacemacs
prasad

4

đối với tôi gỡ cài đặt gói org-plus-contrib và cài đặt lại nó đã giải quyết nó.


Cài đặt lại cùng một phiên bản hoặc một phiên bản mới hơn?
JeanPierre

xóa phiên bản hiện tại và cài đặt mới nhất từ ​​Melpa
zeltak 6/11/2016

3

Trên Emacs 25.2 (9.0) và sử dụng org-plus-contrib:

  • org-babel-execute-src-block cho tôi lỗi tương tự như C-c C-c
  • xóa .emacs.d/elpathư mục và cài đặt lại không khắc phục được
  • nhưng M-x package-delete [RET] org-plus-contribvà cài đặt lại với M-x package-install [RET] org-plus-contrib DID sửa nó

0

Theo mặc định, Org chỉ cho phép các khối mã emacs-lisp 'src' để thực thi.

org-babel-no-eval-on-ctrl-c-ctrl-c biến có thể được sử dụng để loại bỏ thực thi khối mã khỏi liên kết phím "Cc Cc".


-1

Tôi nghĩ bạn nên thêm mã sau vào .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)))

Tôi thường khuyên bạn chống lại thêm bất kỳ loại requiretập tin init để một người, bởi vì nó làm chậm khởi động.
Stefan

Tôi không biết điều đó cho đến bây giờ. Cảm ơn vì lời khuyên!
Takuya Ebata
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.