釈然としねぇ…。

IDocumentPartitionerによって、
必死でパーティションされた内容は逐次的に破棄されてる様な…。
少なくとも特定のスレッド内っつうかさ、入力補完とか、その手のイベントを発行するスレッド内では、当該パーティションどっかに持っててもエエやん…。


と言うわけで、入力補完の為に、offset位置が含まれるパーティション部分を、割り出すコード。
主に、未来の自分用。
このコードだとパーティショナーが、連続して2回動く事になるので、
巨大なドキュメントを相手にすると、アレでナニな事が起こる可能性アリ。

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,int offset) {
    try {
        IDocument doc = viewer.getDocument();
        ITypedRegion region = doc.getPartition(offset);
        String s = doc.get(region.getOffset(), region.getLength());
    } catch (BadLocationException e) {
        e.printStackTrace();
    }
}

只、ダメージャーとか、リペアラーと、たけぞうさんのFuzzyXMLを組み合わせて、
IDocumentが抱えてる文字列情報と、FuzzyXMLのDocumentモデルを二重管理しながら、
同期して入力補完頑張るってのも、それなりに悪くないカモ…とか。


そもそも、XMLみたいにパーティションが難しいエディタじゃなくて、
Propertiesファイル位、パーティションが簡単なエディタから作れって話もありますが…。