জন্য একটি কাস্টম ফাংশন লিখুন dired-initial-position-hook
। এই ফাংশনটিতে আপনি ফাইলগুলি অনুসন্ধান করতে বিভিন্ন ডায়ার্ড ফাংশন ব্যবহার করতে পারেন এবং অবশেষে dired-goto-file
"সেরা" ফাইলে পয়েন্টটি স্থানান্তর করতে কল করতে পারেন:
(defun my-dired-goto-important-file ()
"Go to an important file in the current dired buffer."
(unless (bound-and-true-p save-place)
(let ((candidates '("master.tex" "AndroidManifest.xml"))
candidate)
(while (and candidates
(not (dired-goto-file (expand-file-name (pop candidates)))))
nil))))
(add-hook 'dired-initial-position-hook #'my-dired-goto-important-file)
নিম্নলিখিতটিতে আমি এই ফাংশনের নির্দিষ্ট দিকগুলি ব্যাখ্যা করব এবং সম্ভাব্য এক্সটেনশনগুলি হাইলাইট করব।
ফাইলগুলিতে ঝাঁপ দাও
dired-goto-file
nil
বর্তমান ডায়ারড বাফারে যদি ফাইলটি না থাকে তবে ফিরে আসে , তাই পূর্বে পরীক্ষা না করে কল করা নিরাপদ। তবে এর dired-goto-file
জন্য প্রয়োজন একটি নিখুঁত ফাইলের নাম (এটি সম্পর্কিত ক্ষেত্রে ত্রুটিযুক্ত) expand-file-name
।
ফাইলগুলি অনুসন্ধান করা হচ্ছে
ডায়ার্ড ফাইল অনুসন্ধান করার জন্য একটি সরাসরি-ফরোয়ার্ড API সরবরাহ করে না। সাধারণত, আপনি যেমন বাফারে সমস্ত লাইনে পুনরাবৃত্তি করতে চান ঠিক তেমন সমস্ত ফাইলগুলিতে পুনরাবৃত্তি করতে পারেন:
(let (files)
(goto-char (point-min))
(while (not (eobp))
(let ((filename (dired-get-filename nil 'no-error)))
(when filename
(push filename files)))
(forward-line 1))
;; Now `files' is a list of files, which you can search for patterns
;; …
)
তবে চিহ্নিতকরণের কার্যগুলি ব্যবহার করা আরও সুবিধাজনক। বিদ্যমান "ইন্টারেক্টিভ" চিহ্নগুলি শিথিল না করার জন্য কেবল একটি "অস্বাভাবিক" চিহ্নিতকারী অক্ষর ব্যবহার করার জন্য যত্ন নিন:
(unwind-protect
(when (dired-mark-files-regexp (rx ".tex" string-end) ?t)
(dired-goto-file (expand-file-name "master.tex")))
(dired-unmark-all-files ?t))
স্থান মোড সংরক্ষণ করুন
আপনি যদি সক্ষম করে থাকেন তবে প্লেস মোড সংরক্ষণ করার ক্ষেত্রে আপনাকেও যত্নবান হওয়া দরকার। ডায়ার্ড বাফারে, সেভ প্লেস মোড অন্যান্য মোডের মতো পয়েন্টের মান মনে রাখে না, বরং শেষ ফাইলের নাম পয়েন্ট চালু ছিল। এটি আমাদের ফাইলের মতো এই ফাইলটির নাম পুনরুদ্ধার করে: এটি হুক করে dired-initial-position-hook
এবং কল করে dired-goto-file
(আসলে, আমি সেই কোডটি এখানেই চুরি করেছি :))।
যদি সংরক্ষণের জায়গার আগে আমাদের হুক আসে, প্লেস মোড মোড নিঃশর্তভাবে আমাদের অবস্থানটি ওভাররাইট করে। তবে এটি যদি আমাদের হুকের আগে আসে (যেমন আপনি যখন এই হুকটি সেটআপ করার পরে সেভ প্লেস সক্ষম করা হয় তখন) আমাদের ফাংশনটি সেভ প্লেসটি ওভাররাইট করে দেবে যা কাঙ্ক্ষিত নয়। তবে যে কোনও বাফারের মতো, সেভ প্লেস স্থানীয় ভেরিয়েবলটিকে save-place
একটি নন-শিল মান হিসাবে সেট করে , তাই আমরা কেবল এটি যাচাই করতে পারি এবং কেবল এটির জন্য কাজ করতে পারি সেভ প্লেস কোনও ফাইলের নাম পুনরুদ্ধার করে নি।
যদি আপনার পরিবর্তে সেভ প্লেসটি “আলগা” থাকে তবে চেকটি সরিয়ে ফেলুন save-place
এবং সেভ প্লেসের পরে প্রথমে সেভ প্লেস মোড সক্ষম করে এবং add-hook
তার তর্কটির জন্য একটি নন-মান সহ কল করে নিশ্চিত করুন যে আমাদের হুকটি সেভ প্লেসের পরে চালানো হবে APPEND
।
bound-and-true-p
। :-)