【问题标题】:How do I attach some cached information to an Eclipse editor or resource?如何将一些缓存信息附加到 Eclipse 编辑器或资源?
【发布时间】:2011-11-29 11:23:40
【问题描述】:

我正在使用 Eclipse 的 Xtext 框架开发 DSL。

对于内容辅助/代码完成,我有一个昂贵的过程来生成字符串列表。

如何缓存该过程的结果?

长话短说:我的 DSL 与 Groovy 脚本接口。这些脚本提供了我在 DSL 的某些地方提供的方法。即使我使用正则表达式来解析脚本的方法,这也很慢。所以我想缓存脚本分析的结果。

根据我的分析,分析代码在验证期间(因此我并不总是有编辑器)和用户打开 DSL 文件时被调用。

无法判断验证何时结束(代码位于私有方法中,Xtext 开发人员拒绝更改)。但我认为在为 Eclipse 编写编辑器/编译器时,这一定是一个常见问题。其他人如何解决这个问题? Eclipse 框架中有缓存服务吗?

【问题讨论】:

    标签: eclipse caching editor code-completion xtext


    【解决方案1】:

    您可以使用 Xtext 提供的 JVM 模型。只要你安装了 groovy 插件,它的类型和方法应该可以通过它使用。

    缓存:

    在资源上有一个缓存,如果它发生变化,它会自动被驱逐。

    ((XtextResource)x.eResource()).getCache().get(myKey, x.eResource(), 
        new Provider<List<String>>(){
            public List<String> get() {
                return computeGroovyMethodNames();
            }
        })
    

    缓存也可以注入:

    @Inject
    private IResourceScopeCache cache
    

    【讨论】:

      【解决方案2】:

      我不确定,但我认为您可以在这种情况下重复使用 org.eclipse.xtext.util.SimpleCache

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 2013-09-16
        • 1970-01-01
        相关资源
        最近更新 更多