เวอร์ชั่น emacs ของฉันคือ 24.3.1
ฉันเข้าใจว่าฉันต้องวาง ob-C.el (หาได้จากที่นี่ ) ในเส้นทางที่ Emacs สามารถอ่านได้
ฉันคัดลอกโค้ดจากไฟล์. el ไปยังไฟล์. emacs ของฉันก่อนแล้วรีสตาร์ท emacs จากนั้นฉันไปที่บล็อกรหัส C (ภายในไฟล์ org) และพยายามเรียกใช้งาน (ใช้ Cc Cc) minibuffer กล่าวว่า 'ไม่มีฟังก์ชั่น org-babel-execute สำหรับ C' เรื่องเดียวกันเล่นด้วยความพยายามที่จะดำเนินการบล็อกรหัส C ++ โปรดทราบว่า R และ python ประเมินได้อย่างสมบูรณ์แบบจากภายในไฟล์ org ของฉัน ปัญหาดูเหมือนว่าจะมีเฉพาะกับภาษาที่รวบรวมเหล่านี้
ฉันลองวาง 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 การประเมินบล็อกโค้ด C หรือ C ++ จากภายในไฟล์ org ยังคงไม่ทำงาน ฉันได้รับข้อผิดพลาดเดียวกัน "ไม่มีฟังก์ชั่น org-babel-execute สำหรับ C" หรือ "ไม่มีฟังก์ชั่น org-babel-execute สำหรับ 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)))
มันยังไม่ทำงาน
รหัสที่ฉันพยายามประเมินในบัฟเฟอร์ 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
load
และrequire
บิตrequire
ทำการโหลด (ในกรณีที่ไฟล์มีprovide
คำสั่งซึ่งในกรณีนี้จะเป็นเช่นนั้น) แต่คุณไม่จำเป็นต้องใช้require
เพราะสิ่งนี้ได้รับการจัดการโดยorg-babel-do-load-languages
คุณจะต้องตรวจสอบให้แน่ใจorg
ก่อนว่าจะเกิดเหตุการณ์ใดขึ้น นอกจากนี้ฉันคิดว่าC
ไม่ใช่c
คุณลองหรือไม่