Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Intellij idea Intellij插件api方法ForcePSiPostProcessandStoreElement用途_Intellij Idea_Intellij Plugin - Fatal编程技术网

Intellij idea Intellij插件api方法ForcePSiPostProcessandStoreElement用途

Intellij idea Intellij插件api方法ForcePSiPostProcessandStoreElement用途,intellij-idea,intellij-plugin,Intellij Idea,Intellij Plugin,我正在尝试修改插件,使其支持旧版本的IDEA(IC-129)。我遇到的一个问题是,它使用了CodeInsightUtilCore中的forcePsiPostprocessAndRestoreElement,这在旧sdk中是不存在的。读完后,我仍然不明白这个方法在做什么。有人能解释一下它的意思吗,或者(并且)指出做同样事情的老方法吗?修改PSI时,格式设置会在写入操作结束时应用,或者在显式调用doPostPoneOperations和UnblockDocument时应用。如果您需要修改文档,则可能

我正在尝试修改插件,使其支持旧版本的IDEA(IC-129)。我遇到的一个问题是,它使用了
CodeInsightUtilCore
中的
forcePsiPostprocessAndRestoreElement
,这在旧sdk中是不存在的。读完后,我仍然不明白这个方法在做什么。有人能解释一下它的意思吗,或者(并且)指出做同样事情的老方法吗?

修改PSI时,格式设置会在写入操作结束时应用,或者在显式调用doPostPoneOperations和UnblockDocument时应用。如果您需要修改文档,则可能需要此调用,否则您将得到PSI修改尚未完成(缺少格式)的断言。因为格式化会改变文档和PSI,所以您拥有的元素可能会失效,或者至少其范围可能会改变

forcePsiPostprocessAndRestoreElement立即执行延迟的格式设置,并尝试在更新的树中查找与您之前持有的PsiElement相对应的PsiElement,您可能需要进行进一步处理


或者,您可以创建指向该元素的SmartPSElement指针,并希望它能够经受住格式化程序的修改(通常是这样)。

SmartPointerManagerImpl
中有一个方法
fastenBelts
。这是个玩笑吗?人们怎么可能希望学习这样的api呢?我在谷歌上搜索了一下,在PsiElement lifecycle上什么也没找到。这真是令人沮丧。这个方法名是个笑话,但它不是API,所以您不需要理解它。很抱歉,API文档太少。顺便说一句,包括javadoc在内的贡献是非常受欢迎的。是否有“入口点”类(包)可以让我开始了解整个情况?是否有一个地方(比如git submit comments)证明了API的发展?对于不同的API部分,入口点是不同的。我建议您在网站上阅读架构概述和其他主题。Git commit messages()可能会揭示API的发展,至少从2005年开始是这样,但阅读它们很可能是浪费时间。问问题的最佳场所是插件开发论坛()
CodeInsightUtilBase\forcepsiPostProcessandStoreElement