Güven .dir-locals.el


12

Benim init.eldosya dışında bazı yapılandırma koymak istiyorum .dir-locals.el, yani:

((nil
  (let ((dirs '(".cask" "core" "packages" "modules" "snippets" "themes")))
   (mapc #'(lambda (path) (add-to-list 'projectile-globally-ignored-directories path)) dirs))))

Ama her .emacs.dklasörümde herhangi bir dosyayı açmaya çalıştığımda , emacs bana bu kodu uygulamak için kaydetmek olup olmadığını soruyor. Dosya yerel vars ayarlayarak susturmaya çalıştım:

;; -*- enable-local-variables: t; enable-local-eval: t -*-

ve hiç yardımcı olmadı, aksine bu yerel ayarlara güvenmek için başka bir mesaj ekliyor. Koduma nasıl güvenebilirim .dir-locals.el?


Sen adında bir değişken bağlı ettiklet
Phil'ler

Yanıtlar:


8

safe-local-variable-valuesİnit dosyanızda özelleştirebilirsiniz . Bu, hangi değerleri güvenli olarak değerlendirdiğinizi de belirtmenizi gerektirir.

(add-to-list 'safe-local-variable-values '(var . value))

Sorunuzda belirtildiği gibi, olası değerler kümesini biliyorsanız bu sorun olmaz.

Bir değişkeni yüklemi karşılayan tüm değerler için güvenli hale getirmek istiyorsanız, şunları yapabilirsiniz:

(put 'var 'safe-local-variable #'stringp) 

Bu yaklaşım için teşekkür ederim, ancak yazdığım gibi bu yapılandırmayı koymak istiyorum.dir-locals.el
4lex1v

Mermi ayarını yine bir .dir-locals.el dosyasında yapılandırabilirsiniz. Ancak, bu eylemlerden birini gerçekleştirene kadar dosyayı yükledikten sonra uyarı almaya devam edeceksiniz. 2'nci denedin mi? Bu kod, init dosyanızdaki 'var yerine mermi-global olarak yok sayılan dizinler' yerine, .dir-locals.el yüklendiğinde uyarıları engellemelidir.
InHarmsWay

Bunu düşünmekle birlikte, çubuğu bir dizeler listesine ayarladığınızdan '#stringp yerine' #listp 'ye ihtiyacınız olabilir.
InHarmsWay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.