আপনি ডিরেক্টরি-স্থানীয় ভেরিয়েবলগুলি পুনরায় লোড করবেন কীভাবে? আমি একটিটি সংশোধন করতে চাই .dir-locals.el
এবং বর্তমান ইমাস সেশনে এ জাতীয় পরিবর্তনগুলি প্রয়োগ করতে চাই।
আপনি ডিরেক্টরি-স্থানীয় ভেরিয়েবলগুলি পুনরায় লোড করবেন কীভাবে? আমি একটিটি সংশোধন করতে চাই .dir-locals.el
এবং বর্তমান ইমাস সেশনে এ জাতীয় পরিবর্তনগুলি প্রয়োগ করতে চাই।
উত্তর:
এই ফাংশনটি দির-স্থানীয়দের ফাইলটি পুনরায় পড়বে এবং বর্তমান বাফারের জন্য নতুন মান নির্ধারণ করবে:
(defun my-reload-dir-locals-for-current-buffer ()
"reload dir locals for the current buffer"
(interactive)
(let ((enable-local-variables :all))
(hack-dir-local-variables-non-file-buffer)))
এবং যদি আপনি আপনার বর্তমান বাফার ডিরেক্টরিতে প্রতিটি বাফারের জন্য ডির-স্থানীয়দের পুনরায় লোড করতে চান:
(defun my-reload-dir-locals-for-all-buffer-in-this-directory ()
"For every buffer with the same `default-directory` as the
current buffer's, reload dir-locals."
(interactive)
(let ((dir default-directory))
(dolist (buffer (buffer-list))
(with-current-buffer buffer
(when (equal default-directory dir))
(my-reload-dir-locals-for-current-buffer)))))
আপনি একবার dir after-save-hook
-local.el বাফার যুক্ত করে একটি দির-লোকাল ফাইল সংরক্ষণ করার সময় সমস্ত দির লোকাল রিফ্রেশ করতে পারেন ।
(add-hook 'emacs-lisp-mode-hook
(defun enable-autoreload-for-dir-locals ()
(when (and (buffer-file-name)
(equal dir-locals-file
(file-name-nondirectory (buffer-file-name))))
(add-hook (make-variable-buffer-local 'after-save-hook)
'my-reload-dir-locals-for-all-buffer-in-this-directory))))
অবশ্যই এটির অনিচ্ছাকৃত পরিণতি হতে পারে কারণ এটি ভেরিয়েবলের মানগুলি অন্য কোথাও পরিবর্তন করা হয়েছে তা নির্বিশেষে পুনরায় সেট করবে, সুতরাং আপনার নিজের ঝুঁকিতে ব্যবহার করুন।
আপনি এটি ব্যবহার করতে পারেন: M-: (hack-dir-local-variables-non-file-buffer)
এটি কাজ করে কিনা তা পরীক্ষা করতে : বাফার থেকে (উদাহরণস্বরূপ একটি org মোড ফাইল) থেকে টাইপ করুন M-x add-dir-local-variable
, তারপরে বৈধতা দিন (ডিফল্ট org- মোড), তারপরে ডেমো আরইটি টাইপ করুন, তারপরে "এটি একটি ডেমো" আরইটি টাইপ করুন।
আপনার .dir-local.el ফাইলটি একটি বাফারে প্রদর্শিত হবে:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((org-mode
(demo . "this is a demo")))
আপনাকে এটি সংরক্ষণ করতে হবে: C-x C-s
তারপরে আপনার org মোড বাফারে ফিরে যান এবং ডেমো ভেরিয়েবল সংজ্ঞায়িত হয়নি তা পরীক্ষা করে দেখুন ( C-h C-v demo
)
এখানে আপনি কৌশলটি ব্যবহার করতে পারেন: M-: (hack-dir-local-variables-non-file-buffer)
এখন C-h C-v demo
মুদ্রণ করবে:
ডেমোর মান হ'ল "এটি একটি ডেমো" স্থানীয় বাফার poub.org এ স্থানীয়; বিশ্বব্যাপী অকার্যকর
এই ভেরিয়েবলের মান হ'ল ডিরেক্টরি-স্থানীয়,
'/ home/picaud/Temp/.dir-locals.el' ফাইল দ্বারা সেট করা ।ডকুমেন্টেশন: ভেরিয়েবল হিসাবে নথিভুক্ত নয়।
buffer-list
।