FileStatusListener reacts only onSave

Answered

Hey,

I try to implement an FileStatusListener in a way that reacts "live" while typing.
But The fileStatusesChanged Methods are exccuted only "OnSave" which is not fancy enough for me :-)
I would like to have something similar as the "Local Changes"- Changelist which updates immidiatally.

How could this be done?

0
4 comments

Do you implement `FileStatusListener#fileStatusChanged(VirtualFile)` method as well?
It should be fired when Document is modified, without waiting for changes to be saved on disk.

Note that FileStatusManager indicates _color_ of a file, which is not necessary directly related to its VCS status.

0

I figured out that under Linux the VirtualFile-FileStatusListener-Event is never fired. Under Windows both Listener works as expected.

So it depends on the OS :-(

0

It does not.

java.lang.Throwable: System: Linux
at com.intellij.codeInsight.problems.WolfTheProblemSolverImpl$3.fileStatusChanged(WolfTheProblemSolverImpl.java:131)
at com.intellij.openapi.vcs.impl.FileStatusManagerImpl.fileStatusChanged(FileStatusManagerImpl.java:240)
at com.intellij.openapi.vcs.impl.VcsFileStatusProvider.refreshFileStatusFromDocument(VcsFileStatusProvider.java:108)
at com.intellij.openapi.vcs.impl.FileStatusManagerImpl.refreshFileStatusFromDocument(FileStatusManagerImpl.java:288)
at com.intellij.openapi.vcs.impl.FileStatusManagerImpl$FileStatusManagerDocumentListener.bulkUpdateFinished(FileStatusManagerImpl.java:127)
at com.intellij.openapi.vcs.impl.FileStatusManagerImpl$FileStatusManagerDocumentListener.documentChangedNonBulk(FileStatusManagerImpl.java:111)
at com.intellij.openapi.editor.event.BulkAwareDocumentListener.documentChanged(BulkAwareDocumentListener.java:21)
at com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl$1.lambda$documentChanged$1(EditorEventMulticasterImpl.java:46)
at com.intellij.openapi.extensions.impl.ExtensionProcessingHelper.forEachExtensionSafe(ExtensionProcessingHelper.java:21)
at com.intellij.openapi.extensions.ExtensionPointName.forEachExtensionSafe(ExtensionPointName.java:50)
at com.intellij.openapi.editor.impl.event.EditorEventMulticasterImpl$1.documentChanged(EditorEventMulticasterImpl.java:46)
at com.intellij.openapi.editor.impl.DocumentImpl.changedUpdate(DocumentImpl.java:899)
at com.intellij.openapi.editor.impl.DocumentImpl.updateText(DocumentImpl.java:803)
at com.intellij.openapi.editor.impl.DocumentImpl.insertString(DocumentImpl.java:558)
at com.intellij.openapi.editor.EditorModificationUtil.insertStringAtCaretNoScrolling(EditorModificationUtil.java:113)
at com.intellij.openapi.editor.EditorModificationUtil.insertStringAtCaret(EditorModificationUtil.java:89)
at com.intellij.openapi.editor.EditorModificationUtil.insertStringAtCaret(EditorModificationUtil.java:81)
at com.intellij.codeInsight.editorActions.TypedHandler.type(TypedHandler.java:243)
at com.intellij.codeInsight.editorActions.TypedHandler.lambda$execute$4(TypedHandler.java:195)
at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$runForEachCaret$3(CaretModelImpl.java:353)
at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:462)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:362)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:337)
at com.intellij.codeInsight.editorActions.TypedHandler.execute(TypedHandler.java:152)
at com.intellij.codeInsight.lookup.impl.LookupTypedHandler.execute(LookupTypedHandler.java:73)
at com.intellij.codeInsight.template.emmet.EmmetPreviewTypedHandler.execute(EmmetPreviewTypedHandler.java:39)
at com.intellij.codeInsight.editorActions.AutoFormatTypedHandler.executeOriginalHandler(AutoFormatTypedHandler.java:167)
at com.intellij.codeInsight.editorActions.AutoFormatTypedHandler.execute(AutoFormatTypedHandler.java:94)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler$1.run(DefaultRawTypedHandler.java:55)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:856)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler.execute(DefaultRawTypedHandler.java:49)
at com.intellij.openapi.editor.impl.EditorFactoryImpl$MyRawTypedHandler.execute(EditorFactoryImpl.java:289)
at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$0(TypedAction.java:133)
at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:28)
at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:133)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1293)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1276)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3350)
at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1100)
at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
at java.desktop/java.awt.Component.processKeyEvent(Component.java:6606)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2849)
at java.desktop/java.awt.Component.processEvent(Component.java:6428)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1950)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:879)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1149)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1018)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:844)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:40)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4907)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2772)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4858)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:911)
at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:837)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:425)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:424)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

0

Hey,

 

I installed Ubuntu 19.10 completely NEW(!) and have the same Issue!

Example-Code: https://github.com/comod/intellij-plugin-sandbox/blob/FileStatusesChangedListener/src/main/java/system/ProjectStartListener.java

What can i do to solve this?

0

Please sign in to leave a comment.