phiên bản emacs của tôi là 24.3.1.
tôi hiểu rằng tôi phải đặt ob-C.el (có sẵn từ đây ) vào một con đường nơi Emacs có thể đọc nó.
Lần đầu tiên tôi sao chép mã từ tệp .el đó sang tệp .emacs của tôi và khởi động lại emacs. sau đó tôi đã đi đến một khối mã C (trong một tệp org) và cố gắng thực hiện nó (sử dụng Cc Cc). xe buýt nhỏ nói 'không có chức năng thực thi org-babel cho C'. câu chuyện tương tự diễn ra với việc cố gắng thực thi khối mã C ++. lưu ý rằng R và python đánh giá hoàn hảo từ trong các tệp org của tôi. các vấn đề dường như chỉ có với các ngôn ngữ được biên dịch này.
sau đó tôi đã thử đặt ob-C.el này vào thư mục ~ / .emacs.d để xem điều đó có giúp ích gì không. khởi động lại emacs và kiểm tra. nó không hoạt động.
sau đó tôi đã thử đặt nó vào một thư mục ~ / .emacs.d / lisp và thêm các dòng sau vào tập tin .emacs của tôi
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
sau khi khởi động lại emacs, việc đánh giá các khối mã C hoặc C ++ từ trong tệp org vẫn không hoạt động. tôi tiếp tục nhận được cùng một lỗi "không có chức năng thực thi org-babel cho C" hoặc "không có chức năng thực thi org-babel cho C ++".
Cập nhật
tôi đã nâng cấp phiên bản emacs của mình lên 24.5, xóa tất cả các thư mục con elpa và melpa trước đó trong thư mục ~ / .emacs.d của tôi. nghi ngờ rằng nó phải làm theo thứ tự mà tôi đã đặt
(custom-set-variables
'(org-babel-load-languages
(quote
((emacs-lisp . t)
(C . t)
(css . t)
(sh . t)
(awk . t)
(R . t))))
và
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
khối mã, tôi đặt tải "ob-C.el" trước điều org-babel-load-ngôn ngữ. sau đó tôi đã thực thi khối mã c ++ nhiều lần. không may mắn.
sau đó tôi xóa tất cả mọi thứ (xóa sạch khối biến tùy chỉnh-tập tin trong tệp .emacs) và bây giờ tệp .emacs của tôi trông như thế
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
;; load the languages that are needed
(org-babel-do-load-languages
'org-babel-load-languages '((C . t)))
Nó vẫn không hoạt động.
Mã mà tôi đang cố gắng đánh giá trong bộ đệm orgmode là:
#+BEGIN_SRC c
printf("Hello world");
#+END_SRC
Bộ đệm Tin nhắn của tôi trông như thế này sau khi khởi động lại emacs và cố gắng thực thi khối mã trên:
Loading /home/taeten/.emacs.d/lisp/ob-C.el (source)...done
Wrote /home/taeten/.emacs.d/.emacs.desktop.lock
Desktop: 1 frame, 0 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a.
Quit [2 times]
Making completion list... [3 times]
org-babel-execute-src-block: No org-babel-execute function for c! [5
times]
Ignoring unknown mode `elisp-mode'
File local-variables error: (void-function elisp-mode)
byte-code: Beginning of buffer [6 times]
byte-code: Beginning of buffer
load
vàrequire
bit.require
không tải (trong trường hợp tệp cóprovide
câu lệnh, trong trường hợp này là như vậy), nhưng bạn cũng không cầnrequire
vì điều này được xử lý bởiorg-babel-do-load-languages
, bạn cần đảm bảo yêu cầuorg
trước khi bất kỳ điều đó xảy ra. Ngoài ra, tôi nghĩ làC
khôngc
, bạn đã thử chưa?