Cách tùy chỉnh tô sáng cú pháp cho chỉ một chế độ nhất định


10

Tôi muốn thay đổi cú pháp tô sáng trong tôi lua-mode.elmà không ảnh hưởng đến các chế độ chính khác.

Cũng như một ví dụ, tôi muốn "từ khóa" như if, then, elseđể được ở kiểu chữ đậm và màu xanh trong khi lua-mode(thay vì màu hồng mặc định) mà không cần phải làm nổi bật phong cách tương tự khi chỉnh sửa một .textập tin với AUCTeX.

Cho đến nay tôi đã cố gắng đặt mã sau đây vào .emacsvà sau đó là trong 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")))))

nhưng theo cách này tôi nhận được cùng một cú pháp tô sáng cho mọi chế độ tôi làm việc.

Câu hỏi này có thể liên quan: Thay đổi tô sáng cú pháp mà không thay đổi chế độ chính?

Có một cách (hy vọng đơn giản và chung chung) để làm điều này?

Câu trả lời:


8

Khuôn mặt là toàn cầu vì vậy thay đổi thuộc tính của nó ở bất cứ đâu thay đổi nó ở mọi nơi, như bạn đã nhận thấy. Để thay đổi cục bộ, tạo một bản sao của khuôn mặt, thay đổi các thuộc tính trong bản sao và sau đó sử dụng móc chế độ để đặt cục bộ khuôn mặt cũ thành bản sao trên cơ sở mỗi bộ đệm. Mẫu dưới đây thực hiện font-lock-comment-face, nhưng cùng một câu thần chú sẽ hoạt động cho bất kỳ khuôn mặt nào.

(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)            
            ))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.