美文网首页
文件视图提供者

文件视图提供者

作者: pr488 | 来源:发表于2017-01-08 21:30 被阅读47次

    原文链接:
    http://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/file_view_providers.html

    文件视图提供者(查看FileViewProvider类)是在IntelliJ IDEA 6.0引入的。它的主要目的是为了管理单个文件多个PSI树的访问。

    例如,一个JSPX页面有单独的Java代码(PsiJavaFile)的PSI树, 有单独的XML代码(XmlFile)的PSI树和单独的作为JspFile文件的PSI树。

    每个PSI树都覆盖文件的整个内容,并且在有不同语言的内容的位置包含特殊的“外部语言元素”。

    一个FileViewProvider实例对应单个VirtualFile、单个Document并且可以用来检索多个PsiFile实例。

    我怎样得到一个FVP?

    • 虚拟文件:PsiManager.getInstance(project).findViewProvider()
    • PSI文件:psiFile.getViewProvider()

    我能用它来做什么?

    • 得到一个文件中所有现有语言的PSI树列表:fileViewProvider.getLanguages()
    • 得到特定语言的PSI树:fileViewProvider.getPsi(language),其中Language参数可以采用在StdLanguages类中定义的语言类型的值。例如,要得到XML的PSI树,使用fileViewProvider.getPsi(StdLanguages.XML)
    • 在文件中指定的偏移处找到特定语言的元素:fileViewProvider.findElementAt(offset,language)

    我怎样扩展FVP?

    要创建一个拥有多种不同语言的文件类型,你的插件必须包含一个*IntelliJ平台 *核心可用的fileType.fileViewProviderFactory扩展点的扩展。

    这个扩展点是使用FileTypeExtensionPointbean类声明的。

    访问这个扩展点需要新建一个实现FileViewProviderFactory接口的Java类并在这个类中重写createFileViewProvider方法。

    要声明fileType.fileViewProviderFactory扩展点的扩展,在plugin.xml文件中的<extensions>部分使用以下语法:

    <extensions>
      <fileType.fileViewProviderFactory filetype="%file_type%" implementationClass="%class_name%" />
    </extensions>
    

    其中%file_type%指要创建的文件类型(例如"JFS"),%class_name%指实现FileViewProviderFactory接口的类名。

    相关文章

      网友评论

          本文标题:文件视图提供者

          本文链接:https://www.haomeiwen.com/subject/wjoqbttx.html