Biến màu khai báo


11

Tôi đang tìm kiếm một cách đơn giản để làm cho các emac nhớ về biến khai báo trong một hàm duy nhất trong C / C ++. "Đơn giản", ý tôi là không có gói bên ngoài, chỉ với một số dòng elisp trong tập tin cấu hình.

Cấu hình Emacs mặc định của tôi biến các tên màu thành màu vàng khi khai báo, nhưng hãy để chúng màu trắng khi sử dụng.

char toto; // 'char' is green, 'toto' is yellow

toto = 42; // 'toto' is white

Tôi cũng muốn làm cho mọi "toto" của cùng chức năng / phạm vi được tô màu vàng.

Tôi đã xem xét câu hỏi này nhưng tôi muốn một cái gì đó đơn giản hơn. Tôi cũng đã thử làm một cái gì đó với chế độ khóa phông chữ , nhưng tôi đã không thành công để làm cho một cái gì đó có thể thích ứng với tên biến.

Tôi đã có một ý tưởng cho tên thành viên lớp C ++ (sử dụng mẫu tên), vì vậy tôi chỉ muốn một biến cục bộ khớp ở đây.


3
Điều này có lẽ khó hơn vẻ ngoài của nó. nobugs.org/developer/parsingcpp
wasamasa

8
Tại sao bạn không muốn sử dụng bất kỳ gói nào? Nếu có một gói cung cấp tính năng này, việc cài đặt nó gần như chắc chắn sẽ yêu cầu ít elisp trong cấu hình của bạn hơn là tạo lại tính năng này từ đầu.
Tyler

11
Điều này nghe rất giống color-identifiers-modegói . (Đăng bài này dưới dạng nhận xét vì bạn nói rằng bạn không muốn xem xét các gói bên ngoài.)
Aaron Harris

7
Mọi "gói bên ngoài" cũng có thể được mô tả là "một số dòng elisp trong tệp cấu hình". Tránh mã có sẵn trên cơ sở ai đó đã cung cấp nó ở dạng gói là vô lý.
phils

Bạn có phiên bản nào của Emacs?
DA Vincent

Câu trả lời:


1

Bạn có thể tập hợp một regexp cho kế hoạch biến của bạn, điều mà các trận đấu (pseudo code regexp) [char|other|types] [a-z];[a-z] =*;và thêm nó vào danh sách từ khóa font-lock cho chế độ của bạn; Từ hướng dẫn tại trang Tùy chỉnh-Từ khóa :

Ví dụ: đoạn mã sau đây thêm hai mẫu phông chữ cho chế độ C: một để phông chữ từ 'FIXME', ngay cả trong các bình luận và một mẫu khác để phông chữ các từ 'và', 'hoặc' và 'không' làm từ khóa.

 (font-lock-add-keywords 'c-mode
  '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
    ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))

Ví dụ này chỉ ảnh hưởng đến chế độ C thích hợp. Để thêm các mẫu tương tự vào chế độ C và tất cả các chế độ có nguồn gốc từ nó, thay vào đó, hãy làm điều này:

 (add-hook 'c-mode-hook
  (lambda ()
   (font-lock-add-keywords nil
    '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
      ("\\<\\(and\\|or\\|not\\)\\>" .
       font-lock-keyword-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.