in src/main/kotlin/mobi/hsz/idea/gitignore/daemon/IgnoreDirectoryMarkerProvider.kt [31:64]
override fun getLineMarkerInfo(element: PsiElement): LineMarkerInfo<*>? {
if (element !is IgnoreEntryFile) {
return null
}
var isDirectory = element is IgnoreEntryDirectory
if (!isDirectory) {
val key = element.getText()
if (cache.containsKey(key)) {
isDirectory = cache[key] ?: false
} else {
val parent = element.getContainingFile().virtualFile.parent ?: return null
val project = element.getProject()
Utils.getModuleForFile(parent, project) ?: return null
val matcher = project.service<IgnoreMatcher>()
val file = Glob.findOne(parent, element, matcher)
cache[key] = file != null && file.isDirectory.also { isDirectory = it }
}
}
return when {
isDirectory -> LineMarkerInfo(
element.getFirstChild(),
element.getTextRange(),
PlatformIcons.FOLDER_ICON,
null,
null,
GutterIconRenderer.Alignment.CENTER,
IgnoreBundle.messagePointer("daemon.lineMarker.directory")
)
else -> null
}
}