"সি এর জন্য কোনও অর্গ-বাবেল-এক্সিকিউট ফাংশন" এবং "সি ++ এর জন্য নো-ওআরজি-বাবেল-এক্সিকিউট ফাংশন"


16

আমার ইমাস সংস্করণটি 24.3.1।

আমি বুঝতে পারি যে আমাকে ও-সি.এল ( এখান থেকে উপলভ্য ) এমন একটি পথে রাখতে হবে যেখানে ইমাসগুলি এটি পড়তে পারে।

আমি প্রথমে from .el ফাইল থেকে আমার .emacs ফাইলে কোডটি অনুলিপি করে ইমাকগুলি পুনরায় চালু করেছি। তারপরে আমি একটি সি কোড ব্লকে গিয়েছি (একটি org ফাইলের মধ্যে) এবং এটি কার্যকর করার চেষ্টা করেছি (সিসি সিসি ব্যবহার করে)। মিনিবাফার বলেছিল যে 'কোনও সিআর-এর জন্য কোনও org-বাবেল-এক্সিকিউট ফাংশন নেই'। একই গল্পটি একটি সি ++ কোড ব্লক কার্যকর করার চেষ্টা করে চলেছে। নোট করুন যে আর ও পাইথন আমার org ফাইলগুলির মধ্যে থেকে নিখুঁতভাবে মূল্যায়ন করে। সমস্যাগুলি কেবল এই সংকলিত ভাষাগুলির সাথেই বলে মনে হচ্ছে।

আমি তখন এই ওব-সিএলটিকে helped / .emacs.d ডিরেক্টরিতে রাখার চেষ্টা করেছিলাম কিনা তা দেখার জন্য কিনা তা চেষ্টা করে। পুনরায় আরম্ভ করুন এবং চেক। এটা কাজ করে না।

তারপরে আমি এটিকে একটি ডিরেক্টরি। / .emacs.d / lisp এ রাখার চেষ্টা করেছি এবং আমার .emacs ফাইলটিতে নিম্নলিখিত লাইনগুলি যুক্ত করেছি

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

ইম্যাক্স পুনরায় আরম্ভ করার পরে, একটি org ফাইলের মধ্যে থেকে সি বা সি ++ কোড ব্লকগুলি মূল্যায়ন করা এখনও কাজ করে না। আমি একই ত্রুটি পেয়ে যাচ্ছি "সি এর জন্য কোনও অর্গ-বাবেল-এক্সিকিউট ফাংশন" বা "সি ++ এর জন্য কোনও অর্গ-বাবেল-এক্সিকিউট ফাংশন" নেই।

হালনাগাদ

আমি আমার ইমাস সংস্করণটি 24.5 এ আপগ্রেড করেছি, আমার। / .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)

কোড ব্লক, আমি org-ব্যাবেল-লোড-ভাষা জিনিসগুলির আগে "ob-C.el" লোডটি রেখেছি। আমি তখন একাধিকবার সি ++ কোড ব্লক কার্যকর করি। ভাগ্য নেই.

তারপরে আমি সমস্ত কিছু সরিয়ে ফেললাম (.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

আমার বার্তাগুলি বাফারটি ইমাকগুলি পুনরায় চালু করার পরে এবং উপরের কোড ব্লকটি কার্যকর করার চেষ্টা করার পরে দেখে মনে হচ্ছে:

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এবং requireবিট। requireলোডিং হয় (যদি ফাইলটির কোনও provideবিবৃতি থাকে যা এই ক্ষেত্রে এটি করে) তবে আপনার requireএটিরও প্রয়োজন নেই কারণ এটি হ্যান্ডেল করা হয়েছে org-babel-do-load-languages, এটির orgআগে কোনওটি হওয়ার আগে আপনাকে অবশ্যই নিশ্চিত করতে হবে। এছাড়াও, আমি মনে করি এটি Cনা c, আপনি কি চেষ্টা করেছিলেন?
wvxvw

2
ওহ, ধিক্কার! সি (+ সি নয়) এবং সি ++ (সি ++ নয়) এর ভিতরে # + এসএসসিআরসি ব্লকটি সঠিক ক্রমে সমস্ত 'লোড' বিবৃতি সম্পন্ন করার পরে তা গ্রহণ করেছিল। অনেক অনেক ধন্যবাদ!
অর্জুন জে রাও

উত্তর:


23

আপনার আরম্ভের ফাইলটিতে আপনার কেবলমাত্র এই বিটটি দরকার:

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

এটি একটি মূলধন নোট করুন C। এটি বাবেলকে সি, সি ++ এবং ডি উত্স ব্লকগুলি প্রক্রিয়া করতে সক্ষম করে।


2
এটি এখনও কাজ করে না। আমি আগের ob-c.el ক্র্যাপগুলিও সরানোর চেষ্টা করেছি। এখনও কাজ করছে না. একই ত্রুটির বার্তা "সি ++ এর জন্য কোনও অর্গ-বাবেল-এক্সিকিউট ফাংশন"
অর্জুন জে রাও ২

1
@ আর্জুনজেআরও আপনি কোডটি যুক্ত করার পরে মূল্যায়ন করেছেন? (এটি একাধিকবার মূল্যায়ন করা ঠিক আছে)। ত্রুটি বার্তাটি প্রযুক্তিগতভাবে বোঝায় যে এটি org-babel-execute:c++ফাংশনটি খুঁজে পায় নি , যা সংজ্ঞায়িত করা হবে ob-C.elতবে বাবেলকে বোঝানোর উপায়টি যে এটি লোড ob-C.elকরা দরকার তা হল কল করা org-babel-do-load-languages
wvxvw

আমি আমার প্রশ্ন আপডেট করেছি।
অর্জুন জে রাও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.