คำถามติดแท็ก directory-local-variables


2
ฉันจะตั้งค่าตัวแปรโลคัลไดเร็กทอรีได้อย่างไรเมื่อเทียบกับตำแหน่งไฟล์. dir-locals.el
ฉันมักจะพบว่าตัวเองอยู่ในสถานการณ์ที่ฉันบอกให้ใส่เส้นทางญาติเป็นตัวแปรไดเรกทอรีท้องถิ่น ยกตัวอย่างเช่นCMake-IDE 's และcmake-ide-project-dir cmake-ide-build-dirแน่นอนว่านี่ไม่ใช่พกพามาก ดังนั้นแทนที่จะ .dir-locals.el: ((nil . ((cmake-ide-project-dir . "/home/user/code/project")))) ฉันต้องการบางสิ่งบางอย่าง ((nil . ((cmake-ide-project-dir . directory-of-current-dir-locals-file)))) ฉันจะกำหนดตัวแปรเช่นนี้ได้directory-of-current-dir-locals-fileอย่างไร? และวิธีการที่ฉันจะตั้งค่าสำหรับตัวอย่างcmake-ide-build-dirซึ่งเป็นปกติ(concat directory-of-current-dir-locals-file "build")?

2
จำการอนุญาตให้เรียกใช้ตัวแปรท้องถิ่นที่มีความเสี่ยง
ในหลายโครงการของฉันฉันใช้.dir-locals.elไฟล์เพื่อตั้งค่าตัวแปรเฉพาะโครงการเช่นคำสั่งคอมไพล์ เมื่อเปิดไฟล์ภายในไดเรกทอรีที่มีไฟล์ดังกล่าวให้emacsร้องเรียนเกี่ยวกับ"ตัวแปรในเครื่องที่มีความเสี่ยง"โดยเฉพาะ: The local variables list in $DIR$/ contains variables that are risky (**) Do you want to apply it? You can type y -- to apply the local variables list. n -- to ignore the local variables list. ** LaTeX-command : "lualatex -shell-escape" ฉันไม่ต้องการปิดคุณสมบัตินี้ แต่ฉันต้องการให้ถามเพียงครั้งเดียว (ในระหว่างเซสชัน emacs) สำหรับ.dir-locals.elไฟล์เฉพาะ ฉันกำลังใช้ปลั๊กอินบางตัวที่ต้องการแยกวิเคราะห์ทรีทรีทรีทั้งหมดและมันค่อนข้างน่ารำคาญที่จะตีyหลายร้อยครั้งเพื่อแยกวิเคราะห์ทุกอย่าง …

1
ทำเครื่องหมายตัวแปรโลคัลที่ปลอดภัยสำหรับค่าใด ๆ
ตัวแปรsafe-local-variable-valuesสามารถเก็บคู่ชื่อ / ค่าที่ปลอดภัยเหมือน file-local หรือ directory-local อย่างไรก็ตามบางครั้งฉันต้องการที่จะบอกว่าค่าใด ๆ ที่ถูกต้องสำหรับตัวแปรที่กำหนด หน้าคู่มือฉันเชื่อมโยงกับบอกว่าค่าจำนวนเต็มใด ๆ fill-columnที่ถือว่าปลอดภัยสำหรับ มีวิธีทำเช่นนี้สำหรับตัวแปรของฉันเองหรือไม่?

1
เชื่อถือ. dir-locals.el
ฉันต้องการที่จะนำการตั้งค่าบางอย่างออกไปข้างนอกinit.elไฟล์ของฉัน.dir-locals.elคือต่อไปนี้: ((nil (let ((dirs '(".cask" "core" "packages" "modules" "snippets" "themes"))) (mapc #'(lambda (path) (add-to-list 'projectile-globally-ignored-directories path)) dirs)))) แต่ทุกครั้งที่ฉันพยายามเปิดไฟล์ใด ๆ ใน.emacs.dโฟลเดอร์ของฉันemacs จะถามฉันว่าจะใช้รหัสนี้หรือไม่ ฉันพยายามเงียบโดยการตั้งค่า vars เฉพาะไฟล์: ;; -*- enable-local-variables: t; enable-local-eval: t -*- และมันก็ไม่ได้ช่วยอะไรเลยในทางกลับกันก็เพิ่มข้อความอีกอันให้ไว้วางใจการตั้งค่าในท้องถิ่น ฉันจะทำให้มันเชื่อถือ.dir-locals.elรหัสของฉันได้อย่างไร

1
พา ธ ของไฟล์ถูกแมปไปยังไดเรกทอรีย่อยอย่างไรใน. dir-locals.el
.dir-locals.elผมชอบความคิดของ ฉันมี.dir-locals.elไฟล์ของตัวเองในโฮมไดเร็กตอรี่ที่ควรตั้งค่าตัวแปรทั้งหมด.dir-locals.elสำหรับไดเร็กตอรี่/ ไฟล์ที่ฉันเปิดยกเว้นว่าจะใกล้กับไดเรคทอรีที่ฉันเปิดไฟล์เข้าไป. ถึงแม้ว่าไฟล์นั้นจะรู้จัก นำไปใช้กับไฟล์ที่เปิด นี่คือของฉัน~/.dir-locals.el: (("dev/school" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) ("dev/test" . ((indent-tabs-mode . nil) (c-basic-offset . 4))) (c-mode . ((c-file-style . "linux") (c-basic-offset . 8)))) เมื่อฉันเปิดแฟ้ม~/dev/test/test.cตัวแปรindent-tabs-modeมีการตั้งค่าtและเป็นc-basic-offset8 (describe-variable 'c-basic-offset)ในแฟ้มที่บอกฉันว่ามันมีการตั้งค่าจาก8~/.dir-locals.el (describe-variable 'indent-tabs-mode)ในไฟล์นั้นบอกว่ามันคุ้มค่า ( t) เป็นเพียงแค่ในสถานะเริ่มต้น ฉันสามารถทำพฤติกรรมที่ต้องการได้หรือไม่? ผมทำอะไรผิดหรือเปล่า? พา ธ ของไฟล์ถูกแมปไปยังไดเรกทอรีย่อย~/.dir-locals.elอย่างไร แก้ไข: ตามที่โจนาธานแนะนำฉันก็ลองทำเช่นกัน: (;; dev/school subdir ("dev/school" . …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.