标签: intellij-plugin

自定义语言的BNF规则语法突出显示

我正在尝试使用Grammar-Kit插件为IntelliJ开发自定义语言插件.我很容易为定义的标记提供语法高亮,但我无法弄清楚如何在元素或标记 - 父级别突出显示.

这是一个快速而又脏的示例语言 - https://github.com/carymrobbins/intellij-plugin-example

正如@ignatov建议的那样,扩展Annotator类并在你的注册表中注册它plugin.xml.在下面的示例中,我们command通过定义visitCommand方法来突出显示元素.

public class SimpleAnnotator implements Annotator {
    @Override
    public void annotate(@NotNull final PsiElement element, @NotNull final AnnotationHolder holder) {
        element.accept(new SimpleVisitor() {
            @Override
            public void visitCommand(@NotNull SimpleCommand o) {
                super.visitCommand(o);
                setHighlighting(o, holder, SimpleSyntaxHighlighter.COMMAND);
            }
        });
    }

    private static void setHighlighting(@NotNull PsiElement element, @NotNull AnnotationHolder holder,
                                        @NotNull TextAttributesKey key) {
        holder.createInfoAnnotation(element, null).setEnforcedTextAttributes(TextAttributes.ERASE_MARKER);
        holder.createInfoAnnotation(element, null).setEnforcedTextAttributes(
                EditorColorsManager.getInstance().getGlobalScheme().getAttributes(key));
    }
}
Run Code Online (Sandbox Code Playgroud)

intellij-idea bnf jflex intellij-plugin grammar-kit

6
推荐指数
1
解决办法
1382
查看次数

如何将项目从Bitbucket克隆到Intellij IDEA?

我尝试了VCS - >从版本控制中检出 - > Bitbucket(Bitbucket插件).

IDE显示以下内容:

Login to Bitbucket ...
Getting list of repositories ...
Run Code Online (Sandbox Code Playgroud)

就这样.没有包含存储库选择的对话框.

我很感激你的帮助.

谢谢.

version-control bitbucket intellij-idea intellij-plugin

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

以编程方式获取IntelliJ IDEA插件的版本

有没有办法以编程方式获取IntelliJ IDEA插件的版本?

我正在创建自己的IntelliJ IDEA插件,我在plugin.xml中设置了version属性(例如:) <version>3.1.1</version>.我需要在我的插件的"关于"对话框中显示该版本.有没有办法以编程方式获得此值?

我是IntelliJ IDEA插件开发的新手,如果有不同的方式来显示版本号,请告诉我.

java intellij-idea intellij-plugin intellij-14

6
推荐指数
1
解决办法
645
查看次数

IntelliJ:自定义语言:组合其他语言的片段

我正在为IntelliJ创建自定义语言插件。

我希望新语言的文件可以包含其他语言的文本片段。

我想支持的特定语言是HTML,JS,CSS和SQL。

我还希望支持其他自定义语言(即我将为其定义语法的语言)。

我想要的主要功能是语法着色,但是如果我能得到“去声明”之类的东西并立即进行重构,那就更好了。

我的最后一个要求是,可以使用自己的代码告诉IntelliJ片段包含哪种语言。包含不同语言的片段在词法分析器/解析器级别将无法区分。

简而言之,我想实现类似于PhpStorm在字符串中检测到SQL时所执行的操作:

在此处输入图片说明

我查看了IntelliJ的源代码,发现了看起来很相关的ILazyParseableElementType接口,但我不确定这是否可行(如果是-如何在我的代码中准确使用它...)

任何指针将不胜感激...

intellij-idea intellij-plugin

6
推荐指数
1
解决办法
107
查看次数

如何让 Intellij 选择代码完成建议而无需导航到它?

我正在使用带有 Ruby 插件的 IntelliJ IDEA 15.0.6。

我注意到当我用 Java 编写时,代码完成弹出窗口会自动突出显示第一个建议,如下所示 - 选中

这使我只需按“输入”即可完成单词并继续。

然而,当我用 ruby​​ 编写时,没有选择任何建议,就像这样 - 未选中的

这使得我必须使用箭头键导航,以便在我可以点击“输入”之前选择一个建议。

我尝试深入挖掘偏好和整个互联网,但我似乎无法找出为什么会发生这种情况。我尝试添加选项“通过键入点、空格等插入选定的变体”,但它不起作用,因为没有“选定的变体”

我知道这听起来很小,但它可怕地切断了我的工作流程,我相信还有其他人想知道如何做到这一点。

感谢任何能提供帮助的人

ruby intellij-idea code-completion intellij-plugin intellij-15

6
推荐指数
1
解决办法
384
查看次数

独立IntelliJ解析器中的符号解析

我正在尝试使用IntelliJ SDK作为独立的java解析器,它在大多数情况下工作正常,但无法解析泛型方法的返回类型.

当我调试resolveMethodverify(mock).simpleMethod()的IntelliJ内下一样品中:

public class ResolutionTest {

    private interface IMethods {
        String simpleMethod();
    }

    private IMethods mock;

    public static <T> T verify(T m) {
        return m;
    }

    public void test() {
        verify(mock).simpleMethod();
    }

}
Run Code Online (Sandbox Code Playgroud)

我看到返回类型为verify(mock)as IMethods并且simpleMethod也正确解析了.但在我的解析器返回类型verify(mock)TsimpleMethod因为这个失败的决议.我想我没有注册一些服务或扩展,但我无法弄清楚哪一个.

我的解析器:

import com.intellij.codeInsight.ContainerProvider;
import com.intellij.codeInsight.runner.JavaMainMethodProvider;
import com.intellij.core.CoreApplicationEnvironment;
import com.intellij.core.CoreJavaFileManager;
import com.intellij.core.JavaCoreApplicationEnvironment;
import com.intellij.core.JavaCoreProjectEnvironment;
import com.intellij.mock.MockProject;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.extensions.ExtensionsArea;
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*; …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea intellij-plugin

6
推荐指数
1
解决办法
226
查看次数

如何在intellij插件上使用xsd描述符为标签提供额外的属性?

我正在开发一个插件,我在其中注册了一个新的xml扩展,如下所示:

public class NsHtmlExtension extends HtmlXmlExtension {

    @Override
    public boolean isAvailable(PsiFile file) {
        return super.isAvailable(file) &&
                NsFacade.getInstance().isNsProject(file.getProject());
    }

    @Nullable
    @Override
    public String[][] getNamespacesFromDocument(XmlDocument xmlDocument, boolean b) {
        String[][] strings = {{"", NsResourceProvider.NS_DTD_URI}};
        return strings;
    }

} 
Run Code Online (Sandbox Code Playgroud)

现在在html文件上,我使用xsd描述符标记自动完成.

我想添加一些额外的属性,但似乎使用xsd描述符的标签不要求属性提供者提供其他属性.

如何为此扩展添加额外的属性?例如,如果标签Label具有"width"属性,我想添加"i:width","a:width","i.width".."a.width"......

提前致谢.

html xml xsd intellij-plugin

6
推荐指数
0
解决办法
76
查看次数

如何在 intellij Idea 中打开临时/预览选项卡

I like VS Code and sublime editor and in particular their default behaviour of preview the file. When you single click on a file from file explorer pan, it would open it in a temporary tab, unless a change is made in the file or opened with a double click on file, which opens it on persist tab.

Recently I've to use IntelliJ IDEA in a project and so far I like it this particular functionality is holding me up …

intellij-idea intellij-plugin intellij-idea-2016

6
推荐指数
1
解决办法
1630
查看次数

intellij中对Matlab或octave的任何支持

我经常在Matlab/octave中编码.虽然有几个好的功能,但缺乏一个好的编辑器.我的问题是,还有其他好的编辑器.我的偏好是intellij Idea,这是我尝试过的最好的IDE之一.在这方面,我可以将octave或matlab连接到intellij(例如通过一些插件)吗?

matlab intellij-idea octave intellij-plugin

6
推荐指数
1
解决办法
3045
查看次数

如何将Kotlin代码引用从函数更改为intellij插件中的字段?

我正在编写一个intellij插件,我正在重构一个类,将其getters(例如fun name(): String)更改为字段(例如val name: String).

但是,我不知道如何最好地更新相应的PsiReference实例.Kotlin调用者需要更改myObj.name()myObj.name不带括号.

目前,我正在做以下事情:

ReferencesSearch.search(function).findAll().forEach {
    val nextSibling = it.element.nextSibling
    if ((nextSibling as? KtValueArgumentList)?.arguments?.isEmpty() == true) {
        nextSibling.delete()
    }
}
Run Code Online (Sandbox Code Playgroud)

以上工作有点.也就是说,转换正确发生.但是,IDE仍然认为它正在调用一个函数.它myObj.name使用以下消息强调转换中的错误:

类型的表达式"名称" String不能作为函数调用.找不到函数'invoke()'

name在编辑器中手动重写强制intellij刷新引用并且错误消失.

我应该怎么做以防止这种情况发生?

intellij-plugin kotlin

6
推荐指数
1
解决办法
128
查看次数