/// <summary> /// The process of generated document commit (in the case of primary document incremental reparse) can be overridden in this method. /// Returns null if full regeneration is required. /// This method is not allowed to do destructive changes due to interruptibility! /// </summary> public override ICollection<IPreCommitResult> ExecuteSecondaryDocumentCommitWork(PrimaryFileModificationInfo primaryFileModificationInfo, CachedPsiFile cachedPsiFile, TreeTextRange oldTreeRange, string newText) { var rangeTranslator = (RangeTranslatorWithGeneratedRangeMap) cachedPsiFile.PsiFile.SecondaryRangeTranslator; if (rangeTranslator == null) return null; TreeTextRange range = rangeTranslator.OriginalToGenerated(oldTreeRange, JetPredicate<IUserDataHolder>.True); DocumentRange documentRange = cachedPsiFile.PsiFile.DocumentRangeTranslator.Translate(range); if (!documentRange.IsValid()) return null; var documentChange = new DocumentChange(documentRange.Document, documentRange.TextRange.StartOffset, documentRange.TextRange.Length, newText, documentRange.Document.LastModificationStamp, TextModificationSide.NotSpecified); return new IPreCommitResult[] { new PreCommitResult(cachedPsiFile.WorkIncrementalParse(documentChange), null, documentChange, null, TextRange.InvalidRange, string.Empty), new FixRangeTranslatorsOnSharedRangeCommitResult(rangeTranslator, null, new TreeTextRange<Original>(oldTreeRange), new TreeTextRange<Generated>(range), newText) }; }
public ICollection<IPreCommitResult> ExecuteSecondaryDocumentCommitWork(PrimaryFileModificationInfo primaryFileModificationInfo, CachedPsiFile cachedPsiFile, TreeTextRange oldTreeRange, string newText) { return null; }
/// <summary> /// The process of generated document commit (in the case of primary document incremental reparse) can be overridden in this method. /// Returns null if full regeneration is required. /// This method is not allowed to do destructive changes due to interruptibility! /// </summary> public override ICollection <IPreCommitResult> ExecuteSecondaryDocumentCommitWork(PrimaryFileModificationInfo primaryFileModificationInfo, CachedPsiFile cachedPsiFile, TreeTextRange oldTreeRange, string newText) { var rangeTranslator = (RangeTranslatorWithGeneratedRangeMap)cachedPsiFile.PsiFile.SecondaryRangeTranslator; if (rangeTranslator == null) { return(null); } TreeTextRange range = rangeTranslator.OriginalToGenerated(oldTreeRange, JetPredicate <IUserDataHolder> .True); DocumentRange documentRange = cachedPsiFile.PsiFile.DocumentRangeTranslator.Translate(range); if (!documentRange.IsValid()) { return(null); } var documentChange = new DocumentChange(documentRange.Document, documentRange.TextRange.StartOffset, documentRange.TextRange.Length, newText, documentRange.Document.LastModificationStamp, TextModificationSide.NotSpecified); return(new IPreCommitResult[] { new PreCommitResult(cachedPsiFile.WorkIncrementalParse(documentChange), null, documentChange, null, TextRange.InvalidRange, string.Empty), new FixRangeTranslatorsOnSharedRangeCommitResult(rangeTranslator, null, new TreeTextRange <Original>(oldTreeRange), new TreeTextRange <Generated>(range), newText) }); }
public ICollection <IPreCommitResult> ExecuteSecondaryDocumentCommitWork(PrimaryFileModificationInfo primaryFileModificationInfo, CachedPsiFile cachedPsiFile, TreeTextRange oldTreeRange, string newText) { return(null); }