Yerel dizin değişkenlerini nasıl yeniden yüklersiniz? A .dir-locals.el
değişikliğini yapmak ve geçerli Emacs oturumuna uygulanan değişiklikleri yapmak istiyorum.
Yerel dizin değişkenlerini nasıl yeniden yüklersiniz? A .dir-locals.el
değişikliğini yapmak ve geçerli Emacs oturumuna uygulanan değişiklikleri yapmak istiyorum.
Yanıtlar:
Bu fonksiyon dir-locals dosyasını tekrar okuyacak ve mevcut tampon için yeni değerleri ayarlayacaktır:
(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)))
Geçerli dizininizdeki her arabellek için dir-yerlileri yeniden yüklemek istiyorsanız:
(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)))))
Bir dir-locals dosyasını her kaydettiğinizde, after-save-hook
.dir-locals.el tamponlarına ekleyerek tüm dir yerellerini yenileyebilirsiniz .
(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))))
Elbette bu, istenmeyen sonuçlara yol açabilir, çünkü başka yerlerde değiştirilip değiştirilmediklerine bakılmaksızın değişken değerlerini sıfırlar, bu nedenle kendi sorumluluğunuzdadır.
Ayrıca kullanabilirsiniz: M-: (hack-dir-local-variables-non-file-buffer)
Nasıl çalıştığını kontrol etmek için : bir tampondan (örneğin bir org modu dosyası) yazın M-x add-dir-local-variable
, sonra doğrulayın (varsayılan org modu), ardından demo RET, ardından "bu bir demo" RET.
Sizin .dir-locals.el dosyası bir tampon görünecektir:
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((org-mode
(demo . "this is a demo")))
Kaydetmelisin: C-x C-s
Ardından org modu tampon belleğine dönün ve demo değişkeninin tanımlanmadığını kontrol edin ( C-h C-v demo
)
Burada hile kullanabilirsiniz: M-: (hack-dir-local-variables-non-file-buffer)
Şimdi C-h C-v demo
yazdıracak:
demo'nun değeri "bu bir demo" Yerel olarak poub.org tamponunda; küresel olarak geçersiz
Bu değişkenin değeri
'/home/picaud/Temp/.dir-locals.el' dosyasıyla ayarlanan dizin-yereldir .Belgeleme: Değişken olarak belgelenmemiş.
buffer-list
.