Tôi muốn ghép Công cụ SyntaxHighlighting của AvalonEdit. Tôi có 2 HighlightingDefinitions
. Đầu tiên là cú pháp chính. Cách thứ hai là một ngôn ngữ đánh dấu tiền xử lý phức tạp. Vì lý do này, quá phức tạp khi đặt ngữ pháp thứ hai trong ngữ pháp thứ nhất. Cách dễ dàng hơn là hiển thị cú pháp đầu tiên và thay đổi các phần dòng bị ảnh hưởng (dựa trên cú pháp thứ hai) sau đó.AvalonEdit: Cascading HighlightingColorizers
Vì vậy, tôi đã tạo một mới HighlightingColorizer
bằng ngôn ngữ thứ hai và thêm nó vào LineTransformers
. Nhưng ngôn ngữ thứ hai colorizes các tài liệu hoàn chỉnh và không chỉ các lineparts với các preprocessor-chỉ thị: không tiền xử lý-mã là màu đen.
Khi tôi sửa lỗi ColorizeLine
-phương sai của biến thế dòng thứ hai, các dòng của mã không được đánh dấu (= không có mã tiền xử lý) chưa được tô màu, như mong đợi. Nhưng màu sắc của các đường màu đen.
Vì vậy, việc HighlightingColorizer
đặt lại tất cả đánh dấu trước đó của toàn bộ tài liệu trước khi bắt đầu tô màu?
Hoặc vấn đề khác có thể là gì? Làm thế nào tôi có thể cascade 2 HighlightingColorizers
?
Tôi đã làm việc một chút với AvalonEdit- và IIRC nó sẽ đặt lại tất cả làm nổi bật khi bạn áp dụng một bộ chỉnh màu khác. Cách tốt nhất xung quanh việc này là cố gắng nhúng lại ngữ pháp thứ hai trong lần đầu tiên thất bại mà bạn sẽ phải gây rối với codebase của AvalonEdit để thay đổi cách diễn giải và áp dụng lại lược đồ màu.Sau này có lẽ sẽ không tầm thường như tôi không nghĩ rằng nó sẽ dễ dàng như một 'bình luận về việc thiết lập lại' hoặc một cái gì đó như thế. –
@Xeno nằm ngay tại đây. Bạn chắc chắn sẽ phải chỉnh sửa cơ sở mã nếu bạn không muốn sử dụng các tệp định nghĩa XML. Tuy nhiên, tôi không chắc chắn lý do tại sao bạn không muốn làm điều này - họ có thể miễn là bạn muốn và có thể được sử dụng để tô màu các chi tiết nhỏ. Tôi vừa viết một tập tin để làm một điều simalar với SQL nhúng; nó rất nhanh và hoạt động tốt ... – MoonKnight