Dans ma classe classificateur J'ai une méthode contenant le code ci-dessous:SDK Visual Studio - GetClassificationSpans ne soit pas appelé
var handler = ClassificationChanged;
if (handler != null)
{
IVsTextManager textManager = (IVsTextManager)ServiceProvider.GlobalProvider.GetService(typeof(SVsTextManager));
IVsTextView vTextView = null;
int mustHaveFocus = 1;
textManager.GetActiveView(mustHaveFocus, null, out vTextView);
IVsUserData userData = vTextView as IVsUserData;
if (userData != null)
{
IWpfTextViewHost viewHost;
object holder;
Guid guidViewHost = DefGuidList.guidIWpfTextViewHost;
userData.GetData(ref guidViewHost, out holder);
viewHost = (IWpfTextViewHost)holder;
IWpfTextView textView = viewHost.TextView;
ITextSnapshot textSnapshot = textView.TextSnapshot;
SnapshotSpan span = new SnapshotSpan(textSnapshot, 0, textSnapshot.Length);
var eventArgs = new ClassificationChangedEventArgs(span);
handler(this, eventArgs);
}
}
Quand j'appelle ma méthode, GetClassificationSpans ne soit pas appelé. Je ne comprends pas pourquoi. Y a-t-il quelque chose que je fasse mal? Comment puis-je forcer Visual Studio à appeler GetClassificationSpans et à réappliquer des formats de classification au code lorsqu'aucune modification n'a eu lieu?
'GetClassificationSpans' de quelle instance? Êtes-vous sûr qu'il s'applique à TextBuffer/ContentType? – SLaks
@SLaks J'ai fait une erreur dans la première phrase. Cette méthode illustrée ci-dessus fait partie de ma classe ** classifier ** (implémentation de l'interface IClassifier) et la méthode GetClassificationSpans est dans la même classe. –
Êtes-vous sûr d'avoir le bon tampon? – SLaks