首页 > 解决方案 > Intellij IDEA 插件,用于在控制台的 IDE 编辑器中读取和打印内容

问题描述

我是使用 gradle 开发 Intellij Idea 插件的新手!我希望开发一个简单的插件来读取java类的内容并以实时方式在控制台(工具窗口)中打印它(即当我在java类中输入一个新单词时,它应该在控制台中打印工作,即使课程是否保存)

目前我指的是https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_components.html中的 Intellij 插件架构和组件。我遇到了诸如编辑器窗格之类的概念,但我不知道如何阅读 IDE 编辑器中的内容(当前的 java 文件)!我该怎么做?

标签: intellij-ideapluginsconsoleprintfeditor

解决方案


您可以获取编辑器窗口的原始文本:

Editor editor = anActionEvent.getRequiredData(CommonDataKeys.EDITOR);
editor.getDocument().getText();

如果您想从编辑器窗口的内容中获取一些结构,您可以使用PsiFileAPI:

PsiFile psi = anActionEvent.getData(CommonDataKeys.PSI_FILE);

PsiFileAPI 允许您以任何有意义的语言浏览文件。例如,对于 Java 文件,有一个PsiJavaFile接口知道 Java 特定功能,如包名、导入等。

http://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/psi_files.html

最后,要打印一条消息,您可以尝试正常System.out.print(),也可以使用ConsoleView该类来使用 IntelliJ 控制台工具视图:

TextConsoleBuilderFactory.getInstance()
                         .createBuilder(anActionEvent.getProject())
                         .getConsole()
                         .print("Hello", ConsoleViewContentType.NORMAL_OUTPUT);

注意:以上所有代码都假定您正在使用ActionEvent. 您可能需要查看TypedActionHandler界面以在编辑器文本更改时收到通知:

http://www.jetbrains.org/intellij/sdk/docs/tutorials/editor_basics/editor_events.html#handling-keystrokes-in-the-editor


推荐阅读