@@ -12,6 +12,8 @@ import com.intellij.openapi.module.ModuleUtil
1212import com.intellij.openapi.project.Project
1313import com.intellij.openapi.project.guessModuleDir
1414import com.intellij.openapi.vcs.FileStatus
15+ import com.intellij.openapi.vcs.FileStatusListener
16+ import com.intellij.openapi.vcs.FileStatusManager
1517import com.intellij.openapi.vcs.changes.ignore.cache.PatternCache
1618import com.intellij.openapi.vcs.changes.ignore.lang.Syntax
1719import ski.chrzanow.foldableprojectview.settings.FoldableProjectSettings
@@ -23,18 +25,25 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
2325 private val settings = project.service<FoldableProjectSettings >()
2426 private val patternCache = PatternCache .getInstance(project)
2527 private var previewState: FoldableProjectState ? = null
28+ private val projectView = ProjectView .getInstance(project)
2629 private val state get() = previewState ? : settings
2730
2831 init {
29- val view = ProjectView .getInstance(project)
30-
3132 project.messageBus
3233 .connect(project)
3334 .subscribe(FoldableProjectSettingsListener .TOPIC , object : FoldableProjectSettingsListener {
3435 override fun settingsChanged (settings : FoldableProjectSettings ) {
35- view.currentProjectViewPane?.updateFromRoot( true )
36+ refreshProjectView( )
3637 }
3738 })
39+
40+ FileStatusManager .getInstance(project).addFileStatusListener(object : FileStatusListener {
41+ override fun fileStatusesChanged () {
42+ if (settings.foldIgnoredFiles) {
43+ refreshProjectView()
44+ }
45+ }
46+ }, project)
3847 }
3948
4049 override fun modify (
@@ -58,6 +67,10 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
5867 }
5968 }
6069
70+ fun withState (state : FoldableProjectState ) {
71+ previewState = state
72+ }
73+
6174 private fun isModule (node : PsiDirectoryNode , project : Project ) = node.virtualFile?.let {
6275 ModuleUtil .findModuleForFile(it, project)?.guessModuleDir() == it
6376 } ? : false
@@ -88,7 +101,5 @@ class FoldableTreeStructureProvider(project: Project) : TreeStructureProvider {
88101 else -> this
89102 }
90103
91- fun withState (state : FoldableProjectState ) {
92- previewState = state
93- }
104+ private fun refreshProjectView () = projectView.currentProjectViewPane?.updateFromRoot(true )
94105}
0 commit comments