/// <summary> /// Processes changes for specific project file and returns a list of corresponding source file changes. /// </summary> /// <param name="projectFile">The project file.</param> /// <param name="changeType">Type of the change.</param> /// <param name="changeBuilder">The change builder used to populate changes.</param> /// <returns>Whether the provider has handled the file change.</returns> internal bool OnProjectFileChanged(IProjectFile projectFile, ref PsiModuleChange.ChangeType changeType, PsiModuleChangeBuilder changeBuilder) { if (!_t4Environment.IsSupported) return false; _shellLocks.AssertWriteAccessAllowed(); ModuleWrapper moduleWrapper; switch (changeType) { case PsiModuleChange.ChangeType.Added: // Preprocessed .tt files should be handled by R# itself as if it's a normal project file, // so that it has access to the current project types. if (projectFile.LanguageType.Is<T4ProjectFileType>() && !projectFile.IsPreprocessedT4Template()) { AddFile(projectFile, changeBuilder); return true; } break; case PsiModuleChange.ChangeType.Removed: if (_modules.TryGetValue(projectFile, out moduleWrapper)) { RemoveFile(projectFile, changeBuilder, moduleWrapper); return true; } break; case PsiModuleChange.ChangeType.Modified: if (_modules.TryGetValue(projectFile, out moduleWrapper)) { if (!projectFile.IsPreprocessedT4Template()) { ModifyFile(changeBuilder, moduleWrapper); return true; } // The T4 file went from Transformed to Preprocessed, it doesn't need a T4PsiModule anymore. RemoveFile(projectFile, changeBuilder, moduleWrapper); changeType = PsiModuleChange.ChangeType.Added; return false; } // The T4 file went from Preprocessed to Transformed, it now needs a T4PsiModule. if (projectFile.LanguageType.Is<T4ProjectFileType>() && !projectFile.IsPreprocessedT4Template()) { AddFile(projectFile, changeBuilder); changeType = PsiModuleChange.ChangeType.Removed; return false; } break; } return false; }
public void OnProjectFileChanged(IProjectFile projectFile, PsiModuleChange.ChangeType changeType, PsiModuleChangeBuilder changeBuilder) { _t4PsiModuleProvider.OnProjectFileChanged(projectFile, ref changeType, changeBuilder); }
public override void OnProjectFileChanged(IProjectFile projectFile, FileSystemPath oldLocation, PsiModuleChange.ChangeType changeType, PsiModuleChangeBuilder changeBuilder) { if (!_t4PsiModuleProvider.OnProjectFileChanged(projectFile, ref changeType, changeBuilder)) base.OnProjectFileChanged(projectFile, oldLocation, changeType, changeBuilder); }
public void OnProjectFileChanged(IProjectFile projectFile, PsiModuleChange.ChangeType changeType, PsiModuleChangeBuilder changeBuilder, FileSystemPath oldLocation) { _t4PsiModuleProvider.OnProjectFileChanged(projectFile, ref changeType, changeBuilder); }