PsiViewer

Compatible with all products except MPS
17.07.2016
33 720
A Program Structure Interface (PSI) tree viewer. This plugin may be useful for developers who are considering using the PSI interface in their own plugins.

Download plugin

Version

Update date

Recent change notes

  • Fixed some longtime annoyances. The cursor doesn't jump around anymore
  • Leaf nodes which are not children of the psi tree are filtered from the selection
  • Support for all JetBrains IDEs
  • Fixed the toolwindow icons
meo
22.10.2014
Awesome.
14.06.2014
thanks, it's very useful for me
30.08.2012
WARN - openapi.wm.impl.ToolWindowImpl - ToolWindow icons should be 13x13. Please fix jar:file: ... plugins/PsiViewer_10235.jar!/images/psiToolWindow.png
Anonymous
29.07.2012
Hi. I'm running the lsetat version of multisite and using version 1.26 of your plugin. It is working fine and is really appreciated. It does just what I need with one exception. I am the only one (Super Admin) who can see it and consequently the only one who can approve new users. Is there something I can do so that people with other roles (like site admin) can approve new users? I'm not a coder so if it involves changing code please be very specific. Thank you.
13.01.2012
There is however much better internal PSI viewer already embedded in IDEA: http://devnet.jetbrains.net/message/5247257#5247257
22.11.2011
Great work!
Thanks for latest update!
25.04.2011
This version has now been updated with the changes made in the plugin below
Anonymous
10.04.2011
updated version: http://plugins.intellij.net/plugin/?idea&id=6025, fixes error messages
Anonymous
21.01.2011
You can fix the icon error by editing the jar and copying /PsiViewer/images to /images
18.01.2011
anyone release the sources, please? I'm getting exceptions on every startup in IDEA X
Anonymous
22.06.2010
And just now got this error when opening another project:


Argument 1 for @NotNull parameter of com/intellij/psi/util/PsiTreeUtil.isAncestor must not be null: Argument 1 for @NotNull parameter of com/intellij/psi/util/PsiTreeUtil.isAncestor must not be null
java.lang.IllegalArgumentException: Argument 1 for @NotNull parameter of com/intellij/psi/util/PsiTreeUtil.isAncestor must not be null
at com.intellij.psi.util.PsiTreeUtil.isAncestor(PsiTreeUtil.java)
at idea.plugin.psiviewer.controller.project.EditorListener.isElementChangedUnderViewerRoot(EditorListener.java:106)
at idea.plugin.psiviewer.controller.project.EditorListener.updateTreeFromPsiTreeChange(EditorListener.java:96)
at idea.plugin.psiviewer.controller.project.EditorListener.access$000(EditorListener.java:46)
at idea.plugin.psiviewer.controller.project.EditorListener$1.propertyChanged(EditorListener.java:89)
at com.intellij.psi.impl.PsiManagerImpl.fireEvent(PsiManagerImpl.java:643)
at com.intellij.psi.impl.PsiManagerImpl.propertyChanged(PsiManagerImpl.java:571)
at com.intellij.psi.impl.file.impl.FileManagerImpl$FileTypesChanged.run(FileManagerImpl.java:257)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:752)
at com.intellij.psi.impl.file.impl.FileManagerImpl.handleFileTypesChange(FileManagerImpl.java:266)
at com.intellij.psi.impl.file.impl.FileManagerImpl.recalcAllViewProviders(FileManagerImpl.java:120)
at com.intellij.psi.impl.file.impl.FileManagerImpl.access$000(FileManagerImpl.java:68)
at com.intellij.psi.impl.file.impl.FileManagerImpl$1.enteredDumbMode(FileManagerImpl.java:101)
at sun.reflect.GeneratedMethodAccessor140.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:101)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:183)
at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:188)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:175)
at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:172)
at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:167)
at com.intellij.util.messages.impl.MessageBusImpl.access$000(MessageBusImpl.java:40)
at com.intellij.util.messages.impl.MessageBusImpl$2.invoke(MessageBusImpl.java:106)
at $Proxy39.enteredDumbMode(Unknown Source)
at com.intellij.openapi.project.DumbServiceImpl$1$1.run(DumbServiceImpl.java:154)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:752)
at com.intellij.openapi.project.DumbServiceImpl$1.run(DumbServiceImpl.java:151)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:610)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:500)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:368)
at com.intellij.ide.IdeEventQueue.pumpEventsForHierarchy(IdeEventQueue.java:669)
at com.intellij.openapi.progress.util.ProgressWindow.startBlocking(ProgressWindow.java:167)
at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:506)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:253)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:248)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:239)
at com.intellij.openapi.project.impl.ProjectManagerImpl.openProject(ProjectManagerImpl.java:372)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:420)
at com.intellij.openapi.project.impl.ProjectManagerImpl.loadAndOpenProject(ProjectManagerImpl.java:403)
at com.intellij.ide.impl.ProjectUtil.openProject(ProjectUtil.java:157)
at com.intellij.ide.RecentProjectsManager.doOpenProject(RecentProjectsManager.java:48)
at com.intellij.ide.RecentProjectsManagerBase$ReopenProjectAction.actionPerformed(RecentProjectsManagerBase.java:225)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:218)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:81)
at com.intellij.ui.plaf.beg.BegMenuItemUI.doClick(BegMenuItemUI.java:496)
at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:43)
at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:516)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:610)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:496)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:368)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Anonymous
22.06.2010
I'm getting the following error when I open up the PsiViewer context menu for a file, using IDEA 9.0.2:


[ 14234] ERROR - nSystem.impl.ActionManagerImpl - Icon cannot be found in '/images/psi18x18.png', action class='idea.plugin.psiviewer.controller.actions.ViewElementAtCaretAction' [Plugin: PsiViewer]
com.intellij.diagnostic.PluginException: Icon cannot be found in '/images/psi18x18.png', action class='idea.plugin.psiviewer.controller.actions.ViewElementAtCaretAction' [Plugin: PsiViewer]
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.reportActionError(ActionManagerImpl.java:890)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.setIconFromClass(ActionManagerImpl.java:416)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.convert(ActionManagerImpl.java:264)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getActionImpl(ActionManagerImpl.java:199)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.getAction(ActionManagerImpl.java:192)
at com.intellij.openapi.actionSystem.DefaultActionGroup.unstub(DefaultActionGroup.java:260)
at com.intellij.openapi.actionSystem.DefaultActionGroup.getChildren(DefaultActionGroup.java:239)
at com.intellij.openapi.actionSystem.impl.Utils.hasVisibleChildren(Utils.java:162)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:117)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:216)
at com.intellij.openapi.actionSystem.impl.ActionPopupMenuImpl$MyMenu.show(ActionPopupMenuImpl.java:76)
at com.intellij.openapi.fileEditor.impl.text.TextEditorComponent$MyEditorMouseListener.invokePopup(TextEditorComponent.java:307)
at com.intellij.util.EditorPopupHandler.handle(EditorPopupHandler.java:27)
at com.intellij.util.EditorPopupHandler.mouseReleased(EditorPopupHandler.java:41)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.runMouseReleasedCommand(EditorImpl.java:3671)
at com.intellij.openapi.editor.impl.EditorImpl$MyMouseAdapter.mouseReleased(EditorImpl.java:3606)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:610)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:496)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:368)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
12.10.2009
PsiViewer was a big help for me on the SQL Assistant plug-in development. It has several minor bugs but there is possible to bear with them.
Great tool!
Anonymous
11.06.2009
Unfortunately, this doesn't work at all for me. The PsiViewer view is always empty.

I can't find any documentation, so I don't know if there are any special prerequisites to get it working (PSI tree needs to be in a particular format? nodes need to implement a particular interface?).

I just wrote a util function to dump the PSI tree to stdout instead.
16.04.2006
Very helpful for debugging Language API stuff, and other types of plugins as well. However, where is ReferenceViewer, ASTViewer, etc? :)
Please  sign in  to leave a comment.