1
`setq-local 'ทำอะไรและฉันควรใช้เมื่อใด
ฉันไม่ชัดเจนเกี่ยวกับรูปแบบทั้งหมดของตัวแปรบัฟเฟอร์ภายในแม้ว่าหลังจากอ่านเอกสารทั้งหมดและการโพสต์มากมายที่นี่ใน SX นี่คือบทสรุปของความเข้าใจของฉัน: (defvar foo ..)ประกาศตัวแปรแบบไดนามิกสำหรับไฟล์ แต่ตัวแปรคือ (1) ไม่รู้จักไฟล์อื่นนอกจากว่าพวกเขาจะมีdefvar คำสั่งเช่นกันและ (2) ตัวแปรนั้นเป็นโกลบอลในขอบเขตไม่ใช่บัฟเฟอร์ในเครื่อง (make-variable-buffer-local foo)หลังจากที่defvarด้านบนบอกคอมไพเลอร์และทุกคนอื่นว่าตัวแปร foo นั้นจะได้รับการปฏิบัติเสมือนบัฟเฟอร์ในทุก ๆ ที่มันถูกตั้งค่าเมื่อมันถูกตั้งค่า ดังนั้นรูปแบบนี้เป็นรูปแบบที่ดีสำหรับการประกาศตัวแปรบัฟเฟอร์ในเครื่องโดยวางทั้งสองข้อความกลับไปด้านหลัง (defvar xxx ...) ;declare xxx with global scope (make-variable-buffer-local 'xxx) ;but now make it buffer-local everywhere เพื่อความสะดวก(defvar-local xxx ...)แบบฟอร์มสามารถใช้เป็นหนึ่งบรรทัดแทนที่สองบรรทัดด้านบน: (defvar-local xxx ...) ;make xxx buffer local everywhere เมื่อประกาศไว้ข้างต้นตัวแปร xxx สามารถใช้เหมือนกับตัวแปรอื่น ๆ …