“C için org-babel yürütme işlevi yok” ve “c ++ için org-babel yürütme işlevi yok”


16

emacs sürümüm 24.3.1.

Ben emacs okuyabilir bir yol ob-C.el ( buradan temin edilebilir ) koymak zorunda anlamak .

İlk olarak o .el dosyasından kodu .emacs dosyama kopyalayıp yapıştırdım ve emac'ları yeniden başlattım. sonra bir C kodu bloğuna (bir org dosyası içinde) gitti ve (Cc Cc kullanarak) yürütmeye çalıştı. minibuffer 'C için org-babel yürütme fonksiyonu yok' dedi. aynı hikaye bir C ++ kod bloğu yürütmeye çalışırken oynandı. R ve python'un kuruluş dosyalarımdan mükemmel bir şekilde değerlendirildiğini unutmayın. sorunlar sadece bu derlenmiş dillerle ilgili görünmektedir.

sonra bu ob-C.el ~ / .emacs.d dizininin içine koyarak bu konuda yardımcı olup olmadığını görmek için çalıştı. emacs yeniden başlatıldı ve kontrol edildi. işe yaramadı.

sonra bir dizine ~ / .emacs.d / lisp koyarak denedim ve .emacs dosyama aşağıdaki satırları ekledi

(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)

emacs yeniden başlatıldıktan sonra, bir org dosyasından C veya C ++ kod bloklarını değerlendirmek yine de çalışmaz. "C için hiçbir org-babel yürütme işlevi" veya "C için hiçbir org-babel yürütme işlevi" aynı hatayı almaya devam.

Güncelleme

i emacs sürümünü 24.5'e yükselttim, ~ / .emacs.d dizinindeki önceki tüm elpa ve melpa alt dizinlerini sildim. benim yerleştirdiğim sıra ile ilgili olduğundan şüpheleniyorum

(custom-set-variables

'(org-babel-load-languages
(quote
((emacs-lisp . t)
 (C . t)
 (css . t)
 (sh . t)
 (awk . t)
 (R . t))))

ve

;; load the pathnames to custom lisp files
(add-to-list 'load-path "~/.emacs.d/lisp/")
(load "ob-C.el")
(require 'ob-C)

kod blokları, ben yük "ob-C.el" org-babel-load-diller şey önce koydu. i sonra birden çok kez c ++ kod bloğu yürütüldü. şanssız.

sonra her şeyi kaldırdım (.emacs dosyasındaki özel set değişkenleri bloğunu temizledim) ve şimdi .emacs dosyam benziyor

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

Hala çalışmıyor.

Bir orgmode arabelleğinde değerlendirmeye çalıştığım kod:

#+BEGIN_SRC c
printf("Hello world");
#+END_SRC

Benim Mesajlar emacs'ı yeniden başlatmayı ve yukarıdaki kod bloğu çalıştırmak çalışıldıktan sonra böyle görünüyor tampon:

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
loadVe requirebitlerine gerçekten ihtiyacınız yok . requireyükleme yapar (durumda dosyası vardır providebu durumda öyle deyimi,), ama aynı zamanda gerek yok requirebu tarafından ele çünkü org-babel-do-load-languages, size gereken emin yapma ihtiyacını yapmak orgolur herhangi önce. Ayrıca, Bence bu Cdeğil cbunu denedin mi?
wvxvw

2
ohh lanet olsun ... işe yaradı! # + BEGIN_SRC bloğundaki C (c değil) ve C ++ (c ++ değil), tüm 'load' ifadelerini doğru sırada yaptıktan sonra aldığı şeydi. Çok teşekkürler dostum!
Arjun J Rao

Yanıtlar:


23

İnit dosyanızda gerçekten sadece bu bite ihtiyacınız var:

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

Başkent olduğunu unutmayın C. Bu, Babel'in C, C ++ ve D kaynak bloklarını işlemesini sağlar.


2
Hala çalışmıyor. Ben de önceki ob-c.el bok kaldırmayı denedim. Hala çalışmıyor. Aynı hata mesajı "c ++ için org-babel-execute işlevi yok"
Arjun J Rao

1
@ArjunJRao ekledikten sonra kodu değerlendirdiniz mi? (Birden çok kez değerlendirmek uygun). Hata mesajı teknik olarak bulamadık demektir org-babel-execute:c++tanımlanan olacağını fonksiyonu, ob-C.elancak yük için ihtiyaç duyduğu Babel anlatmak için bir yol ob-C.elaramaya olduğunu org-babel-do-load-languages.
wvxvw

sorumu güncelledim.
Arjun J Rao
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.