Hi Will,
I'm sorry but I'm not completely clear on what you are trying to do here.
There is an ICodeDocumentPropertyChangeEventSink language service you can register on your syntax language. That will get notified when the IParseData is changed for a document using the syntax language. If you only care about your other target getting notified of new IParseData results, that might be what you want to use, but it will not pass the original IParseRequest.
If on the other hand, you need more control over everything, you can override our default document.CreateParseRequest method to perhaps change the parse target to some other meta parse target that can notify the normal one and your other class. Here's the default code for that method:
protected virtual IParseRequest CreateParseRequest() {
if (language == null)
return null;
// Ensure the language has a parser
if (language.GetService<IParser>() == null)
return null;
// Get a reader
ITextBufferReader reader = this.CurrentSnapshot.GetMergedBufferReader();
// Create a request
ParseRequest request = new ParseRequest((String.IsNullOrEmpty(this.FileName) ? uniqueId.ToString() : this.FileName), reader, language, this);
request.Snapshot = this.CurrentSnapshot;
request.Tag = languageData;
return request;
}
I hope one of those two options help.