आप निर्देशिका-स्थानीय चर को कैसे पुनः लोड करते हैं? मैं .dir-locals.el
वर्तमान एमएसीएस सत्र में इस तरह के बदलावों को संशोधित करना चाहता हूं ।
आप निर्देशिका-स्थानीय चर को कैसे पुनः लोड करते हैं? मैं .dir-locals.el
वर्तमान एमएसीएस सत्र में इस तरह के बदलावों को संशोधित करना चाहता हूं ।
जवाबों:
यह फ़ंक्शन dir-locals फ़ाइल को फिर से पढ़ेगा और वर्तमान बफ़र के लिए नए मान सेट करेगा:
(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)))
और यदि आप अपने वर्तमान बफ़र की निर्देशिका में प्रत्येक बफ़र के लिए dir-locals पुनः लोड करना चाहते हैं:
(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)))))
आपके पास after-save-hook
.dir-locals.el बफ़र जोड़कर dir-locals फ़ाइल सहेजने पर सभी dir स्थानीय लोगों को ताज़ा किया जा सकता है ।
(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)
यह जांचने के लिए काम करता है : एक बफर (उदाहरण के लिए एक ऑर्ग मोड फ़ाइल) से, टाइप करें M-x add-dir-local-variable
, फिर वैलिडेट (डिफ़ॉल्ट ऑर्ग-मोड), फिर डेमो आरईटी टाइप करें, फिर "यह एक डेमो है" आरईटी।
आपकी .dir-locals.el फ़ाइल एक बफर में दिखाई देगी:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((org-mode
(demo . "this is a demo")))
आपको इसे सहेजना होगा: C-x C-s
फिर अपने ओर्ग मोड मोड पर वापस जाएं और जांचें कि डेमो वेरिएबल परिभाषित नहीं है ( 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
।