คำถามติดแท็ก defvar

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 สามารถใช้เหมือนกับตัวแปรอื่น ๆ …

1
ความแตกต่างระหว่าง setq และ defvar คืออะไร
ความแตกต่างระหว่างsetqและdefvarใน Emacs เสียงกระเพื่อมคืออะไร? ผมเห็นรุ่นกระเพื่อมทั่วไปของคำถามเดียวกันที่/programming/3855862 พวกเขาเหมือนกันใน Elisp หรือไม่
14 defvar  setq 

3
เหตุใดการกำหนดขอบเขตของ defvar จึงแตกต่างกันโดยไม่มีค่าเริ่มต้น
สมมติว่าฉันมีชื่อไฟล์elisp-defvar-test.elที่มี: ;;; elisp-defvar-test.el --- -*- lexical-binding: t -*- (defvar my-dynamic-var) (defun f1 (x) "Should return X." (let ((my-dynamic-var x)) (f2))) (defun f2 () "Returns the current value of `my-dynamic-var'." my-dynamic-var) (provide 'elisp-dynamic-test) ;;; elisp-defvar-test.el ends here ฉันโหลดไฟล์นี้แล้วไปที่บัฟเฟอร์รอยขีดข่วนและเรียกใช้: (setq lexical-binding t) (f1 5) (let ((my-dynamic-var 5)) (f2)) (f1 5)ส่งคืน 5 ตามที่คาดไว้ซึ่งแสดงว่าเนื้อความของf1ถือmy-dynamic-varเป็นตัวแปรที่กำหนดขอบเขตแบบไดนามิกตามที่คาดไว้ …

4
ฉันสามารถโหลดห้องสมุดใหม่และกำหนดค่า defvar ใหม่ได้หรือไม่
ฉันกำลังพัฒนาห้องสมุดและต้องการโหลดใหม่หลังจากแก้ไขโดยไม่ออกจาก Emacs (สมมติว่าเปิดอยู่load-path): (load-library "myname") เมื่อฉันทำสิ่งนี้ Emacs จะไม่รับการเปลี่ยนแปลงdefvarตัวแปรขาออก ฉันไม่ต้องการโทรeval-defun( C-M-x) ด้วยตนเองในแต่ละแบบฟอร์มระดับบนสุด ไม่M-x eval-bufferเคารพdefvar/ defcustom?
10 variables  defvar 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.