Thêm các biểu thức này vào số .emacs
hoặc đánh giá chúng bằng M-:
.
sizeof (đó là dễ dàng hơn trong hai trường hợp)
Các regex nhấn mạnh bất kỳ sự kết hợp (thể hiện bằng các biểu hiện khung [...]
; về cú pháp, xin vui lòng xem lưu ý dưới đây) của chữ và số, khoảng trắng và dấu hoa thị trong ngoặc và trước bởi sizeof
.
(font-lock-add-keywords 'c++-mode
'(("\\<sizeof[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
1 font-lock-type-face t)))
Số 1
nói với emacs chỉ làm nổi bật subexpression đầu tiên (đánh dấu bằng \\(...\\)
) bằng cách sử dụng mặt font-lock-type-face
; t
có nghĩa là ghi đè bất kỳ đánh dấu nào trước đó.
Bạn có thể xem và thay đổi các khuôn mặt hiện có với M-x customize group [RET] font-lock-faces [RET]
.
C++ phong cách phôi
Tôi không chắc chắn mà typename bạn muốn được đánh dấu – các “ gốc ” hoặc một đến đúc thành. Điểm đánh dấu này đánh dấu cả hai:
(font-lock-add-keywords 'c++-mode
'(("\\<[[:alnum:]]+_cast[[:space:]]*<\\([[:alnum:][:space:]*]+\\)>[[:space:]]*(\\([[:alnum:][:space:]*]+\\))"
(1 font-lock-type-face t)
(2 font-lock-type-face t))))
Một lần nữa, '1 and
2` chọn các biểu thức con tương ứng.
Xin lưu ý: Các regexes cho các tên tệp không hoàn toàn phù hợp với cú pháp C++. Ví dụ, emacs sẽ vui vẻ làm nổi bật những điều vô nghĩa như sizeof(int * 32)
.
Ngoài ra, giải pháp của tôi không tính đến vấn đề mà Pavel đã đề cập trong nhận xét về câu hỏi của bạn; bạn cũng có thể sử dụng sizeof
trên các biến số cần phải làm nổi bật khác nhau. Tôi không nghĩ rằng điều này có thể, thiếu triển khai một trình phân tích cú pháp C hoàn chỉnh trong mã khóa phông chữ.
Nguồn
2009-12-23 23:50:47
ý của bạn là "đánh dấu đúng"? Bạn có muốn tên tập tin được đánh dấu giống như kiểu tên khi khai báo một biến, hay điều này có một số cách "thích hợp" khác mà bạn muốn nó được đánh dấu? – Andrew
Tôi muốn tên được đánh dấu là khi khai báo một biến, có. –
Cho rằng, trong 'sizeof (X)', nó hoàn toàn phụ thuộc vào ngữ cảnh cho dù X là một kiểu hay một biến, bạn muốn nó chính xác như thế nào? –