@@ -6,14 +6,21 @@ import com.intellij.database.model.DasIndex
66import com.intellij.database.model.DasNamespace
77import com.intellij.database.model.DasTable
88import com.intellij.database.model.DasTableKey
9+ import com.intellij.openapi.Disposable
910import com.intellij.openapi.application.ApplicationManager
11+ import com.intellij.openapi.application.ReadAction
1012import com.intellij.openapi.project.DumbService
1113import com.intellij.openapi.project.Project
14+ import com.intellij.openapi.util.Disposer
1215import com.intellij.openapi.util.TextRange
1316import com.intellij.psi.PsiElement
17+ import com.intellij.psi.PsiManager
18+ import com.intellij.psi.PsiTreeChangeAdapter
19+ import com.intellij.psi.PsiTreeChangeEvent
1420import dev.ekvedaras.laravelquery.utils.DbReferenceResolver
1521import dev.ekvedaras.laravelquery.utils.PsiUtils.Companion.unquoteAndCleanup
1622import dev.ekvedaras.laravelquery.utils.TableAndAliasCollector
23+ import kotlin.math.exp
1724import org.apache.commons.lang.StringUtils.substringBefore
1825
1926class DbReferenceExpression (val expression : PsiElement , val type : Type ) {
@@ -55,11 +62,17 @@ class DbReferenceExpression(val expression: PsiElement, val type: Type) {
5562 ranges.add(TextRange .from(if (ranges.isNotEmpty()) ranges.last().endOffset + 1 else 1 , part.length))
5663 }
5764
58- if (! DumbService .isDumb(project) && ApplicationManager .getApplication().isReadAccessAllowed) {
59- ApplicationManager .getApplication().runReadAction {
65+ if (! DumbService .isDumb(project)) {
66+ val expressionDisposable = Disposer .newDisposable()
67+ PsiManager .getInstance(project).addPsiTreeChangeListener(object : PsiTreeChangeAdapter () {
68+ override fun childrenChanged (event : PsiTreeChangeEvent ) {
69+ expressionDisposable.dispose()
70+ }
71+ }, expressionDisposable)
72+ ReadAction .nonBlocking<Unit > {
6073 TableAndAliasCollector (this ).collect()
6174 DbReferenceResolver (this ).resolve()
62- }
75+ }.inSmartMode(project).expireWith(expressionDisposable).executeSynchronously()
6376 }
6477 }
6578}
0 commit comments