Как мне прикрепить кешированную информацию к редактору или ресурсу Eclipse? - PullRequest
2 голосов
/ 29 ноября 2011

Я разрабатываю DSL с использованием платформы Xtext Eclipse.

Для поддержки содержимого / завершения кода у меня есть дорогой процесс, который генерирует мне список строк.

Как мнекэшировать результат этого процесса?

Длинная история: Мой DSL взаимодействует со скриптами Groovy.Сценарии предоставляют методы, которые я предлагаю в определенных местах моего DSL.Это довольно медленно, даже когда я использую регулярное выражение для анализа методов сценариев.Поэтому я бы хотел кешировать результаты анализа скриптов.

Из моего анализа код анализа вызывается во время проверки (поэтому у меня не всегда есть редактор) и когда пользователь открывает файл DSL.

Невозможно определить, когдапроверка завершена (код находится в закрытом методе, и разработчики Xtext отказываются это менять).Но я считаю, что это должно быть распространенной проблемой при написании редакторов / компиляторов для Eclipse.Как другие люди решают эту проблему?Есть ли какая-то служба кэширования в платформе Eclipse?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Вы можете использовать модель JVM, предоставляемую Xtext.Пока у вас установлен плагин groovy, через него должны быть доступны его типы и методы.

Кэширование:

На ресурсе есть кеш, который автоматическиизгнан, если есть изменение.

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

Кэш также может быть введен:

@Inject
private IResourceScopeCache cache
0 голосов
/ 29 ноября 2011

Я не уверен, но я думаю, что вы можете повторно использовать org.eclipse.xtext.util.SimpleCache для такого случая.

...