public ISelectedRange GetSelectedRange(IPsiSourceFile sourceFile, DocumentRange documentRange) { (IT4File t4File, IFile codeBehindFile) = GetFiles(sourceFile, documentRange); ITreeNode t4Node = t4File?.FindNodeAt(documentRange); if (t4Node == null) { return(null); } // if the current selection is inside C# code, use the C# extend selection directly if (codeBehindFile != null) { ISelectEmbracingConstructProvider codeBehindProvider = PsiShared.GetComponent <PsiProjectFileTypeCoordinator>() .GetByPrimaryPsiLanguageType(codeBehindFile.Language) .SelectNotNull(fileType => Shell.Instance.GetComponent <IProjectFileTypeServices>().TryGetService <ISelectEmbracingConstructProvider>(fileType)) .FirstOrDefault(); ISelectedRange codeBehindRange = codeBehindProvider?.GetSelectedRange(sourceFile, documentRange); if (codeBehindRange != null) { return(new T4CodeBehindWrappedSelection(t4File, codeBehindRange)); } } return(new T4NodeSelection(t4File, t4Node)); }
public T4CodeBehindWrappedSelection([NotNull] IT4File file, [NotNull] ISelectedRange codeBehindRange) { _file = file; _codeBehindRange = codeBehindRange; }