7

Scintillaを使用してエディターを作成しています。

すでにレクサーを使用して自動構文強調表示を行っていますが、検索結果にマークを付けたいと考えています。ヒットを 1 つだけマークしたい場合は、そこで選択を設定できますが、すべてのヒットを (たとえば、黄色の背景で) マークしたいと考えています。

私はこれを Perl で書いていますが、他の言語での提案があれば、それもクールです。

4

3 に答える 3

9

Scintilla doc のマーカーのリファレンスを読みましたか? このリファレンスは少しわかりにくいので、SciTE のソース コードも参照することをお勧めします。このテキスト エディターは、もともと Scintilla のテストベッドでした。本格的なエディターに成長しましたが、それでも Scintilla のすべての優れた実装リファレンスです。

この特定のケースでは、[検索] ダイアログに [すべてマーク] ボタンがあります。その実装は SciTEBase::MarkAll() メソッドにあります。このメソッドは、検索結果のみをループし (最初の検索結果があればループするまで)、見つかった行にブックマークを付けます (オプションで、見つかった項目にインジケーターを設定します)。見つかった行は SCI_LINEFROMPOSITION(posFound) を使用して取得され、ブックマークは SCI_MARKERADD(lineno, markerBookmark) への単なる呼び出しです。マークは余白のシンボルにすることができますが、余白に関連付けられていない場合は、行全体が強調表示されることに注意してください。

HTH。

于 2008-09-18T13:59:19.770 に答える
2

「サンプル」エディター scite はブックマーク機能を使用して、検索結果に一致するすべての行をブックマークします。

于 2008-09-18T13:48:41.400 に答える
1

インジケーターを使用して検索結果を強調表示しました。

于 2011-01-31T18:05:43.117 に答える