「cのorg-babel-execute関数なし」および「c ++のno-org-babel-execute関数」


14

私のemacsバージョンは24.3.1です。

Emacsが読み取れるパスにob-C.el(ここから入手可能)を配置する必要があることを理解しています。

最初にその.elファイルから.emacsファイルにコードをコピーアンドペーストし、emacsを再起動しました。次に、(組織ファイル内の)Cコードブロックに移動し、(Cc Ccを使用して)それを実行しようとしました。ミニバッファは「Cのorg-babel-execute関数はありません」と述べました。C ++コードブロックを実行しようとしても、同じ話が続きました。Rとpythonは、私の組織ファイル内から完全に評価されることに注意してください。問題はこれらのコンパイルされた言語のみにあるようです。

次に、このob-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を再起動した後、orgファイル内からのCまたはC ++コードブロックの評価はまだ機能しません。「C用のorg-babel-execute関数がありません」または「C ++用のorg-babel-execute関数がありません」という同じエラーが表示され続けます。

更新

emacsバージョンを24.5にアップグレードし、〜/ .emacs.dディレクトリにある以前のelpaおよびmelpaサブディレクトリをすべて削除しました。それは私が私の配置した順序に関係していると疑っています

(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)

コードブロックでは、org-babel-load-languagesの前に「ob-C.el」というロードを配置します。その後、c ++コードブロックを複数回実行しました。運がありません。

その後、すべてを削除し(.emacsファイルのcustom-set-variablesブロックを削除しました)、. 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)))

まだ機能していません。

私がorgmodeバッファで評価しようとしているコードは次のとおりです:

#+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

2
あなたは本当にビットを必要loadとしませんrequirerequire読み込みを行います(ファイルにprovideステートメントがある場合、この場合はあります)が、requireこれはによって処理されるため、必要もありません。その前に、org-babel-do-load-languages必ず必要とする必要orgがあります。また、私はそうでCはないと思います、あなたはそれcを試しましたか?
wvxvw

2
ああ、いまいましい...それは働いた!#+ BEGIN_SRCブロック内のC(cではない)およびC ++(c ++ではない)は、すべての「ロード」ステートメントを正しい順序で実行した後に必要なものでした。どうもありがとう!
アルジュンJラオ

回答:


22

あなたは本当にあなたのinitファイルにこのビットが必要です:

(org-babel-do-load-languages
 'org-babel-load-languages '((C . t)))

大文字であることに注意してくださいC。これにより、BabelはC、C ++、およびDソースブロックを処理できます。


1
まだ機能していません。以前のob-c.elがらくたも削除してみました。まだ動かない。同じエラーメッセージ「No org-babel-execute function for c ++」
Arjun J Rao

1
@ArjunJRaoはコードを追加した後に評価しましたか?(複数回評価しても構いません)。エラーメッセージは技術的にはでorg-babel-execute:c++定義されている関数を見つけることができなかったことを意味しますob-C.elが、Babelにロードする必要があることを伝える方法ob-C.elはを呼び出すことorg-babel-do-load-languagesです。
wvxvw

質問を更新しました。
アルジュンJラオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.