versi emacs saya adalah 24.3.1.
saya mengerti saya harus meletakkan ob-C.el (tersedia dari sini ) di jalur di mana Emacs dapat membacanya.
pertama-tama saya menyalin kode dari file .el itu ke file .emacs saya dan me-restart emacs. kemudian saya pergi ke blok kode C (dalam file org) dan mencoba untuk mengeksekusinya (menggunakan Cc Cc). minibuffer mengatakan 'no fungsi org-babel-execute untuk C'. cerita yang sama dimainkan dengan mencoba mengeksekusi blok kode C ++. perhatikan bahwa R dan python mengevaluasi dengan sempurna dari dalam file org saya. masalahnya tampaknya hanya dengan bahasa yang dikompilasi ini.
Saya kemudian mencoba meletakkan ob-C.el ini di dalam direktori ~ / .emacs.d untuk melihat apakah itu membantu. restart emacs dan diperiksa. tidak berhasil.
kemudian saya mencoba memasukkannya ke direktori ~ / .emacs.d / lisp dan menambahkan baris berikut ke file .emacs saya
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
setelah memulai ulang emacs, mengevaluasi blok kode C atau C ++ dari dalam file org masih tidak berfungsi. saya tetap mendapatkan kesalahan yang sama "tidak ada fungsi org-babel-execute untuk C" atau "tidak ada fungsi org-babel-eksekusi untuk C ++"
Memperbarui
saya meningkatkan versi emacs saya ke 24.5, menghapus semua subdirektori elpa dan melpa sebelumnya di direktori ~ / .emacs.d saya. mencurigai itu ada hubungannya dengan urutan di mana saya menempatkan saya
(custom-set-variables
'(org-babel-load-languages
(quote
((emacs-lisp . t)
(C . t)
(css . t)
(sh . t)
(awk . t)
(R . t))))
dan
;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)
blok kode, saya meletakkan load "ob-C.el" sebelum org-babel-load-languages. saya kemudian mengeksekusi blok kode c ++ beberapa kali. tidak berhasil.
kemudian saya menghapus semuanya (membersihkan blok variabel set-kustom di file .emacs) dan sekarang file .emacs saya terlihat seperti
;; 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)))
Itu masih tidak berfungsi.
Kode yang saya coba evaluasi dalam buffer orgmode adalah:
#+BEGIN_SRC c
printf("Hello world");
#+END_SRC
Buffer Pesan Saya terlihat seperti ini setelah memulai ulang emacs dan mencoba mengeksekusi blok kode di atas:
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
danrequire
bit.require
tidak memuat (jika file memilikiprovide
pernyataan, yang dalam hal ini memang), tetapi Anda juga tidak memerlukannyarequire
karena ini ditangani olehorg-babel-do-load-languages
, Anda perlu memastikan untuk memintaorg
sebelum semua itu terjadi. Juga, saya pikirC
tidakc
, apakah Anda mencobanya?Jawaban:
Anda benar-benar hanya membutuhkan bit ini di file init Anda:
Perhatikan itu modal
C
. Ini memungkinkan Babel untuk memproses blok sumber C, C ++ dan D.sumber
org-babel-execute:c++
fungsi, yang akan didefinisikanob-C.el
, tetapi cara untuk memberi tahu Babel bahwa ia perlu memuatob-C.el
adalah dengan meneleponorg-babel-do-load-languages
.