Skip to content

Commit

Permalink
1.3.13 更新
Browse files Browse the repository at this point in the history
  • Loading branch information
DragonKnightOfBreeze committed Jul 15, 2024
1 parent 8bffd7d commit ad0b6d2
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ import icu.windea.pls.script.psi.*
import java.io.*

class ParadoxInferredScopeContextAwareDefinitionIndexSupport : ParadoxExpressionIndexSupport<ParadoxInferredScopeContextAwareDefinitionInfo> {
object Data {
val DEFINITION_TYPES = arrayOf("scripted_trigger", "scripted_effect")
}

private val compressComparator = compareBy<ParadoxInferredScopeContextAwareDefinitionInfo> { it.typeExpression }

override fun id() = ParadoxExpressionIndexId.InferredScopeContextAwareDefinition.code
Expand All @@ -24,7 +28,7 @@ class ParadoxInferredScopeContextAwareDefinitionIndexSupport : ParadoxExpression
val dataType = config.expression.type
if(dataType != CwtDataTypes.Definition) return
val definitionType = config.expression.value?.substringBefore('.') ?: return
if(definitionType !in ParadoxExpressionIndexHandler.inferredScopeContextAwareDefinitionTypes) return
if(definitionType !in Data.DEFINITION_TYPES) return
}

val definitionName = element.value
Expand Down Expand Up @@ -226,4 +230,4 @@ class ParadoxOnActionInEventIndexSupport : ParadoxExpressionIndexSupport<Paradox
val elementOffset = storage.readIntFast()
return ParadoxOnActionInEventInfo(onActionName, containingEventName, containingEventScope, scopesElementOffset, elementOffset, gameType)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import icu.windea.pls.core.collections.*
import icu.windea.pls.core.util.*
import icu.windea.pls.ep.index.*
import icu.windea.pls.lang.*
import icu.windea.pls.lang.index.*
import icu.windea.pls.lang.search.scope.*
import icu.windea.pls.lang.util.*
import icu.windea.pls.model.*
Expand Down Expand Up @@ -82,7 +83,7 @@ class ParadoxBaseDefinitionInferredScopeContextProvider : ParadoxDefinitionInfer
return withRecursionGuard("icu.windea.pls.lang.scope.ParadoxBaseDefinitionInferredScopeContextProvider.doProcessQuery") {
withCheckRecursion(definitionInfo.name + "@" + definitionInfo.type) {
val indexId = ParadoxExpressionIndexId.InferredScopeContextAwareDefinition
ParadoxExpressionIndexHandler.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
ParadoxExpressionIndex.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
val psiFile = file.toPsiFile(project) ?: return@p true
infos.forEachFast f@{ info ->
//TODO 1.0.6+ 这里对应的引用可能属于某个复杂表达式的一部分(目前不需要考虑兼容这种情况)
Expand Down Expand Up @@ -187,7 +188,7 @@ class ParadoxEventInOnActionInferredScopeContextProvider : ParadoxDefinitionInfe
if(depth == 1) stackTrace.addLast(thisEventName)

val indexId = ParadoxExpressionIndexId.EventInOnAction
ParadoxExpressionIndexHandler.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
ParadoxExpressionIndex.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
val psiFile = file.toPsiFile(project) ?: return@p true
infos.forEachFast f@{ info ->
val eventName = info.eventName
Expand Down Expand Up @@ -293,7 +294,7 @@ class ParadoxEventInEventInferredScopeContextProvider : ParadoxDefinitionInferre

val toRef = "from".repeat(depth)
val indexId = ParadoxExpressionIndexId.EventInEvent
ParadoxExpressionIndexHandler.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
ParadoxExpressionIndex.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
val psiFile = file.toPsiFile(project) ?: return@p true
infos.forEachFast f@{ info ->
val eventName = info.eventName
Expand Down Expand Up @@ -444,7 +445,7 @@ class ParadoxOnActionInEventInferredScopeContextProvider : ParadoxDefinitionInfe

val toRef = "from".repeat(depth)
val indexId = ParadoxExpressionIndexId.OnActionInEvent
ParadoxExpressionIndexHandler.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
ParadoxExpressionIndex.processQuery(indexId, project, gameType, searchScope) p@{ file, infos ->
val psiFile = file.toPsiFile(project) ?: return@p true
infos.forEachFast f@{ info ->
val onActionName = info.onActionName
Expand Down Expand Up @@ -525,4 +526,4 @@ class ParadoxOnActionInEventInferredScopeContextProvider : ParadoxDefinitionInfe
override fun getErrorMessage(definition: ParadoxScriptDefinitionElement, definitionInfo: ParadoxDefinitionInfo, info: ParadoxScopeContextInferenceInfo): String {
return PlsBundle.message("script.annotator.scopeContext.3.conflict", definitionInfo.name)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import com.intellij.openapi.progress.*
import com.intellij.openapi.project.*
import com.intellij.openapi.vfs.*
import com.intellij.psi.*
import com.intellij.psi.search.*
import com.intellij.util.*
import com.intellij.util.indexing.*
import icu.windea.pls.core.*
import icu.windea.pls.core.collections.*
Expand Down Expand Up @@ -35,6 +37,30 @@ class ParadoxExpressionIndex : ParadoxFileBasedIndex<List<ParadoxExpressionInfo>

private const val VERSION = 51 //1.3.4
private val markerKey = createKey<Boolean>("paradox.expression.index.marker")

fun <ID : ParadoxExpressionIndexId<T>, T : ParadoxExpressionInfo> processQuery(
id: ID,
project: Project,
gameType: ParadoxGameType,
scope: GlobalSearchScope,
processor: (file: VirtualFile, fileData: List<T>) -> Boolean
): Boolean {
ProgressManager.checkCanceled()
if(SearchScope.isEmptyScope(scope)) return true

return doProcessFiles(scope) p@{ file ->
ProgressManager.checkCanceled()
if(selectGameType(file) != gameType) return@p true //check game type at file level

val fileData = INSTANCE.getFileData(file, project, id)
if(fileData.isEmpty()) return@p true
processor(file, fileData)
}
}

private fun doProcessFiles(scope: GlobalSearchScope, processor: Processor<VirtualFile>): Boolean {
return FileTypeIndex.processFiles(ParadoxScriptFileType, processor, scope)
}
}

override fun getName() = NAME
Expand All @@ -46,7 +72,6 @@ class ParadoxExpressionIndex : ParadoxFileBasedIndex<List<ParadoxExpressionInfo>
is ParadoxScriptFile -> indexDataForScriptFile(file, fileData)
is ParadoxLocalisationFile -> indexDataForLocalisationFile(file, fileData)
}
postIndexData(file, fileData)
compressData(fileData)
}

Expand Down Expand Up @@ -109,10 +134,6 @@ class ParadoxExpressionIndex : ParadoxFileBasedIndex<List<ParadoxExpressionInfo>
})
}

private fun postIndexData(file: PsiFile, fileData: MutableMap<String, List<ParadoxExpressionInfo>>) {
ParadoxExpressionIndexHandler.postIndexData(file, fileData)
}

private fun compressData(fileData: MutableMap<String, List<ParadoxExpressionInfo>>) {
if(fileData.isEmpty()) return
val extensionList = ParadoxExpressionIndexSupport.EP_NAME.extensionList
Expand Down

This file was deleted.

0 comments on commit ad0b6d2

Please sign in to comment.