টিএল; ডিআর : আসলে কী ঘটে থাকে সে সম্পর্কে find-file-noselect
আপনার কোনও নিয়ন্ত্রণ না থাকায় এবং ব্যবহারকারীরা কীভাবে সক্ষম হয়েছেন তার উপর নির্ভর করে আপনি বাফারে স্বেচ্ছাসেবী ছোটখাট মোডগুলি সক্ষম করতে পারেন init.el
। এছাড়াও, ক্লিনআপ করা শক্ত।
ব্যবহার করুন with-temp-buffer
এবং insert-file-contents
পরিবর্তে। আপনার যদি বাফারে নির্দিষ্ট প্রধান বা গৌণ পদ্ধতি প্রয়োজন হয় তবে এগুলি স্পষ্টভাবে সক্ষম করুন । ফাইলগুলি লিখতে, with-temp-file
পরিবর্তে ব্যবহার করুন, যা name এর নাম থাকা সত্ত্বেও ar আপনাকে স্বেচ্ছাচারিত ফাইলগুলিতে লিখতে দেয়।
ক্ষতিকর দিক
find-file-noselect
হয়েছে অনেক , পার্শ্ব প্রতিক্রিয়া এর সহ
- ইন্টারেক্টিভভাবে প্রশ্ন জিজ্ঞাসা করা (এটি একা অ-ইন্টারেক্টিভ ব্যবহারে যাওয়া নয়),
- পঠনযোগ্য ফাইলগুলির জন্য স্বয়ংক্রিয়ভাবে দর্শন মোড সক্ষম করে,
- অন্যথায় সাধারণ মোডে প্রবেশ করা,
- এবং চলমান
find-file-hook
।
নিজেই সাধারণ মোড
- বর্তমান বাফারের জন্য স্বয়ংক্রিয়ভাবে একটি উপযুক্ত প্রধান মোড নির্বাচন করে,
- সমস্ত সম্পর্কিত এবং ছোটখাট মোড হুক চালায়,
- এবং বর্তমান বাফারের জন্য সমস্ত স্থানীয় ভেরিয়েবলগুলি পড়েন, যেমন ফাইল ভেরিয়েবল এবং ডিরেক্টরি ভেরিয়েবলগুলি, যা আবার অনিরাপদ স্থানীয় ভেরিয়েবল সম্পর্কে ইন্টারেক্টিভ প্রশ্ন জিজ্ঞাসা করতে পারে।
যেহেতু সমস্ত হুক চালিত হয়, আপনি ছোটখাটো অসুবিধাগুলি থেকে (যদি অনাকাঙ্ক্ষিত ছোটখাট মোডগুলি সক্ষম করা হয়) থেকে শুরু করে বড় হাবশায় (যদি ব্যবহারকারী কোনও হুক ফাংশন যুক্ত করেন যা প্রত্যাশা করে) থেকে সমস্ত ক্ষুদ্রতর মোড এবং হুক ফাংশনগুলি ব্যবহারকারী তাদের সক্ষম করে init.el
তোলে যার ফলে তাদের সক্ষম করা হয়েছে everything একটি ইন্টারেক্টিভ প্রসঙ্গ থেকে কল করা হবে)।
উদাহরণের জন্য https://github.com/flycheck/flycheck/issues/366 দেখুন । find-file-noselect
ফ্লাই চেক দ্বারা ডেটা ফাইলটিকে সিনট্যাক্স-পরীক্ষিত করার ফলে ডেটা ব্যবহার করা হয়েছিল এবং এটি যেহেতু ইমাস শট ডাউন-এ ঘটেছিল, তাই কোনও অস্থায়ী ফাইল পিছনে রেখে সঠিকভাবে আবার পরিষ্কার করার সময় হয়নি।
পরিষ্কার কর
সঙ্গে find-file-noselect
বাফার আবার হত্যা করার আপনি অতিরিক্ত সাবধান হতে হবে। find-file-noselect
আপনার জন্য এটি না।
আপনাকে কোনও জায়গায় বাফারটি মনে রাখা দরকার, এবং unwind-protect
স্থানীয়ভাবে বহিরাগত প্রস্থানের ক্ষেত্রেও বাফার মারা যাওয়ার বিষয়টি নিশ্চিত করে সাবধানতার সাথে ব্যবহার করতে হবে।
বিকল্প
ফাইলগুলি পড়ার জন্য, ব্যবহার করুন with-temp-buffer
এবং insert-file-contents
যা কেবলমাত্র সর্বাধিক প্রাথমিক কাজগুলি করে, যেমন কোডিং সিস্টেম রূপান্তর, তবে প্রশ্ন জিজ্ঞাসা করে না, হুক সক্ষম করে, বা স্থানীয় ভেরিয়েবল সেটআপ করে:
(with-temp-buffer
(insert-file-contents (locate-user-emacs-file "foo.el"))
;; Enter the major mode explicitly
(emacs-lisp-mode)
;; …
)
with-temp-buffer
শরীরের শেষে অস্থায়ী বাফারটিকে সঠিকভাবে হত্যা করার জন্য যত্ন নেয়।
ফাইলগুলি লিখতে, ব্যবহার করুন with-temp-file
, যা একটি অস্থায়ী বাফার তৈরি করে এবং তার দেহের শেষে প্রদত্ত ফাইলের নামটিতে সামগ্রীগুলি লিখে দেয়:
(with-temp-file (locate-user-emacs-file "foo.el")
(prin1 (list 'my 'data) (current-buffer)))
good-practices
আগে কোনও ট্যাগ ছিল না ; এটি ব্যবহার করা কি ভাল ধারণা?