釈然としねぇ…。
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ファイル位、パーティションが簡単なエディタから作れって話もありますが…。