IDEA Plugin Dev - PSI Element

Card Puncher Data Processing


A PSI element is an element of a PSI tree. It can have child PSI elements.

PSI elements and operations on the level of individual PSI elements are used to explore the internal structure of source code. For example, you can use PSI elements to perform code analysis, such as code inspections or intention actions.



The PsiElement class is the common base class for PSI elements.


  • From an action: e.getData(LangDataKeys.PSI_ELEMENT). Note: if an editor is currently open and the element under caret is a reference, this will return the result of resolving the reference. This may or may not be what you need.
  • From a file by offset: PsiFile.findElementAt(). Note: this returns the lowest level element at the specified offset, which is normally a lexer token. Most likely you should use PsiTreeUtil.getParentOfType() to find the element you really need.
  • By iterating through a PSI file: using a PsiRecursiveElementWalkingVisitor.
  • By resolving a reference: PsiReference.resolve()


See PSI Cook Book

Discover More
Card Puncher Data Processing
Idea Plugin dev - PSI File (Program Structure Interface - Tree Structured Content)

A PSI (Program Structure Interface) file is the root of a structure representing the contents of a file as a hierarchy of elements in a particular programming language. It represents a hierarchy of PSI...

Share this page:
Follow us:
Task Runner