Scintillaを使用してエディターを作成しています。
すでにレクサーを使用して自動構文強調表示を行っていますが、検索結果にマークを付けたいと考えています。ヒットを 1 つだけマークしたい場合は、そこで選択を設定できますが、すべてのヒットを (たとえば、黄色の背景で) マークしたいと考えています。
私はこれを Perl で書いていますが、他の言語での提案があれば、それもクールです。
Scintilla doc のマーカーのリファレンスを読みましたか? このリファレンスは少しわかりにくいので、SciTE のソース コードも参照することをお勧めします。このテキスト エディターは、もともと Scintilla のテストベッドでした。本格的なエディターに成長しましたが、それでも Scintilla のすべての優れた実装リファレンスです。
この特定のケースでは、[検索] ダイアログに [すべてマーク] ボタンがあります。その実装は SciTEBase::MarkAll() メソッドにあります。このメソッドは、検索結果のみをループし (最初の検索結果があればループするまで)、見つかった行にブックマークを付けます (オプションで、見つかった項目にインジケーターを設定します)。見つかった行は SCI_LINEFROMPOSITION(posFound) を使用して取得され、ブックマークは SCI_MARKERADD(lineno, markerBookmark) への単なる呼び出しです。マークは余白のシンボルにすることができますが、余白に関連付けられていない場合は、行全体が強調表示されることに注意してください。
HTH。
「サンプル」エディター scite はブックマーク機能を使用して、検索結果に一致するすべての行をブックマークします。
インジケーターを使用して検索結果を強調表示しました。