【问题标题】:Adding Markdown JSX Language Injection to IntelliJ向 IntelliJ 添加 Markdown JSX 语言注入
【发布时间】:2019-03-28 00:45:18
【问题描述】:

小结

所以,我尝试在我的项目中使用MDX。它只是 MarkDown 与一些 JSX(包括 ES6 导入)混合在一起。我想使用 IntelliJ 编辑文件并为 Markdown 位和 JSX 位获得正确的语法突出显示。

我想我应该可以为此配置一个language injection,但我在尝试前进时有点停滞不前。看起来我需要自己编写 XML,因为我想要的语言语法是 JSX,而 UI 中唯一的目标语言是 xml、js、sql 和其他一些常见的语言。

我的尝试

查看Groovy injectionsJava injections 的来源,我开始拼凑我需要的东西。

looked at the PSI Structure 我的一个示例 MDX 文件(我已告诉 IntelliJ 将其视为 Markdown)。我可以看到我的 JSX 标记被注册为 HTML_TAG 元素。

<?xml version="1.0" encoding="UTF-8"?>
<component name="LanguageInjectionConfiguration">
    <injection language="JSX" injector-id="markdown">
        <display-name>JSX in Markdown</display-name>
        <place><![CDATA[psiElement().withElementType(org.intellij.plugins.markdown.lang.MarkdownTokenTypes.HTML_TAG)]]></place>
    </injection>
</component>

IntelliJ 无法导入它,并显示一条消息“没有导入新条目”。然后我查看了一个示例导出,发现我应该使用&lt;LanguageInjectionConfiguration&gt; 标签,所以我尝试了:

<LanguageInjectionConfiguration>
    <injection language="JSX" injector-id="markdown" enabled="true">
        <display-name>JSX in Markdown</display-name>
        <place><![CDATA[psiElement().withElementType(org.intellij.plugins.markdown.lang.MarkdownTokenTypes.HTML_TAG)]]></place>
    </injection>
</LanguageInjectionConfiguration>

...但是,我收到了同样的错误。

查看 IntelliJ 日志,它显示此错误:

2018-10-23 12:17:28,680 [3894254] 警告 - s.compiler.PatternCompilerImpl - Markdown 中的 JSX:psiElement().withElementType(org.intellij.plugins.markdown.lang.MarkdownTokenTypes.HTML_TAG)

java.lang.IllegalStateException: 33(.): 'org.'方法名 start 无效,应为 '('

在 com.intellij.patterns.compiler.PatternCompilerImpl.throwError(PatternCompilerImpl.java:293)

...长长的堆栈跟踪...

在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

MarkdownTokenTypes.HTML_TAG 绝对是one of the withElementType method signatures 所需的IElementType

结论

我担心我把事情复杂化了。是否有编写自定义语言注入的好指南?我不清楚 place 标记的返回类型应该是什么,也不清楚我是否应该使用模式而不是位置。

【问题讨论】:

标签: intellij-idea markdown jsx remarkjs


【解决方案1】:

根据this issue 上的评论,计划推出的插件将在 JetBrains 产品中启用对 MDX 的“基本支持”:

尚不清楚“基本 MDX 支持”是什么意思,但它不仅仅是语法高亮和单词补全。它将具有“编码帮助”,我认为这将是上下文操作、自动导入等。我要求在线程上澄清,如果我听到更多信息,我会更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2018-10-26
    • 2018-08-13
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多