จำการอนุญาตให้เรียกใช้ตัวแปรท้องถิ่นที่มีความเสี่ยง


15

ในหลายโครงการของฉันฉันใช้.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หลายร้อยครั้งเพื่อแยกวิเคราะห์ทุกอย่าง

ดังนั้นคำถามจริง:

สามารถemacs'กลไกการโหลดท้องถิ่นตัวแปรได้รับการกำหนดค่า / การปรับเปลี่ยนดังกล่าวว่าจะช่วยให้การอนุญาต / ปฏิเสธโหลดเฉพาะรายการตัวแปรท้องถิ่นเพื่อความสมบูรณ์ของนั้นemacsเซสชั่น?

คำตอบ:


7

Emacs ควรเสนอตัวเลือกการยอมรับและจดจำตัวเลือกสำหรับเซสชันในภายหลัง ฉันแนะนำคุณM-x report-emacs-bugเกี่ยวกับตัวเลือกที่ขาดหายไปในกรณีของคุณ

ในระหว่างนี้คุณสามารถเพิ่มสิ่งต่อไปนี้ใน~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))

4
ไม่มีตัวเลือกให้จำไม่ใช่ข้อผิดพลาดมันเป็นเจตนาสำหรับตัวแปรที่มีความเสี่ยง หากตัวแปรไม่อยู่ในรายการที่ปลอดภัยแล้ว Emacs จะรายงานว่าอาจไม่ปลอดภัยและพร้อมท์ด้วยตัวเลือก y / n รวมทั้ง! เพื่อจำ หากชื่อตัวแปรตรงกับ regex ที่แน่นอนก็ถือว่ามีความเสี่ยงและคุณจะได้รับตัวเลือก y / n เท่านั้น Regex สำหรับการพิจารณาว่ามีบางสิ่งที่มีความเสี่ยงหรือไม่อยู่ใน files.el ที่github.com/emacs-mirror/emacs/blob/…
Dan Midwood

อาจจะทำโดยเจตนา แต่ฉันคิดว่ามันผิดและ OP ดูเหมือนว่าจะตกลงดังนั้นฉันคิดว่าสมควรได้รับรายงานข้อผิดพลาด
สเตฟาน

2

คุณสามารถปิดการใช้งานคุณลักษณะ"อย่าจำตัวแปรที่มีความเสี่ยง"โดยใส่สิ่งต่อไปนี้ใน~/.emacs:

;; allow remembering risky variables
(defun risky-local-variable-p (sym &optional _ignored) nil)

จากนั้นจะยืนยันอีกครั้งเมื่อคุณแก้ไข


1
นอกจากนี้คุณยังสามารถทำ(advice-add 'risky-local-variable-p :override #'ignore)ซึ่งมีความได้เปรียบของการเป็น undoable advice-removeผ่าน
npostavs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.