моя версія emacs - це 24.3.1.
я розумію, що я повинен поставити ob-C.el (доступний тут ) в шлях, де Emacs може його прочитати.
Я спершу скопіював код із цього .el-файлу у мій .emacs-файл та перезапустив emacs. потім я перейшов до блоку коду С (у файлі org) і спробував виконати його (використовуючи Cc Cc). minibuffer сказав: "немає org-babel-виконувати функцію для C". та сама історія розігрувалася зі спробою виконання блоку коду C ++. зауважте, що R та python відмінно оцінюються з моїх файлів org. проблеми, здається, є лише з цими складеними мовами.
Потім я спробував поставити цей об-C.el всередині каталогу ~ / .emacs.d, щоб побачити, чи це допомагало питанням. перезапустили emacs і перевірили. це не спрацювало.
то я спробував ввести його в каталог ~ / .emacs.d / lisp і додав наступні рядки до мого .emacs-файлу
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
після перезапуску emacs, оцінка коду C або C ++ з файлу org все ще не працює. я продовжую отримувати ту саму помилку: "немає org-babel-виконувати функцію для C" або "немає org-babel-виконувати функцію для C ++".
Оновлення
я оновив свою версію emacs до 24.5, видалив усі попередні підкаталоги elpa та melpa в моєму каталозі ~ / .emacs.d. підозрюючи, що це стосується порядку, в якому я розмістив своє
(custom-set-variables
'(org-babel-load-languages
(quote
((emacs-lisp . t)
(C . t)
(css . t)
(sh . t)
(awk . t)
(R . t))))
і
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
кодові блоки, я ставлю навантаження "ob-C.el" перед мовою org-babel-load-languages. Потім я виконував блок коду c ++ кілька разів. не вдалося.
потім я видалив усе (очистив блок користувальницьких змінних у файлі .emacs) і тепер мій файл .emacs виглядає як
;; 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)))
Його все ще не працює.
Код, який я намагаюся оцінити в буфері оргамоди:
#+BEGIN_SRC c
printf("Hello world");
#+END_SRC
Буфер " Мої повідомлення" виглядає так після перезапуску emacs та спроби виконання вищевказаного блоку коду:
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
іrequire
шматочки.require
виконує завантаження (якщо у файлі єprovide
заява, яка в цьому випадку є), але вам також це не потрібно,require
тому що цим керуєorg-babel-do-load-languages
, вам потрібно переконатися, що потрібно,org
перш ніж щось із цього трапиться. Крім того, я думаю, що цеC
не такc
, ви пробували це?