ฉันมีใบหน้าสร้างด้วยวิธีนี้:
(defface test-face
'((t . (:height 2.0)))
"A face for testing.")
ฉันต้องการแทรกข้อความด้วยใบหน้านั้น แต่วิธีเหล่านี้แทรกข้อความโดยไม่มีใบหน้า:
(insert (propertize "text to insert" 'face 'test-face))
(let ((current-string "text to insert"))
(put-text-property 1 (length current-string) 'face 'test-face)
(insert current-string))
และแม้แต่การแทรกข้อความก่อนจากนั้นกลับไปใส่หน้ามันไม่ทำงาน:
(progn
(insert "text to insert")
(add-text-properties
(save-excursion
(backward-word 3)
(point))
(point)
'(face test-face)))
ปัญหาไม่ได้เป็นคำจำกัดความของหน้าเพราะถ้าฉันไปปรับแต่งมันก็แสดงให้เห็นแล้วด้วยความสูงเป็นสองเท่า ดังนั้นการฝังใบหน้าก็ไม่ได้ผล:
(insert (propertize "to insert" 'face '(:height 2.0)))
ดังนั้นฉันจะใส่ข้อความลงไปด้วยใบหน้าที่เฉพาะเจาะจงได้อย่างไร? ฉันรู้ว่าฉันสามารถใช้การซ้อนทับได้ แต่ดูเหมือนว่าเกินความจริงเพราะมันละเอียดมากขึ้นต้องมีการแทรกข้อความก่อน (ดังนั้นเราต้องหาขนาดและตำแหน่งของข้อความที่จะวางทับ) และต้องทำให้ขยะมากขึ้น เก็บรวบรวม
face
สำหรับการเน้นรหัสทางไวยากรณ์ดังนั้นจึงเป็นการแทนที่คุณสมบัติใบหน้าของคุณ ฉันแน่ใจว่าต้องมีวิธีการปิดใช้งานแบบอักษรสำหรับข้อความที่ระบุ แต่ฉันจะต้องค้นคว้ารหัสเล็กน้อย (ไม่มีเวลาตอนนี้) บางทีการอ่านfont-lock.el
รหัสอาจให้เบาะแส