আমি আমার .emacs.d ডিরেক্টরিতে সমস্ত কিছু কীভাবে বাইট-সংকলন করব?


138

আমি ইমাসগুলি পরীক্ষা করে দেখার সিদ্ধান্ত নিয়েছি এবং এটি আমার খুব পছন্দ হয়েছে liked এখন, আমি ইম্যাক্স স্টার্টার কিটটি ব্যবহার করছি , যা ইমাক্সের ডিফল্ট ইনস্টল করতে আরও ভাল ডিফল্ট এবং কিছু দুর্দান্ত কাস্টমাইজেশন সরবরাহ করে।

আমি এটিকে কিছুটা কাস্টমাইজ করেছি, কিছু জিনিস যেমন ইয়াসনিপেট , রঙ-থিম , আনবাউন্ড এবং অন্যান্য স্টাফ যুক্ত করেছি। আমি একটি গিথব সংগ্রহস্থল স্থাপন করেছি যেখানে আমি সমস্ত কাস্টমাইজেশন রাখি যাতে আমি একাধিক স্থান থেকে এগুলি অ্যাক্সেস করতে পারি বা যদি কিছু খারাপ হয়ে যায় এবং আমি আমার .emacs.d ডিরেক্টরিটি হারাতে পারি।

এগুলি সবই খুব সুন্দর, তবে একটি সমস্যা রয়েছে: ইমাকগুলি লোড হতে প্রায় 1-2 সেকেন্ড সময় নেয়। আফাইক আমি এমএক্স বাইট-কম্পাইল-ফাইল দিয়ে .elc তে পৃথক .el ফাইলগুলি সংকলন করতে পারি এবং এটি কার্যকর হয়। তবে প্রচুর .el ফাইল রয়েছে এবং আমি আশ্চর্য হয়েছি যে ইম্যাক্সের লোডিংটি দ্রুত করার জন্য একটি সাধারণ কমান্ড বা কোনও কিছু দিয়ে সেগুলি সমস্ত সংকলন করার কোনও উপায় আছে কি না। আমার ইমাসগুলি সর্বদা খোলা থাকে না এবং আমি এটি প্রায়শই খুলি এবং বন্ধ করি, বিশেষত আমি এটির দ্রুত অভ্যস্ত হওয়ার জন্য টোটাল কমান্ডারে সম্পাদনা কমান্ডের জন্য এটি ডিফল্ট সম্পাদক হিসাবে সেটআপ করার পরে (হ্যাঁ, উইন্ডোজ এক্সপি এখানে)।

আমার ইমাস সংস্করণটি 22.3। এবং হ্যাঁ, কোনও কাস্টমাইজেশন ছাড়াই ডিফল্ট ইমাস্যাক্স ইনস্টলেশন তত্ক্ষণাত জ্বলতে থাকে।

আমি নিশ্চিত নই যে লোড করার সময় কোন সংস্করণ পছন্দ করা হয়, ও। ই বা সংকলিত। ওও উপায় অনুসারে একটিকে

সুতরাং, .emacs.d ডিরেক্টরিতে ইমাসকে বাইট-কম্পাইল করার জন্য একটি এলিস্প কমান্ড বা ইমাকস কমান্ড লাইন সুইচ রয়েছে?

উত্তর:


208

C-u 0 M-x byte-recompile-directory

ডিরেক্টরিতে এবং নীচের সমস্ত উপ-ডিরেক্টরিতে সমস্ত .el ফাইল সংকলন করবে।

C-u 0অংশ এটা যে একটি .elc সহযোগীর নেই যে .el ফাইল সম্পর্কে জিজ্ঞাসা করবেন করা হয়।


9
এবং তারপরে (একবারে প্রত্যেকটি একবার সংকলন করা হয়েছে), কেবল C-u 0(ক্যারিব C-0, বিটিডাব্লু) ছাড়াই একই কমান্ডটি ব্যবহার করুন । এটি কেবলমাত্র সেই উত্স ফাইলগুলি বাইট-সংকলন করবে যা তাদের বাইট-সংকলিত সংস্করণগুলির চেয়ে সাম্প্রতিক।
ড্রিউ

1
একটি সামান্য দ্রষ্টব্য: আমার পক্ষে এটি কাজ করে না যতক্ষণ না আমি সমস্ত অনুযায়ী all .elc »ফাইলগুলি সরিয়ে ফেলি। এটি স্রেফ told সম্পন্ন, 0 টি ফাইলের কমাইল, α ফাইলগুলি এড়ানো ipped এর মতো কিছু বলেছিল »
হাই-অ্যাঞ্জেল

1
@ হাই-অ্যাঞ্জেল আমারও একই সমস্যা। কোন সমাধান খুঁজে পেয়েছেন?
zhanxw

@ ঝাংক্সউ হাঁ দুর্ভাগ্যক্রমে কমান্ডটি কেবলমাত্র এমন ফাইলগুলি সংকলন করে যা হয় পরিবর্তন হয়েছে, বা কোনও el .elc »প্রতিচ্ছবি নেই। সুতরাং প্রথমে ডিরেক্টরিতে সমস্ত কিছু পুনর্নির্মাণ করতে আপনাকে সমস্ত «.elc» ফাইল মুছতে হবে।
হাই-অ্যাঞ্জেল

2
ইন্টারেক্টিভ কমান্ড দুর্ভাগ্যক্রমে এটি প্রকাশ করে না, তবে আপনি সরাসরি ফাংশনটি কল করলে আপনি FORCEইতিমধ্যে সম্পর্কিত ".elc" থাকা ফাইলগুলিকে পুনরায় M-: (byte-recompile-directory "/the/directory/" 0 t)
সংযোগ করতে alচ্ছিক

44

আমি যখন ইমাস শুরু করি প্রতিবার সংকলিত বাইটের প্রয়োজনীয় সমস্ত কিছু স্বয়ংক্রিয়ভাবে বাইট করতে, আমার পরিবর্তনের পরে load-pathআমার .emacsফাইলটির শীর্ষে রাখলাম :

(byte-recompile-directory (expand-file-name "~/.emacs.d") 0)

আশ্চর্যজনকভাবে, এটি আমার প্রারম্ভকালে খুব বেশি যোগ করে না (যদি না কিছু সংকলনের প্রয়োজন হয়)।

আমার Emacs গতি বাড়াতে, আমি প্রথম ব্যবহার ধীর অংশের চিহ্নিত প্রোফাইল-dotemacs.el এবং তারপর তাদের দিয়ে প্রতিস্থাপিত autoloads


অটোলোডস ডকুমেন্টেশন সরানো হয়েছে। এটি এবং প্রোফাইল-ডটমেকস.এল রেফারেন্স হ'ল আমি যখন এই পৃষ্ঠাটি জুড়ে এসেছি তখন ঠিক আমার যা প্রয়োজন।
ডিজিগ্র্যাট

24

আপনি --batchকমান্ড লাইন থেকে পুনরায় সংযোগ করতে পতাকাটি ব্যবহার করতে পারেন ।

সমস্ত পুনরায় রচনা করতে, করতে

emacs --batch --eval '(byte-recompile-directory "~/.emacs.d")'

বা একটি মেকফিলের মতো একটি ফাইল পুনরায় সংকলন করতে,

emacs --batch --eval '(byte-compile-file "your-elisp-file.el")'

5
ব্যবহারের ব্যাচ-বাইট-কম্পাইল পরিবর্তে।
এনপোস্টভগুলি

1
আপনি এটি ব্যবহার করতে পারেন?
nacho4d

8
@ nacho4d emacs -Q --batch -f batch-byte-compile *.el foo/*.el- যদিও এটি বাইট-রিকম্পাইল-ডিরেক্টরি হিসাবে পুনরাবৃত্তি করে না ।
ব্রায়ান বার্নস

3
আপনি সম্ভবত পুনরায় সংশোধন করার জন্য একটি যুক্তি যুক্ত করতে চান, যেমন। emacs --batch --eval '(বাইট-রিকম্পাইল-ডিরেক্টরি "~ / .emacs.d" 0)'
ইব্রাহিম

17

এটি প্রশ্ন থেকে কিছুটা দাপিয়ে বেড়াচ্ছে, তবে আস্তে আস্তে লোড হওয়ার সমস্যাটি সমাধান করতে আপনি ইমাস্যাক্স 23 এ নতুন ডেমন বৈশিষ্ট্যটি ব্যবহার করতে পারেন।

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

Http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html থেকে


আমি অবশ্যই এটি এক পরীক্ষা করে দেখতে চাই। ধন্যবাদ!
মিক্কা

2
যদি আপনি আপনার .bashrc (বা আপনার শেলের সংস্করণ) -এর নাম emacs = 'emacsclient -nw -a "" -c "যুক্ত করেন তবে এটি প্রথমে একটি চলমান ডিমন সাথে সংযোগ স্থাপনের চেষ্টা করবে যদি তা না থাকে তবে এটি শুরু করে এবং সংযুক্ত হবে আপনি.
ফ্রেডরিক

2

আমার স্পেসম্যাক ব্যবহারের জন্য, কমান্ডটি হ'ল spacemacs/recompile-elpa। কমান্ডটি byte-recompile-directoryকোনও ফাইল সংকলন করে না।


2
বিভিন্ন জিনিস। ELPA / MELPA স্টাফগুলি নিজস্ব সংরক্ষণাগার শ্রেণিবদ্ধে বিল্ড পদ্ধতিগুলি সংজ্ঞায়িত করেছে। বাইট-রিকম্পাইল-ডিরেক্টরি কোনও ব্যবহারকারী সংজ্ঞায়িত ডিরেক্টরিতে সমস্ত .el ফাইল সংকলন করার চেষ্টা করে।
রিচিএইচ এইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.