标签: intellij-plugin

IntelliJ Idea 插件无法撤消 document.setText

我正在为 IntelliJ Idea 13 开发一个插件。我做了一些更改beforeDocumentSaving并使用document.setText

public class AppendAction implements ApplicationComponent
{
    @Override public void initComponent()
    {
        MessageBus bus = ApplicationManager.getApplication().getMessageBus();
        MessageBusConnection connection = bus.connect();

        connection.subscribe(AppTopics.FILE_DOCUMENT_SYNC, new FileDocumentManagerAdapter()
            {
                @Override public void beforeDocumentSaving(Document document)
                {
                    document.setText(appendSomething(document.getText()));                        
                }
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

这很好用,我唯一的问题是当这个插件运行时,我想撤消更改,我收到以下错误消息:

Cannot Undo
Following files have changes that cannot be undone:
Run Code Online (Sandbox Code Playgroud)

任何Idea?:-)

java intellij-idea intellij-plugin

4
推荐指数
1
解决办法
716
查看次数

构建在 XML 之上的自定义 Intellij 语言

首先,我的意图是什么。我的项目中有一组 XML 文件。其中一些是分层的。顶部 XML 如下所示(非常简单的示例)

<RootElement>
  <Element id=1>
  <Element id=2>
  <Element id=3>
<RootElement>
Run Code Online (Sandbox Code Playgroud)

该元素本身包含一些其他元素和属性,但与本例无关。

有很多具有这种结构的文件:

<RootElement>
  <Element id=1 superId=3>
  <Element id=2 superId=3>
  <Element id=3 superId=2>
<RootElement>
Run Code Online (Sandbox Code Playgroud)

其中 superID 是根 XML 文件的索引。我想要实现的是一个插件,我将使用它来在这两个文件之间进行简单的导航。

我的想法是创建一种新的语言来扩展 XML 并添加一些额外的功能。只有具有特定名称(2 或 3)的文件才会成为该语言的一部分。

我创建了新语言:

public class MyLanguage extends XMLLanguage {

  public static final MyLanguage INSTANCE = new MyLanguage();

  protected MyLanguage() {
      super(XMLLanguage.INSTANCE,"MyLanguage", new String[]{"text/xml"});
  }
}
Run Code Online (Sandbox Code Playgroud)

新文件类型:

public class MyLanguageFileType extends XmlLikeFileType {      
  public static   final MyLanguageFileType INSTANCE = new MyLanguageFileType();

protected MyLanguageFileType() {
  super(MyLanguage.INSTANCE);
}
@Override …
Run Code Online (Sandbox Code Playgroud)

intellij-idea intellij-plugin

4
推荐指数
1
解决办法
611
查看次数

Intellij:如何转换所有文件的缩进

我知道如何为单个文件转换缩进。我去编辑-> 转换缩进-> 空格/制表符。

但我想对目录下的所有文件执行此操作。

我尝试单击一个目录,然后转到编辑 -> 转换缩进,但选项是灰色的。

在此处输入图片说明

intellij-idea intellij-plugin

4
推荐指数
1
解决办法
2231
查看次数

pycharm或其他产品有没有类似gitlens的插件?

我的问题很简单,当您阅读标题时,我想要类似于我在 vscode 中找到的 GitLens 的插件。正如您所知,使用 GitLens,您可以轻松看到两次或多次提交之间的区别。我搜索了一下,找到了 GitToolBox,但我也不知道如何安装它,而且我认为这不像 GitLens ......

python intellij-plugin

4
推荐指数
1
解决办法
2260
查看次数

在intellij idea插件中读取PsiClass的注释

我想在intellij idea插件开发中阅读来自PsiClass的注释.是否有任何API.我无法通过反射执行此操作,因为psiClass无法转换为java.lang.Class

java plugins annotations intellij-idea intellij-plugin

3
推荐指数
1
解决办法
1332
查看次数

通过插件以编程方式刷新/同步IntelliJ IDEA项目

有没有办法通过插件以编程方式刷新/同步IntelliJ IDEA项目?

我正在开发一个IntelliJ IDEA插件,可以在活动项目中创建一个文件.我想通过插件自动刷新/同步项目,以便用户可以立即看到更改.这在IntelliJ IDEA中是否可行?

java intellij-idea intellij-plugin intellij-14

3
推荐指数
1
解决办法
1141
查看次数

如何通过open api检测IntelliJ的当前主题?

如何通过open api(com.intellij.openapi)检测IntelliJ的当前主题?

示例:

java intellij-idea intellij-plugin

3
推荐指数
1
解决办法
113
查看次数

如何获得通用类型的PsiField

我正在开发一个Intellij Idea插件,我想得到一个类的所有字段信息.但我遇到了困难,我无法获得PsiField的泛型类型.如:

private String[] stringsArr;
private List<String> stringList;
private List<BeanLog> beanLogList;
Run Code Online (Sandbox Code Playgroud)

如何从PsiField获取'BeanLog'的PsiClass?

generics intellij-idea intellij-plugin

3
推荐指数
1
解决办法
573
查看次数

修改 Kotlin 类

我想为 Intellij IDEA 编写一个插件,该插件应该修改 Java 和 Kotlin 代码。

我用的方法

PsiClass.getMethods()
Run Code Online (Sandbox Code Playgroud)

为了获取 Java 和 Kotlin 类的所有方法。到目前为止一切顺利,所以我使用类似的方法

PsiClass.add(), PsiClass.addAfter(), PsiClass.addBefore()
Run Code Online (Sandbox Code Playgroud)

一旦在 Java 文件上调用它们,它们都可以正常工作,但开始抛出异常

IncorrectOperationException
Run Code Online (Sandbox Code Playgroud)

有一次我在 Kotlin 课上给他们打电话。

我很感激有关如何修改 Kotlin 和 Java 类的任何提示(最好使用相同的方法)。

intellij-idea intellij-plugin kotlin

3
推荐指数
1
解决办法
487
查看次数

plugin.xml 中的 &lt;idea-version&gt; 在最终 jar 中被覆盖

我正在创建一个自定义插件并使用 plugin.xml 文件中的详细信息:

<idea-version since-build="162.0" until-build="181.*"/>
Run Code Online (Sandbox Code Playgroud)

但是在我使用 gradle-build task 构建插件项目后,我看到最终 jar 中的 plugin.xml 如下。不知何故,我定义的标签被覆盖了。

<idea-version since-build="181.4445" until-build="181.*"/>
Run Code Online (Sandbox Code Playgroud)

我想使用“162.0”使插件在较旧的 IDE 版本中工作。

intellij-idea intellij-plugin

3
推荐指数
1
解决办法
399
查看次数