我正在尝试使用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) 我尝试了VCS - >从版本控制中检出 - > Bitbucket(Bitbucket插件).
IDE显示以下内容:
Run Code Online (Sandbox Code Playgroud)Login to Bitbucket ... Getting list of repositories ...
就这样.没有包含存储库选择的对话框.
我很感激你的帮助.
谢谢.
有没有办法以编程方式获取IntelliJ IDEA插件的版本?
我正在创建自己的IntelliJ IDEA插件,我在plugin.xml中设置了version属性(例如:) <version>3.1.1</version>.我需要在我的插件的"关于"对话框中显示该版本.有没有办法以编程方式获得此值?
我是IntelliJ IDEA插件开发的新手,如果有不同的方式来显示版本号,请告诉我.
我正在为IntelliJ创建自定义语言插件。
我希望新语言的文件可以包含其他语言的文本片段。
我想支持的特定语言是HTML,JS,CSS和SQL。
我还希望支持其他自定义语言(即我将为其定义语法的语言)。
我想要的主要功能是语法着色,但是如果我能得到“去声明”之类的东西并立即进行重构,那就更好了。
我的最后一个要求是,可以使用自己的代码告诉IntelliJ片段包含哪种语言。包含不同语言的片段在词法分析器/解析器级别将无法区分。
简而言之,我想实现类似于PhpStorm在字符串中检测到SQL时所执行的操作:
我查看了IntelliJ的源代码,发现了看起来很相关的ILazyParseableElementType接口,但我不确定这是否可行(如果是-如何在我的代码中准确使用它...)
任何指针将不胜感激...
我正在使用带有 Ruby 插件的 IntelliJ IDEA 15.0.6。
我注意到当我用 Java 编写时,代码完成弹出窗口会自动突出显示第一个建议,如下所示 -

这使我只需按“输入”即可完成单词并继续。
然而,当我用 ruby 编写时,没有选择任何建议,就像这样 -

这使得我必须使用箭头键导航,以便在我可以点击“输入”之前选择一个建议。
我尝试深入挖掘偏好和整个互联网,但我似乎无法找出为什么会发生这种情况。我尝试添加选项“通过键入点、空格等插入选定的变体”,但它不起作用,因为没有“选定的变体”
我知道这听起来很小,但它可怕地切断了我的工作流程,我相信还有其他人想知道如何做到这一点。
感谢任何能提供帮助的人
ruby intellij-idea code-completion intellij-plugin intellij-15
我正在尝试使用IntelliJ SDK作为独立的java解析器,它在大多数情况下工作正常,但无法解析泛型方法的返回类型.
当我调试resolveMethod了verify(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)是T和simpleMethod因为这个失败的决议.我想我没有注册一些服务或扩展,但我无法弄清楚哪一个.
我的解析器:
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) 我正在开发一个插件,我在其中注册了一个新的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"......
提前致谢.
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 …
我经常在Matlab/octave中编码.虽然有几个好的功能,但缺乏一个好的编辑器.我的问题是,还有其他好的编辑器.我的偏好是intellij Idea,这是我尝试过的最好的IDE之一.在这方面,我可以将octave或matlab连接到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 ×10
java ×2
bitbucket ×1
bnf ×1
grammar-kit ×1
html ×1
intellij-14 ×1
intellij-15 ×1
jflex ×1
kotlin ×1
matlab ×1
octave ×1
ruby ×1
xml ×1
xsd ×1