0

私は Scintilla (実際には ScintillaNET ですが、バニラの Scintilla に関する情報も役立つ可能性があります) を使用してテキスト エディターを作成しています。このエディターでは、変更情報を余白に表示したいと考えています (たとえば、テキスト行を変更すると、その行には自分の名前が余白に表示されます)。行の変更時にマージンを変更することができましたが、誰かが変更を元に戻した場合にマージンの変更を元に戻す良い方法がわかりません。

BeforeTextInsert イベントで BeginUndoAction を呼び出し、TextInserted イベントの最後で EndUndoAction を呼び出してみましたが、マージンの変更を元に戻すことができないようです。マージンの変更を元に戻す適切な方法はありますか? 独自の小さなマージン取り消しスタックを実装する (または Scintilla の取り消しスタックを変更する) 必要があるかもしれないと考えています。

4

1 に答える 1

0

先に進み、マージンの変更を保存するために独自の元に戻すスタックを作成しました。テキストが変更されていて、元に戻さない場合は、変更されたテキスト、開始位置、行数、および文字列のリスト (変更された各行のマージン テキスト) を追加します。変更があり、それが元に戻す場合は、スタックの最初の項目を確認し、位置と変更されたテキストが同じ場合は、マージンを元の値に戻します。

私が望むよりも少し醜いですが、うまくいくようです。スタックが何らかの形で Scintilla の元に戻すスタックと同期しなくなるのではないかと心配していますが、Scintilla のソースを変更するつもりはありません。

于 2010-11-11T19:37:37.543 に答える