问题标签 [intellij-platform-psi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 从 Kotlin PSI 获取注解参数(或注解实例)
我有一个 Kotlin 注释:
它可以通过两种方式在 Kotlin 类上使用:使用命名参数语法,或使用位置参数语法:
我在我的自定义检测规则中使用此注释进行一些额外的检查。我需要提取type
参数的值以基于它执行一些检查。我这样做:
但是此代码仅适用于“命名”参数语法,并且对于位置参数无效。无论使用什么语法,有什么方法可以获取注释参数的值?如果我可以直接从 PSI / AST / s获取我的Type
注释实例并像往常一样使用它,那将是完美的。KtElement
是否可以从 PSI 树实例化注释?
kotlin - IntelliJ / Kotlin PSI中的注释与注释条目
我有一个 Kotlin 注释:
它可以用于 Kotlin 类:
我正在使用detekt分析此源代码,它提供对Kotlin PSI的访问。要获得注释,我使用如下代码:
其中,klass
有一种KtClass
来自 Kotlin PSI 的类型。我注意到,它KtClass
有两个属性:annotations
并且annotationEntries
对于annotations
上面的带注释的类是空的。
annotations
我应该使用什么以及annotationEntries
何时应该使用什么之间有什么区别?
kotlin - 如何在 Kotlin PSI 中获得类的完全限定域名?
我有一个 Kotlin 数据类:
我正在用detekt分析它,它提供了对Kotlin PSI的访问。
我正在尝试获取我班级的 FQDN:
其中,klass
有一种KtClass
来自 Kotlin PSI 的类型。但是该代码只打印了我的班级的一个简短名称,例如Example
,而我想得到a.b.c.Example
.
如何在 Kotlin PSI 中获得类的完全限定域名?
flutter - 如何使用 intellij Dart 插件在 dart 中创建新语句
在java中,我们可以创建一个像上面这样的语句。我克隆了颤振插件,我正在添加一个新的意图(alt + enter)函数,但我不知道如何在 dart 中创建新语句。
intellij-plugin - 如何从 PsiElement 或 VirtualFile 获取 KtClass?
我想制作一个插件,为某些特定的 kotlin 文件生成一些模板代码。现在我需要从 PsiElement 或 VirtualFile 获取 KtClass。我尝试了一些如下代码,但它不起作用。
PS:我发现有2个PsiTreeUtils
,一个 from org.jetbrains.kotlin.com.intellij.psi.util
package ,一个 from com.intellij.psi.util
,不知道用哪个
kotlin - Intellij 插件:由 PsiFile.findElementAt() 返回的元素提供很少的语言/语法信息
我正在尝试创建一个 Intellij 插件,它与我最近创建的 VSCode 扩展Ligatures Limited执行相同的操作,该插件旨在防止来自 Fira Code 等字体的字体编码连字脱离上下文呈现,以便它们工作对于诸如运算符和标点符号之类的东西,但不要出现在注释和字符串中。
我尝试遵循此示例中的代码:https ://github.com/JetBrains/intellij-sdk-docs/tree/master/code_samples/psi_demo
...但是当我创建看起来像这样的代码时
...对于三种不同的文件类型,我发现只有 JSON 文件(JSON、JavaScript 和 TypeScript 文件)被语言识别,并且在我的扩展允许看到的范围内被标记化。语法着色和其他特定于语言的支持显然在某种程度上起作用,但不是我的扩展程序似乎能够访问的方式。
psiFile.language
适用JSON
于 JSON,但仅TEXT
适用于 JavaScript 和textmate
TypeScript。
我可以看到 JSON 的所有不同标记类型(JsonObject、JsonStringLiteral、JsonProperty 等),但 JavaScript 文件作为一个大的 TEXT 标记返回,其中包含 JavaScript 文件的所有文本,TypeScript 只产生PsiElement(empty token)
这是我当前的plugin.xml
文件:
我有点担心我可能需要为我想要解析的每种语言显式添加依赖项。但是话又说回来,添加<depends optional="true">JavaScript</depends>
并没有帮助我进一步解析 JavaScript,所以也许这无论如何也无济于事。
这可能是一个时间问题,就像我highlightVisitor
在文件被解析之前收到回调一样?
intellij-idea - 完全创建和构建新项目时的 Intellij 平台插件侦听器
我是 Intellij 平台插件开发的新手。所需的情况是,当新项目成功创建和构建时(在创建所有必需的源之后),我想要一个监听器。我尝试了以下几种:
- 项目经理监听器
- PostStartUpActivity
- 编译任务
这些都不起作用。项目一打开,即在构建完成和文件创建之前,就会调用前两个监听器。但是在构建完成后我需要一个监听器,以便我可以访问所有源文件夹和文件。这种情况有什么解决方法吗?