অন্তর্নির্মিত ফাংশন এবং ভেরিয়েবলগুলির উত্স কোডে নেভিগেট করুন


9

পুরো দিন জুড়ে আমি ক্রমাগত ব্যবহার করছি C-h fবা C-h v( describe-functionএবং describe-variable) ফাংশন এবং ভেরিয়েবলের জন্য ডকুমেন্টেশন সন্ধান করতে। প্রায়শই না করার পরে, আমি যদি আমার প্রয়োজনীয় সমস্ত তথ্য না পাই তবে আমি ফাইল লিঙ্কের শেষে ক্লিক করব:

some-random-command is an interactive compiled Lisp function in `some-mode.el'.

এবং উত্স কোড নেভিগেট করুন। এটি ইনস্টল করা প্যাকেজগুলির জন্য কাজ করে তবে অন্তর্নির্মিতগুলির জন্য এটি কাজ করে না বলে মনে হয়। উদাহরণস্বরূপ, কমান্ডের জন্য সহায়তা পৃষ্ঠার শীর্ষে describe-functionআমি যা পাই তা হ'ল:

describe-function is an interactive compiled Lisp function.

উত্স কোডের সাথে কোনও লিঙ্ক নেই। বিল্ট ইন প্যাকেজটির উত্স কোডে দ্রুত নেভিগেট করার কোনও উপায় আছে কি?

আমি জানি যে আমি উত্স কোডটি খুঁজে পেতে পারি, উদাহরণস্বরূপ, /usr/share/emacs/24.5/lispএবং সেই ডিরেক্টরিতে অ্যাক্সেসের যে কোনও উপায়ের সাথে দ্রুত এগিয়ে আসছি, তবে আমি যদি আগ্রহী তখন আমি যদি সেখানে বিল্ট-ইন ফাংশন / ভেরিয়েবল সংজ্ঞা নেভিগেট করার দ্রুত এবং সহজ উপায় থাকে তবে আমি আগ্রহী am সোর্স কোড. ধন্যবাদ!


5
M-x find-function; M-x find-variable; M-x find-face; M-x find-library। আমি সর্বদা ইমাসের একটি সম্পূর্ণ ইনস্টলেশন ব্যবহার করি যাতে আমার কাছে সমস্ত কিছুর অ্যাক্সেস থাকে এবং আমি নিজের ইমাস তৈরি করার পরে আমি সি-উত্স কোডটি অনুলিপি করে তার অবস্থান সেট করি যাতে আমি সি-উত্স কোড সংজ্ঞাও পেতে পারি। আপনি find-function-C-source-directoryসিটি-সোর্স কোডটি অনুলিপি করার পরে তার অবস্থান নির্ধারণের জন্য ভেরিয়েবলটি দেখুন ।
আইনজীবি

1
ইম্যাক্সের মাস্টার শাখাটি ব্যবহার করে আমি নিম্নলিখিতটি পেয়েছি M-x describe-function: বিবরণ -ফাংশন হ'ল-fns.el 'তে একটি ইন্টারেক্টিভ অটোলোয়েড সংকলিত লিস্প ফাংশন। এবং সেখান থেকে আমি ক্লিক করতে (বা এন্টার টিপুন টিপুন) help-fns.elএবং তারপরে কোডের প্রযোজ্য বিভাগে স্থানান্তরিত করতে পারি। সম্ভবত আপনার একাধিক Emacs সংস্করণ রয়েছে, এবং এই মুহুর্তে আপনি যেটি ব্যবহার করছেন তাতে সমস্ত উত্স কোড ইনস্টল করা নেই?
আইনজীবি

আপনি যখন ইমাকগুলি শুরু করেন emacs -Q(কোনও init ফাইল নেই) ব্যবহার করে বা যদি এমন কোনও রেসিপি দিয়ে শুরু করতে পারেন emacs -Q(যেমন আপনি কী লাইব্রেরিগুলি লোড করেন এবং কীভাবে আপনি এগুলি লোড করেন ইত্যাদি ইত্যাদি) আপনি যদি এমন আচরণটি পান তবে দয়া করে একটি বাগ ফাইল করার বিষয়টি বিবেচনা করুন রিপোর্ট: M-x report-emacs-bug
ড্রিউ

4
এনবিআইআইআরসি, দেবিয়ানের ইমাস প্যাকেজগুলি (সম্ভবত অন্যান্য ওএসগুলিও) .elফাইলগুলি ( alচ্ছিক হিসাবে বিবেচিত ) পৃথক করে .elc(বাধ্যতামূলক), যেমন সেগুলি পেতে আপনাকে এক বা একাধিক অতিরিক্ত প্যাকেজ ইনস্টল করতে হবে। যদি আপনি আপনার ওএস প্যাকেজ ম্যানেজারের কাছ থেকে ইমাস পান তবে সম্ভবত এটি ব্যাখ্যা করে।
ফিল্ডস

1
- তুমি বাইনেরিতে (এক্সিকিউটেবল অনুমতিসহ) এর নামের জন্য একটি, grep (অথবা অন্যান্য সার্চ উপযোগ) করতে পারে Emacs বা emacsclient - দেখ যেখানে তারা আপনার হার্ড ড্রাইভে আছে। আমি আমার নিজস্ব উত্সর্গীকৃত ফোল্ডারে সম্পূর্ণ আলাদাভাবে সঞ্চয় করি। উদাহরণস্বরূপ, আমার কাছে আমার অপারেটিং সিস্টেমের সাথে প্রেরণ করা সংস্করণ রয়েছে - /usr/bin/emacsএবং /usr/bin/emacsclientআমার কাছে একটি অ্যাপ্লিকেশন ফোল্ডারে খুব ভালভাবে প্যাকেজ করা আছে যা .app - এ শেষ হয় /Applications/Emacs.app(যা ইমাকস.এ্যাপের অভ্যন্তরে, বাইনারি এবং সমস্ত উত্স-কোড ফাইল)।
আইনজীবি

উত্তর:


7

আপনি কখনও কখনও কোনও ফাইলের নাম না দিয়ে "ইন্টারেক্টিভ সংকলিত লিস্প ফাংশন" (বা তেমনিভাবে ভেরিয়েবলগুলির জন্য) দেখার কারণটি হ'ল ফাংশনটি বাইট-সংকলিত ফাইল থেকে লোড করা হয়েছিল এবং সংশ্লিষ্ট এলিস্প উত্স ফাইল উপস্থিত নেই। আপনাকে উত্স কোডটি দেখানোর জন্য, ইমাসকে উত্স কোডটি সন্ধান করতে সক্ষম হতে হবে।

অনেকগুলি বিতরণ লিস্প উত্স ফাইলগুলিকে একটি পৃথক প্যাকেজে পাঠায়, কারণ প্রতিটি ব্যবহারকারী তাদের চায় না এবং সেগুলি বিশাল। উদাহরণস্বরূপ, ডেবিয়ান এবং ডেরিভেটিভগুলিতে ইনস্টল করুন emacs24-el। যদি আপনি উত্স থেকে make installইমাস তৈরি করেন তবে এলিস্প উত্সগুলি অনুলিপি করুন।

আপনি যদি আদিম উত্সের কোড (সাবরুটাইনস এবং বিশেষ ফর্মগুলি) দেখতে চান তবে ইমাসকে সি উত্সগুলি সন্ধানের জন্য সক্ষম হওয়া দরকার। আপনি উত্স থেকে ইনস্টল না করা থাকলে এগুলি সাধারণত উপলভ্য নয়।

ইম্যাকস ডিরেক্টরিতে ডিরেক্টরিগুলির মধ্যে লিপ্প উত্সগুলি সন্ধান করে load-path। একটি ফাংশন বা পরিবর্তনশীল থেকে লোড জন্য foo.elc,ফাইল হতে পারে foo.elবা foo.el.gz। ইমাকস সি এর সূত্রগুলির অধীনে সন্ধান করে source-directoryএবং যদি উত্স ফাইলটি খুঁজে না পায় তবে আপনাকে আলাদা ডিরেক্টরি নির্দেশ করতে অনুরোধ জানায়।


যদিও আমি শপথ করে বলতে পারি যে আমি উত্স থেকে ইমাস্সের এই সংস্করণটি তৈরি করেছি, যখন আমি M-x emacs-versionএটিকে "দেবিয়ান দ্বারা সংশোধিত" বলব, যা ইঙ্গিত করবে যে আমি আমার ওএসের (উবুন্টু) প্যাকেজ ম্যানেজারের কোনও সংস্করণ ব্যবহার করছি, তাই না?
ইলেথান

@ ইলেথান যদি এটি "দেবিয়ান দ্বারা সংশোধিত" বলে থাকে তবে আপনি কমপক্ষে উবুন্টু প্যাকেজটি ইনস্টল করেছেন বা তৈরি করেছেন। আপনি এটি উত্স থেকে তৈরি করতে পারেন (কারণ আপনি আপনার উবুন্টু মুক্তির চেয়ে নতুন সংস্করণ চেয়েছিলেন)। আপনি চালাচ্ছেন /usr/bin/emacsবা /usr/local/bin/emacs?
গিলস'স'-দুষ্ট হওয়া বন্ধ করুন '

1

আপনি উপায়ে দ্রুত সোর্স কোড ঝাঁপ খুঁজছেন থাকেন, এছাড়াও আছে find-function-at-pointএবং find-variable-at-pointযা কার্সার অধীনে প্রতীকের সংজ্ঞা ঝাঁপ যাবে - আপনি অধ্যায় CF এবং অধ্যায় Cv তাদের বেঁধে রাখতে পারত উদাহরণস্বরূপ।

অথবা আপনি এলিস্প-স্লাইম-নাভ চেষ্টা করতে পারেন , যা এম- ব্যবহার করে। প্রতীকের সংজ্ঞা, এবং ফিরে আসার জন্য এম- তে লাফিয়ে উঠতে - এটি ভেরিয়েবল, ফাংশন, গ্রন্থাগার এবং মুখগুলিতে নেভিগেট করে - https://github.com/purcell/elisp-slime-nav/

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