ฉันต้องการตรวจสอบว่าบัฟเฟอร์ (พูด, ปัจจุบัน) บางอย่างกำลังเยี่ยมชมไฟล์หรือไม่ ฉันสามารถพูดได้:
(if (buffer-file-name) ...)
แต่ดูเหมือนจะไม่สง่างามมาก - สิ่งที่ฉันสนใจเป็นเพียงค่าบูลีนไม่ใช่ชื่อจริงของบัฟเฟอร์ที่มีปัญหา หากbuffer-file-name
ฟังก์ชั่นนั้นเขียนขึ้นใน Elisp ฉันสามารถดูที่มาของมันเพื่อค้นหาว่ามันใช้อะไร - แต่มันเขียนใน C และในขณะที่ฉันสามารถติดตั้ง Emacs ได้ฉันกลัวว่าจะไม่พบชื่อ elisp สำหรับฟังก์ชั่นที่ตรวจสอบสิ่งที่ฉันหลังจากนั้น
สิ่งที่ฉันต้องการมันคือฉันต้องการสร้างไดเรกทอรีตามชื่อไฟล์บัฟเฟอร์ปัจจุบันและตอนนี้ฉันกำลังทำสิ่งนี้ไม่มากก็น้อย:
(make-directory (if (buffer-file-name) (file-name-base) "default-dir"))
ดังนั้นสิ่งที่เป็นวิธีการ Elisp - สำนวนในการทำเช่นนี้?
(and (buffer-file-name) t)
ดูแปลก ๆ
(if (buffer-file-name) ... )
สง่างามคุณจะไม่ได้รับรหัสที่มีความยาวมาก มันน่าเกลียดจากที่นี่เท่านั้น
buffer-file-name
จริงๆมันเป็นวิธีที่ถูกต้อง (ถ้าคุณต้องการจริงๆให้t
ทำ(and (buffer-file-name) t)
แต่นั่นคือ IMO ที่น่าเกลียดกว่า) การนำไปใช้งานคือการอ่านfilename
ฟิลด์ของโครงสร้าง C บัฟเฟอร์ซึ่งไม่สามารถเข้าถึงได้โดยตรงจาก Elisp ในท้ายที่สุดมันเป็นเพียงตัวชี้ที่เป็นโมฆะหรือไม่