วิธีกำหนดไฮไลต์ไวยากรณ์เองสำหรับโหมดที่กำหนด


10

ฉันต้องการเปลี่ยนการเน้นไวยากรณ์ในของฉันlua-mode.elโดยไม่กระทบโหมดหลักอื่น ๆ

เพียงเป็นตัวอย่างที่ฉันต้องการ "คำสำคัญ" ชอบif, then, elseที่จะอยู่ในอักษรตัวหนาและสีฟ้าเมื่ออยู่ในlua-mode(แทนที่จะเป็นสีชมพูเริ่มต้น) โดยไม่ต้องมีการเน้นรูปแบบเดียวกันในขณะที่แก้ไข.texไฟล์ที่มี AUCTeX

จนถึงตอนนี้ฉันได้พยายามใส่รหัสต่อไปนี้ในของฉัน.emacsและจากนั้นในlua-mode.el:

(custom-set-faces
  '(font-lock-builtin-face ((t (:foreground "maroon3"))))
  '(font-lock-comment-face ((t (:foreground "green4"))))
  '(font-lock-keyword-face ((t (:foreground "dark blue" :weight bold))))
  '(font-lock-string-face ((t (:foreground "dark cyan")))))

แต่วิธีนี้ฉันได้รับการเน้นไวยากรณ์เดียวกันสำหรับทุกโหมดที่ฉันทำงานด้วย

คำถามนี้อาจเกี่ยวข้อง: เปลี่ยนการเน้นไวยากรณ์โดยไม่ต้องเปลี่ยนโหมดหลักหรือไม่

มีวิธี (หวังว่าง่ายและทั่วไป) ในการทำเช่นนี้?

คำตอบ:


8

ใบหน้าเป็นสากลดังนั้นการเปลี่ยนคุณลักษณะของมันจะเปลี่ยนแปลงได้ทุกที่ตามที่คุณสังเกตเห็น ในการเปลี่ยนเฉพาะที่ให้ทำสำเนาใบหน้าเปลี่ยนคุณสมบัติในการคัดลอกจากนั้นใช้โหมดเบ็ดเพื่อตั้งค่าใบหน้าเก่าเป็นการคัดลอกบนพื้นฐานต่อบัฟเฟอร์ ตัวอย่างด้านล่างใช้สำหรับfont-lock-comment-faceแต่คาถาเดียวกันจะใช้ได้กับทุกหน้า

(make-variable-buffer-local 'font-lock-comment-face)
(copy-face 'font-lock-comment-face 'lua-comment-face)
(set-face-foreground 'lua-comment-face "green4")

(add-hook 'lua-mode-hook
          (lambda ()
            (setq font-lock-comment-face 'lua-comment-face)            
            ))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.