2008-09-18 44 views
7

Tôi đang viết trình chỉnh sửa bằng cách sử dụng Scintilla.Làm cách nào để đánh dấu văn bản trong Scintilla?

Tôi đã sử dụng lexer để làm nổi bật cú pháp tự động nhưng bây giờ tôi muốn đánh dấu kết quả tìm kiếm. Nếu tôi muốn đánh dấu chỉ một lần truy cập, tôi có thể đặt lựa chọn ở đó, tuy nhiên, tôi muốn đánh dấu (ví dụ: với nền màu vàng) tất cả các lần truy cập.

Tôi viết điều này trong Perl nhưng nếu bạn có đề xuất bằng các ngôn ngữ khác cũng sẽ rất tuyệt.

Trả lời

2

Trình chỉnh sửa tập lệnh "mẫu" sử dụng tính năng dấu trang để đánh dấu tất cả các dòng khớp với kết quả tìm kiếm.

9

Bạn đã đọc Markers reference in Scintilla doc chưa? Tham chiếu này có thể hơi tối nghĩa, vì vậy tôi khuyên bạn cũng nên xem mã nguồn của SciTE. Trình soạn thảo văn bản này ban đầu là một thử nghiệm cho Scintilla. Nó phát triển thành một trình soạn thảo chính thức, nhưng nó vẫn là một tài liệu tham khảo thực hiện tốt cho tất cả mọi thứ Scintilla.

Trong trường hợp cụ thể của chúng tôi, có nút Đánh dấu tất cả trong hộp thoại Tìm. Bạn có thể tìm thấy nó trong phương thức SciTEBase :: MarkAll(). Phương thức này chỉ lặp lại trên các kết quả tìm kiếm (cho đến khi nó lặp lại trên kết quả tìm kiếm đầu tiên, nếu có) và đặt một dấu trang trên các dòng tìm thấy (và tùy chọn thiết lập chỉ báo trên các mục tìm thấy). Dòng tìm thấy được nhận bằng cách sử dụng SCI_LINEFROMPOSITION (posFound), dấu trang chỉ là một cuộc gọi đến SCI_MARKERADD (lineno, markerBookmark). Lưu ý rằng dấu có thể là ký hiệu ở lề, hoặc nếu không được liên kết với lề, nó sẽ làm nổi bật toàn bộ dòng.

HTH.

1

Tôi đã sử dụng Indicators để làm nổi bật kết quả tìm kiếm.

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