Coder Social home page Coder Social logo

seesharpsoft / intellij-file-preview Goto Github PK

View Code? Open in Web Editor NEW
45.0 45.0 3.0 226 KB

VSCode/Sublime like file preview plugin for IntelliJ IDE

License: Apache License 2.0

Java 100.00%
file-preview ide idea-plugin intellij intellij-plugin jetbrains navigation preview sublime vscode

intellij-file-preview's People

Contributors

frankeedf avatar seesharpsoft avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

intellij-file-preview's Issues

Project panel auto-hides after file selecting

Great plugin, thanks!

I have an issue (PHPStorm 2019.2) where the Project panel (View mode = docked, unpinned) auto-hides after every file select.

Expected behaviour would be same as when setting "Autoscroll to source" is enabled, except that the opened tab is reused instead of opening a new one every time.

With "Autoscroll to source" enabled, I can expand the Project panel (View mode = docked, unpinned), click or navigate around a variety of files without the panel closing (each of which is opened as a tab), and then when I select elsewhere outside the Project panel, the panel auto-hides.

With this plugin enabled and "Autoscroll to source" disabled, when selecting the second file in the Project panel, the panel auto-hides.

[Feature-Request] ALT+Click to prevent opening in file preview tab

As a user I want to be able to ignore files to be opened in file preview tab on click.


Default setting:
By default there should be a mapped key to ALT + Left mouse click (in the project toolbar) that ignores file preview.

Inverted setting:
The user should be able to invert this setting.
Click: No preview
Alt+Click: Preview

I'm not aware of any default keymap for ALT+Click that would conflict with this feature, so it should be fine for this use case.

This feature will not work if browsing the files in the project toolbar by arrow-keys, but temporarily deactivating preview
can help in this situation.

[Feature-Request] Turn edited previewed files into normal tab

As a user I want to be able to automatically turn the file preview tab into a normal tab, as
soon I edit the previewed file.


This behavior is known from other editors.

  • Adding or Removing any letter in the window counts as a file change
  • Whereas selecting and copying text does not

File not open in preview when using Navigate > File

If I select a file using the mouse, from the project sidebar, the file is opened in preview mode as expected.

If I use a keyboard shortcut for Navigate > File, type the name of the file, and press Enter to select it, it is not opened in preview mode.

I've looked into the config settings and couldn't see anything that would be causing this?

Any help appreciated ๐Ÿ‘

[Feature-Request] Option to color the file preview tab

As a user I want to be able to color the file preview tab, so it is visual emphasized.


Option for:

  • File preview tab color

๐Ÿ’ก Alternatively if possible:
The plugin might benefit from the implemented "File Colors" Settings, by injecting an extra Scope for "preview file(s)". ยฏ\_(ใƒ„)_/ยฏ
tab file color

Having "Use in Editor Tabs" checked + defined the "file preview scope" would color the file preview tab. But I'm unsure if "that" should be the preferred solution.

Strange behavior when "Preferences/Editor/General/Editor Tabs => Open declaration source in the same tab" enabled

v1.3.1 wrongly closes an open editor tab (or replaces it with a preview tab).
How to reproduce:

  1. Say you have 3 files in your project, double-click on a.txt => opens an editor tab for a.txt
  2. Single-click on b.txt: opens a preview for b.txt next to a.txt
  3. In the tab bar click on the tab of a.txt => editor tab a.txt is now in foreground, preview tab b.txt is inactived next to it
  4. Single-click on c.txt => out of a sudden the editor tab for a.txt gets removed and I'm left with a single preview tab for c.txt

java.lang.UnsupportedOperationException: again on closing of project?

Version: 1.6.0
IDE: IntelliJ IDEA 2019.3.2
OS: Linux RHEL 8.1

java.lang.UnsupportedOperationException: can not unregister unregistered tree
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewProjectHandler.unregisterTreeHandlers(PreviewProjectHandler.java:169)
	at net.seesharpsoft.intellij.plugins.filepreview.viewhandler.ProjectToolWindowHandler$ProjectContentManagerListener.unregisterCurrentTree(ProjectToolWindowHandler.java:36)
	at net.seesharpsoft.intellij.plugins.filepreview.viewhandler.ToolWindowHandlerBase.unregister(ToolWindowHandlerBase.java:58)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.unregisterToolWindow(PreviewStartupActivity.java:86)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.unregisterAllToolWindows(PreviewStartupActivity.java:65)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.dispose(PreviewStartupActivity.java:49)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity$2.projectClosingBeforeSave(PreviewStartupActivity.java:126)
	at jdk.internal.reflect.GeneratedMethodAccessor476.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:513)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:142)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:438)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:398)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:388)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:241)
	at com.sun.proxy.$Proxy94.projectClosingBeforeSave(Unknown Source)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:736)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDispose(ProjectManagerImpl.java:781)
	at com.intellij.ide.actions.CloseProjectAction.actionPerformed(CloseProjectAction.java:33)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:298)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:315)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:294)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:263)
	at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:77)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:284)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:107)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:116)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:517)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:36)
	at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:539)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6651)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6416)
	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.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	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:908)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:846)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	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)

When using navigate ctrl-F12 or F12 it will leaves the explorer focused

It will not always leave the Explorer focused, but its pretty common.

I am on Windows 10.
I am running JetBrains Rider 20019.2 Build #RD-192.6584.65, built on August 29, 2019.
It seems to only happen with Quick File Preview enabled I am running v1.4.6.

I like the preview, but the focus change from editor to explorer is driving me a little crazy :).

A sure fire for me to see it happen is to close Rider, reload it with my project pick an identifier and navigate to declaration or usages using F12. Hmm seems my sure fire isn't, it will not focus the explorer some times.

[Feature-Request] Spawn file preview tab at the last (most right) position

As a user I want to be able to configure, that the file preview tab always does spawn,
the previewed file, to the most right or bottom position, so I always am aware of where my
file preview tab is.


Depending on the navigation placement, it should either show left or top:
File -> Settings -> Editor -> General -> Editor Tabs

  • Placement: top: most right
  • Placement: bottom: most right
  • Placement: left: most bottom
  • Placement: right: most bottom

It should have an option in the settings to choose "right"-position (or last)
It should have an option in the settings to choose "bottom"-position (or last)
It should force the positioning even if the setting Sort tab alphabetically is set

Here is a similar issue for the first (most left) position

UX: ESC keyboard shortcut should only ever close Preview windows, not other tabs with files "really opened," and definitely not Pinned tabs.

I love that ESC can close a Preview window and that hitting TAB gets you into the Preview so that ESC would not close the tab. However, hitting ESC should not close non-Preview-opened tabs ever.

Steps to Reproduce

  1. With the plugin enabled and working
  2. With some file(s) opened
  3. With some file(s) pinned
  4. Click in Projects pane to open a Quick File Preview tab
  5. Hit ESC and watch with joy as the Preview tab closes
  6. But hit ESC again .. and watch with dismay as another non-preview tab closes
  7. Continued hitting ESC again, and watch in shock and horror as remaining tabs, even pinned ones, close one-by-one.. ๐Ÿ˜ข

(This really is a great plugin - Please see through my jovial silliness to the point of my request here and do not take it as any disrespect to you or your fantastic feature-add to PHP Storm! I'm so grateful for this feature!)

Error in Event Log - PHPStorm

Just get this error this morning in the event log of PHPStorm :

java.lang.Throwable: Showing dialogs from popup onChosen can result in focus issues. Please put the handler into BaseStep.doFinalStep or PopupStep.getFinalRunnable.
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:146)
	at com.intellij.ui.popup.list.ListPopupImpl.lambda$_handleSelect$0(ListPopupImpl.java:396)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:310)
	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:80)
	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:128)
	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:184)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	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.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:728)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
	at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:1030)
	at com.intellij.openapi.progress.util.ProgressWindow.pumpEventsForHierarchy(ProgressWindow.java:199)
	at com.intellij.openapi.progress.util.ProgressWindow.lambda$startBlocking$3(ProgressWindow.java:189)
	at com.intellij.openapi.application.impl.ApplicationImpl.runUnlockingIntendedWrite(ApplicationImpl.java:857)
	at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:188)
	at com.intellij.openapi.progress.impl.ProgressRunner.lambda$legacyExec$6(ProgressRunner.java:302)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptNow(CompletableFuture.java:753)
	at java.base/java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:731)
	at java.base/java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2108)
	at com.intellij.openapi.progress.impl.ProgressRunner.legacyExec(ProgressRunner.java:300)
	at com.intellij.openapi.progress.impl.ProgressRunner.submit(ProgressRunner.java:248)
	at com.intellij.openapi.progress.impl.ProgressRunner.submitAndGet(ProgressRunner.java:169)
	at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:426)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:492)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:84)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:271)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:223)
	at com.intellij.openapi.vcs.VcsVFSListener$MyCommandAdapter.commandFinished(VcsVFSListener.java:690)
	at jdk.internal.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:549)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:143)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:472)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:432)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:420)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:402)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:243)
	at com.sun.proxy.$Proxy93.recentPlaceAdded(Unknown Source)
	at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl.putLastOrMerge(IdeDocumentHistoryImpl.java:631)
	at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl.onCommandFinished(IdeDocumentHistoryImpl.java:300)
	at com.intellij.openapi.fileEditor.impl.IdeDocumentHistoryImpl$3.commandFinished(IdeDocumentHistoryImpl.java:126)
	at jdk.internal.reflect.GeneratedMethodAccessor95.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:549)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:143)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:472)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:432)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:420)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:404)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$3(MessageBusImpl.java:243)
	at com.sun.proxy.$Proxy71.commandFinished(Unknown Source)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.fireCommandFinished(CoreCommandProcessor.java:280)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.finishCommand(CoreCommandProcessor.java:261)
	at com.intellij.openapi.command.impl.CommandProcessorImpl.finishCommand(CommandProcessorImpl.java:34)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:226)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:178)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:168)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:154)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFile(FileEditorManagerImpl.java:590)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.closeFile(FileEditorManagerImpl.java:584)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.lambda$closeFileEditor$4(PreviewUtil.java:185)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.lambda$invokeSafeAndWait$0(PreviewUtil.java:106)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:467)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:485)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.invokeSafeAndWait(PreviewUtil.java:104)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.closeFileEditor(PreviewUtil.java:181)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.closeOtherPreviews(PreviewUtil.java:197)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.closeAllPreviews(PreviewUtil.java:190)
	at net.seesharpsoft.intellij.plugins.filepreview.viewhandler.ToolWindowHandlerBase$ContentManagerListener.selectionChanged(ToolWindowHandlerBase.java:77)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.EventDispatcher.dispatchVoidMethod(EventDispatcher.java:127)
	at com.intellij.util.EventDispatcher.access$000(EventDispatcher.java:21)
	at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:85)
	at com.sun.proxy.$Proxy114.selectionChanged(Unknown Source)
	at com.intellij.ui.content.impl.ContentManagerImpl.fireSelectionChanged(ContentManagerImpl.java:579)
	at com.intellij.ui.content.impl.ContentManagerImpl.removeFromSelection(ContentManagerImpl.java:416)
	at com.intellij.ui.content.impl.ContentManagerImpl$1.run(ContentManagerImpl.java:484)
	at com.intellij.ui.content.impl.ContentManagerImpl.lambda$setSelectedContent$4(ContentManagerImpl.java:500)
	at com.intellij.openapi.util.ActionCallback$ExecutedExecutionCallback.doWhenExecuted(ActionCallback.java:177)
	at com.intellij.openapi.util.ActionCallback.doWhenDone(ActionCallback.java:111)
	at com.intellij.openapi.util.ActionCallback.doWhenProcessed(ActionCallback.java:129)
	at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContent(ContentManagerImpl.java:500)
	at com.intellij.ui.content.impl.ContentManagerImpl.setSelectedContentCB(ContentManagerImpl.java:454)
	at com.intellij.openapi.wm.impl.content.SelectContentStep.onChosen(SelectContentStep.kt:27)
	at com.intellij.openapi.wm.impl.content.SelectContentStep.onChosen(SelectContentStep.kt:10)
	at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:409)
	at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:361)
	at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:526)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:298)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6651)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3345)
	at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:583)
	at java.desktop/java.awt.Component.processEvent(Component.java:6416)
	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.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	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:974)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:912)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:844)
	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:739)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:502)
	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)

java.lang.NullPointerException on closing of project (most likely)

I am not sure but it has probably occurred on closing of one of my projects.

Version: 1.6.0
IDE: IntelliJ IDEA 2019.3.2
OS: Linux RHEL 8.1

Following exceptions happened soon after this one, most probably they are induced.


2020-03-04T17:14:57.146
java.lang.NullPointerException
	at net.seesharpsoft.intellij.plugins.filepreview.viewhandler.ToolWindowHandlerBase.unregister(ToolWindowHandlerBase.java:53)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.unregisterToolWindow(PreviewStartupActivity.java:86)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.unregisterAllToolWindows(PreviewStartupActivity.java:65)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity.dispose(PreviewStartupActivity.java:49)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewStartupActivity$1.toolWindowUnregistered(PreviewStartupActivity.java:109)
	at jdk.internal.reflect.GeneratedMethodAccessor514.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:513)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:142)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:438)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:398)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:388)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:241)
	at com.sun.proxy.$Proxy60.toolWindowUnregistered(Unknown Source)
	at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doUnregisterToolWindow(ToolWindowManagerImpl.java:1173)
	at com.intellij.openapi.wm.impl.ToolWindowImpl.dispose(ToolWindowImpl.java:512)
	at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:104)
	at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:183)
	at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
	at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:92)
	at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:183)
	at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
	at com.intellij.openapi.util.ObjectNode.lambda$execute$0(ObjectNode.java:92)
	at com.intellij.openapi.util.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:183)
	at com.intellij.openapi.util.ObjectNode.execute(ObjectNode.java:71)
	at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:133)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:123)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:119)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.lambda$closeProject$17(ProjectManagerImpl.java:763)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:885)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeProject(ProjectManagerImpl.java:750)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.closeAndDispose(ProjectManagerImpl.java:781)
	at com.intellij.ide.actions.CloseProjectAction.actionPerformed(CloseProjectAction.java:33)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:298)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:315)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$0(ActionMenuItem.java:294)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:263)
	at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:77)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:284)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:83)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:107)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:116)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:517)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:36)
	at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:539)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6651)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6416)
	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.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773)
	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:908)
	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:846)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	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)

Plugin is broken in last version

I just updated this plugin and the preview functionality no longer works, e.g. I can't make the previewed tab appear.

I have rollbacked to 1.3.1 in the meantime

NullPointerException every time

java.lang.NullPointerException
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewProjectHandler$3.beforeFileOpened(PreviewProjectHandler.java:99)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:114)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:393)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:354)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:343)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:327)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:320)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:29)
	at com.intellij.util.messages.impl.MessageBusImpl$1.invoke(MessageBusImpl.java:192)
	at com.sun.proxy.$Proxy91.beforeFileOpened(Unknown Source)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$openFileImpl4$8(FileEditorManagerImpl.java:854)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:315)
	at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:156)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:435)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:419)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:403)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:741)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:690)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:385)
	at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:798)
	at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:210)
	at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:196)
	at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:608)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:454)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:109)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:251)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:205)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.loadProjectUnderProgress(ProjectManagerImpl.java:446)
	at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:421)
	at com.intellij.platform.PlatformProjectOpenProcessor.doOpenProject(PlatformProjectOpenProcessor.java:260)
	at com.intellij.ide.RecentProjectsManagerBase.doOpenProject(RecentProjectsManagerBase.java:509)
	at com.intellij.ide.RecentProjectsManagerBase.doReopenLastProject(RecentProjectsManagerBase.java:628)
	at com.intellij.ide.RecentProjectsManagerBase$MyAppLifecycleListener.appStarting(RecentProjectsManagerBase.java:684)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:114)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:393)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:354)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:343)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:320)
	at com.intellij.util.messages.impl.MessageBusImpl.access$100(MessageBusImpl.java:29)
	at com.intellij.util.messages.impl.MessageBusImpl$1.invoke(MessageBusImpl.java:192)
	at com.sun.proxy.$Proxy41.appStarting(Unknown Source)
	at com.intellij.idea.IdeaApplication$IdeStarter.lambda$main$1(IdeaApplication.java:370)
	at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
	at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:111)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:120)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
	at com.intellij.idea.IdeaApplication$IdeStarter.main(IdeaApplication.java:368)
	at com.intellij.idea.IdeaApplication.lambda$run$1(IdeaApplication.java:211)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:195)
	at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:211)
	at com.intellij.idea.IdeaApplication.lambda$initApplication$0(IdeaApplication.java:74)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:347)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

QFP 1.5.0
intelliJ IDEA 2019.1.1

Add hotkey in Editor

Hey. Plugin - very nice. Thanks!

A little idea:

Add a hotkey in an editor (e.g. cmd) that saves the tab.
Otherwise, after you scroll the file and understand that you need to save the tab, you need to look for the file in the sidetree with the mouse and double-click. It isn't comfortable.
Yes, I know that I can press Enter. But this works if the focus is in sidebar.
I know that vscode has this problem too, but this can be removed.

[Feature-Request] Show file/class Structure details while in preview

While clicking around files, it would be nice to see the Structure pane (if it is open) to be populated with the currently active files in Preview. Of course, as the Preview is closed, the Structure pane would go blank again.

Use cases:

This is useful when thumbing through files in a non-committal way (the point of Quick File Preview) and seeing at a glance what methods and properties are provided by each file in Preview.

Navigate back and forward not working when Always Select Opened File is on

Quick File Preview interferes with the ability to navigate backwards and forwards when Always Select Opened File is on. Going forwards to a cursor that is in another file does not work, IntelliJ won't even let you as if this part of the linked list of cursors gets lost. Going backwards is buggy, often the user has to press backwards many times for it to finally work.

java.lang.Throwable: Can't remove document listener

java.lang.Throwable: Can't remove document listener (net.seesharpsoft.intellij.plugins.filepreview.PreviewDocumentListener@44d7c3f0). Registered listeners: [com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl$1@12201d60, 2, 0, Multicaster, 734, 7, Multicaster]
at com.intellij.openapi.diagnostic.Logger.error(Logger.java:145)
at com.intellij.openapi.editor.impl.DocumentImpl.removeDocumentListener(DocumentImpl.java:977)
at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.lambda$disposePreview$0(PreviewUtil.java:44)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:82)
at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:106)
at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:115)
at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:121)
at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.disposePreview(PreviewUtil.java:34)
at net.seesharpsoft.intellij.plugins.filepreview.PreviewUtil.disposePreview(PreviewUtil.java:26)
at net.seesharpsoft.intellij.plugins.filepreview.PreviewProjectHandler$2.fileClosed(PreviewProjectHandler.java:94)
at sun.reflect.GeneratedMethodAccessor194.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:102)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:446)
at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:406)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:395)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:379)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:242)
at com.sun.proxy.$Proxy99.fileClosed(Unknown Source)
at com.intellij.openapi.fileEditor.impl.EditorWindow.lambda$null$0(EditorWindow.java:265)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$5$1.run(FileEditorManagerImpl.java:1051)
at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:170)
at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2425)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:217)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:169)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:161)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:167)
at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$null$2(FocusManagerImpl.java:175)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:312)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:433)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:416)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:873)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:822)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:461)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:704)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:460)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

UX: Always cycle out the single, open Preview tab so that only one Preview is ever open at a time

Since this PHP Storm Quick File Preview plugin is modeled after the observed and beloved behavior of editors like Sublime, one little thing that sets it apart is that Preview windows stack instead of auto-closing and re-opening with each fresh new Preview.

Steps to Reproduce

  1. With the plugin active and working
  2. Click a file in the Projects pane to open a Quick File Preview preview
  3. Click another file
    Expected behavior:
    The new file will replace the existing file preview tab.
    Instead:
    Each new file clicked opens an additional Preview tab.

(This may be what the existing 2nd option in plugin settings is about, but due to #18 I can't confirm, so I'll just file away my thoughts here in the meantime. Maybe it's related to some other "conflicting" IDE native preference I set long ago in want of this plugin..)

Bug: Cannot set plugin preferences

I have just installed the current version to try it out - works great! But when I went to set some preferences to see how they change behavior, I found that my changes would not commit.

Steps to reproduce:

  1. With plugin activated (installed and PHPStorm IDE restarted)
  2. Visit Settings > .. > Quick File Preview settings
  3. Set some configuration of checkboxes, hit Ok
  4. Visit plugin settings again: Confirm changes are still there.
  5. Restart IDE (because maybe that's what's causing my confusion?)
  6. Visit plugin settings again: See that the settings are reverted back to what they were before.

Preferences

Note: I have only tried the 2nd checkbox from the top, both 1st (Close Preview Editor if no file..) and toggling 2nd (Close Preview Editor if other tab..) checkboxes thinking maybe they are intended to behave like a radio pair, and then as a spot-check, the 4th checkbox from the top (Focus Project view).

I don't know offhand where or whether I ever redefined where my IDE preferences are stored.

Double-clicking root folders opens Directories settings

When Toggle tree... setting is enabled, double-clicking on any root folder (product root, sources root, test sources root, resource root) opens the Directories settings window.

This gets pretty annoying when accidentally double-clicking one of these folders. The only solution for me is disabling this cool feature until the issue is resolved.

Awesome plugin otherwise! ๐Ÿ˜

Double-click preview tab to make it permanent

Thank you for this! Has made my life much more pleasant because I'm just so used to opening up preview tabs in other editors.

My only suggestion thus far is adding a feature to double-click the preview tab to make it permanent.
Atom & VSCode (the two other editors I use the most frequently) both have this feature, and I often find myself trying to do the same thing here :).

Thanks again!

[BUG] Previous file previews should not show up in "recent files"-view/panel (CTRL+E)

Previewed files should not show up in "recent files"-view/panel. This panel gets full pretty
fast when navigating through the project.

There might be a use case while you are debugging. (fx. Breakpoint stops) But that should be optional imo.


recent files

The "recent files"-view/panel should not contain previewed files.
However, if others might benefit from having them in the "recent files"-view/panel, a setting should be made available to choose the behavior.

Unreliable PreviewStartupActivity#register

You need to do it on EDT, otherwise ProjectViewPane can be null and it will never be registered for a project, if you look into com.intellij.ide.projectView.impl.ProjectViewImpl#getProjectViewPaneById...

    if (!ApplicationManager.getApplication().isUnitTestMode() && ApplicationManager.getApplication().isDispatchThread()) {
      // most tests don't need all panes to be loaded, but also we should not initialize panes on background threads
      ensurePanesLoaded();
    }

Do not preview .sln file on solution open

Currently when you open a solution in Rider the solution .sln file gets opened in preview which is kinda annoying. Usually you do not need to modify the .sln file at all so it would be nice to just ignore .sln files for preview. It can be edited manually if needed.

NullPointerException on selectionChanged

java.lang.NullPointerException
at net.seesharpsoft.intellij.plugins.filepreview.PreviewProjectHandler$2.selectionChanged(PreviewProjectHandler.java:87)
at jdk.internal.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:513)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:142)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:438)
at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:398)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:388)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:241)
at com.sun.proxy.$Proxy102.selectionChanged(Unknown Source)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$fireSelectionChanged$21(FileEditorManagerImpl.java:1576)
at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl$6$1.run(FileEditorManagerImpl.java:1019)
at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:168)
at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:2418)
at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:177)
at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:129)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:159)
at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:165)
at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$null$2(FocusManagerImpl.java:173)
at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
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.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
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)

Bug: Typing in a file to open file in Preview in full Editor feature is a little off

When I am previewing a file and click in to type, this should (and does) convert file Preview to open the full Editor mode on the file. However, it seems that as soon as the Preview closes and Editor opens, focus on the editing file is lost, and I am back on Projects pane. The user experience then is:

  1. Preview a file (by click into a filename in Projects or cursoring and down)
  2. Click into the Preview tab where you'd like to start making edits.
  3. Type first letter of your edit: Preview becomes Editor, and focus is back on the file in Project again.
  4. Next thing you type becomes either a Search in Project or, if you happened to hit Delete (which is really a backspace, but that's not anyone's concern.. mac always has a way of doing things differently), thinking you were undoing your typed letter, PhpStorm prompts with a confirmation to delete the now-focused file (!)

The impact from the above is a bit more compounded when (like I first tried it) you double-click a work to select it to start typing: First the word disappears and is replaced by the first one or two letters (depending how quickly you type), then your focus is left on the Project files pane.

I am really enjoying Quick File Preview: It's working so well, it's in fact dropped out of my consciousness-- sign of a great feature!

Switching tab with hotkey leaves focus on explorer with Autoscroll from Source

I'm using PyCharm (2019.2.3 Community Edition) on Ubuntu (18.04.3), and switching tabs ('Select Next Tab' and 'Select Previous Tab') with original hotkey ('Alt+Right' and 'Alt+Left') or personal keymap ('Ctrl+Tab' and 'Ctrl+Shift+Tab') with 'Autoscroll from Source' turned on will switch tab correctly, but will also switch focus to the explorer, so any further tab shifts just change the explorer's scope instead.

Enabling in PHPStorm?

Hello. I'm trying to use this plugin in PHPStorm 2019.2. I've installed it from the marketplace and restarted the IDE several times, but when I click on a file in the project view it opens as a normal tab.

Do I need to do something within the editor to enable the preview?

[Feature-Request] Allow emoji in tab title

I like this plugin very and it will be better if we can use emoji in tab title. The problem is after restart PHPStorm, the emoji is disappeared.
image

Thank again for useful plugin

[Feature-Request] Open find, navigate results in preview tab

Thanks for sharing this plugin! It's a shame more sane tab handling isn't built in to the IDE, but this helps a lot.

I find I still get a "tab explosion" while moving through the code -- e.g. opening new tabs from the find window and navigating to definitions from there, which also opens new tabs. Ideally there would be an option to open files from these actions in the preview window first.

Write-unsafe context

java.lang.Throwable: Write-unsafe context! Model changes are allowed from write-safe contexts only. Please ensure you're using invokeLater/invokeAndWait with a correct modality state (not "any"). See TransactionGuard documentation for details.
  current modality=ModalityState.NON_MODAL
  known modalities:
    ModalityState:{}, writingAllowed=true;
    ModalityState.NON_MODAL, writingAllowed=true;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true;
    ModalityState:{}, writingAllowed=true
	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:145)
	at com.intellij.openapi.application.TransactionGuardImpl.assertWriteActionAllowed(TransactionGuardImpl.java:229)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl4Edt(FileEditorManagerImpl.java:862)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$openFileImpl4$7(FileEditorManagerImpl.java:845)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:630)
	at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:643)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl4(FileEditorManagerImpl.java:845)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl3(FileEditorManagerImpl.java:790)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.lambda$openFileImpl2$4(FileEditorManagerImpl.java:773)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:220)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:178)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:168)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:154)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileImpl2(FileEditorManagerImpl.java:773)
	at com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.openFileWithProviders(FileEditorManagerImpl.java:704)
	at com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.openFile(FileEditorManagerEx.java:139)
	at net.seesharpsoft.intellij.plugins.filepreview.PreviewProjectHandler$1.valueChanged(PreviewProjectHandler.java:44)
	at java.desktop/javax.swing.JTree.fireValueChanged(JTree.java:2967)
	at java.desktop/javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3456)
	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:641)
	at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:625)
	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1111)
	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:297)
	at java.desktop/javax.swing.JTree.setSelectionPaths(JTree.java:1669)
	at java.desktop/javax.swing.JTree.setSelectionRows(JTree.java:1752)
	at java.desktop/javax.swing.JTree.setSelectionRow(JTree.java:1727)
	at com.intellij.util.ui.tree.TreeUtil.lambda$showAndSelect$10(TreeUtil.java:594)
	at com.intellij.util.ui.tree.TreeUtil.showAndSelect(TreeUtil.java:629)
	at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:539)
	at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:530)
	at com.intellij.util.ui.tree.TreeUtil.showRowCentred(TreeUtil.java:525)
	at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:456)
	at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:449)
	at com.intellij.ide.projectView.impl.AsyncProjectViewSupport.selectPaths(AsyncProjectViewSupport.java:210)
	at com.intellij.ide.projectView.impl.AsyncProjectViewSupport.lambda$null$2(AsyncProjectViewSupport.java:173)
	at org.jetbrains.concurrency.AsyncPromise$onProcessed$1.accept(AsyncPromise.kt:85)
	at org.jetbrains.concurrency.AsyncPromise$onProcessed$1.accept(AsyncPromise.kt:13)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
	at org.jetbrains.concurrency.AsyncPromise.setResult(AsyncPromise.kt:130)
	at com.intellij.ui.tree.AbstractTreeWalker.processNextPath(AbstractTreeWalker.java:149)
	at com.intellij.ui.tree.AbstractTreeWalker.start(AbstractTreeWalker.java:109)
	at com.intellij.ui.tree.AbstractTreeWalker.start(AbstractTreeWalker.java:92)
	at org.jetbrains.concurrency.AsyncPromise$onSuccess$1.accept(AsyncPromise.kt:58)
	at org.jetbrains.concurrency.AsyncPromise$onSuccess$1.accept(AsyncPromise.kt:13)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:883)
	at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2251)
	at org.jetbrains.concurrency.AsyncPromise.onSuccess(AsyncPromise.kt:55)
	at com.intellij.ui.tree.AsyncTreeModel.lambda$null$7(AsyncTreeModel.java:284)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:169)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:591)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:537)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:59)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:156)
	at com.intellij.util.concurrency.Invoker.invokeSafely(Invoker.java:145)
	at com.intellij.util.concurrency.Invoker.lambda$invokeLater$0(Invoker.java:91)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:433)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:416)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	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.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:873)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:822)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:461)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:704)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:460)
	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)

IJ 2019.2

Plugin not working with Favourites

First, thanks for the plugin, got very excited to find about it today!

I'm using Webstorm 2019.2 with Quick File Preview 1.3.2 and it works good on the "original" project structure. Unfortunately, the plugin does not seem to pick on files that are in "Favourites".

Settings wise, Webstorm lets you have "Autoscroll to source" enabled or disabled for the Favourites tab specifically - I made sure it is disable there too

Bug: Open previously closed tabs may be affected by this plugin's behavior

Steps to reproduce

  1. With the plugin enabled and working
  2. With Autoscroll to Source PHPStorm IDE preference not enabled/selected
  3. Double-click some files in Projects pane open them in the regular IDE editor mode
  4. Close the tabs just opened. Keep one opened (because of a known PHPStorm IDE bug that re-open shortcut doesn't work when on the Files "Splash screen")
  5. Click around on a few files in Projects pane to preview a file in Quick File Preview
  6. Close the preview pane and click back into the last open tab
  7. Hit cmd-shift-t (or whatever your shortcut is to re-open most recently closed tab)
    Expected:
    Last file really opened to really open.
    Instead:
    Nothing apparent happens. But what I suspect is happening is all the previously closed Quick Preview tab references are getting visited and silently popped off the queue, not to be reopened, because if you hit cmd-shift-T enough times, eventually the previously closed tabs will also pop into the editor again.

Solution/Idea:

If the theory that there's a queue of recently closed tabs silently cycling through is correct, then I guess Quick File Preview plugin should attempt to exclude itself from the Recently Closed tabs queue upon open. If it can't (due to how the IDE works), then maybe Quick File Preview can instead immediately issue a "reopen last tab" upon successfully loading itself.

thank you! you are a holy man!

Thank you! you are a holy man! I suffered for years, poking at the arrow to expand the folder! I suffered for years! Thank you so much! thanks! You are a great man!

image

[Feature-Request] Spawn file preview tab at the first (most left) position

As a user I want to be able to configure, that the file preview tab always does spawn,
the previewed file, to the most left or top position, so I always am aware of where my
file preview tab is.


Depending on the navigation placement, it should either show left or top:
File -> Settings -> Editor -> General -> Editor Tabs

  • Placement: top: most left
  • Placement: bottom: most left
  • Placement: left: most top
  • Placement: right: most top

It should have an option in the settings to choose "left"-position (or first)
It should have an option in the settings to choose "top"-position (or first)
It should force the positioning even if the setting Sort tab alphabetically is set

Here is a similar issue for the last (most right) position

Preview Window opens and immediately closes

I am running the latest version of PyCharm: 202.6397.98.

This plugin used to work perfectly, but with the latest build, I am seeing the following behavior:
At first, the preview window will open normally, but after clicking on 3-5 different files, the preview window will open and then immediately close. Re-launching PyCharm makes it work again (for the 3-5 files).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.