2013-04-06 27 views
5

Vì vậy, tôi đã cố gắng tìm hiểu cách thêm đánh dấu cú pháp cho tên của các tệp c + typedef trong văn bản tuyệt vời.Làm nổi bật cú pháp trong văn bản siêu phàm 2

Ví dụ, nếu tôi có typedef long long integer; Tôi muốn integer để được đánh dấu (tốt nhất là màu sắc tương tự như các loại khác: int, bool, vv). Tôi đã đi xem tệp C.tmLanuage và cố gắng thêm mã regex sau ^typedef.*?\s(\w+)\s*; vào storage.type.c (dòng 49), nhưng nó không hoạt động. Nếu tôi thêm từ string, nó sẽ làm nổi bật tất cả các trường hợp của chuỗi từ. Tôi đã cố gắng đi vào tập tin tmLanguage C++, và thêm mã regex vào storage.type.c++, nhưng nó vẫn không hoạt động.

Có ai biết cách làm nổi bật văn bản tuyệt vời trong văn bản tuyệt vời của typedef không?

Ngoài ra, có cách nào để làm nổi bật cú pháp cho tên lớp không? Giả sử tôi tuyên bố một số string hoặc vector, tôi muốn hoặc là string hoặc vector để được đánh dấu.

Trả lời

2

Regex đó sẽ hoạt động (tôi tin) nếu bạn có thứ gì đó dọc theo các dòng typedef foo; Để có được hành vi bạn muốn, bạn sẽ phải tạo một mục mẫu phức tạp hơn một chút trong tệp tmLanguage. Vì tệp ngôn ngữ được dựa trên TextMates, bạn sẽ muốn có điều này dưới dạng tham chiếu (http://manual.macromates.com/en/language_grammars#language_grammars). Tôi cũng khuyên bạn nên sử dụng PlistJsonConverter (làm việc trong JSON dễ dàng hơn cho tôi hơn là làm việc trong XML). Có thể bạn sẽ cần xác định mẫu bắt đầu và kết thúc (bắt đầu có thể là typedef kết thúc có thể là ;). Sau đó, bạn có thể áp dụng bất kỳ mẫu nào bạn muốn cho nhóm đó.

Đối với đánh dấu tên lớp, tôi sẽ xem xét điều gì sẽ xảy ra nếu áp dụng bất kỳ phạm vi nào. Nếu không có, bạn sẽ phải đưa ra một regex để áp dụng phạm vi cho những người. Sau đó, bạn có thể thêm mục nhập màu hoặc sử dụng mục được xác định từ bảng màu.

Edit:

Trên thực tế họ không xuất hiện được JSON. Tôi thấy () thay vì []. JSON khá đơn giản để hiểu. Bạn có thể tìm kiếm một cái gì đó sâu hơn, nhưng wikipedia là một nơi tốt để bắt đầu. Những gì bạn có thể sẽ quan tâm là những thứ trong phần "Quy tắc Keys". Tôi đã làm một số tìm kiếm (bởi vì tôi biết có một số ví dụ tốt hơn trên mạng), và đi qua http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html. Nó đi qua các định nghĩa cú pháp từ đầu, nhưng phần có liên quan nhất có lẽ là http://docs.sublimetext.info/en/latest/extensibility/syntaxdefs.html#analyzing-patterns. Tôi không có một regex để tìm tên lớp, vì vậy bạn sẽ phải đi lên với một mình. Nếu bạn chưa có, bạn có thể muốn tìm kiếm xung quanh để xem liệu có ai đó đã triển khai tệp ngôn ngữ theo cách phù hợp với bạn hay không.

Bạn sẽ muốn bắt đầu với tệp tmLanguage được xây dựng và chuyển đổi từ một Plist thành json. Sau đó, bạn có thể chỉnh sửa tệp đó và di chuyển nó trở lại.

+0

Tôi không quen với JSON, nhưng ngữ pháp ngôn ngữ trong liên kết bạn đã cho tôi viết bằng JSON chưa? Nếu vậy, bạn có nói rằng tôi viết một cái gì đó tương tự như những gì được viết trong các liên kết và sau đó chuyển đổi nó bằng cách sử dụng bộ chuyển đổi? Tôi có nên đặt chuyển đổi trong tệp .tmLanguage không? Ngoài ra, tên lớp không có regex, vì vậy làm thế nào sẽ đi về việc tạo ra một regex để áp dụng một phạm vi cho những người? – OGH

+0

Mở rộng câu trả lời của tôi vì nó cảm thấy lâu để nhận xét. – skuroda

Các vấn đề liên quan