feat: improved error handling in case color scheme cannot be parsed

This commit is contained in:
Akash Yadav
2022-12-25 23:37:24 +05:30
parent edcb9c91eb
commit b57eb26fbe
3 changed files with 23 additions and 9 deletions
@@ -43,9 +43,13 @@ object IDEColorSchemeProvider {
private const val SCHEME_FILE = "scheme.file"
val currentScheme: IDEColorScheme? by lazy {
this.schemes[colorScheme]?.let {
it.load()
it
val scheme = this.schemes[colorScheme] ?: return@lazy null
return@lazy try {
scheme.load()
scheme
} catch (err: Exception) {
log.error("An error occurred while loading color scheme '$colorScheme'", err)
null
}
}
@@ -100,8 +104,6 @@ object IDEColorSchemeProvider {
scheme.langs = langs.toTypedArray()
schemes[schemeDir.name] = scheme
}
currentScheme!!
}
@JvmStatic
@@ -17,20 +17,32 @@
package com.itsaky.androidide.editor.schemes
import com.itsaky.androidide.utils.ILogger
import io.github.rosemoe.sora.editor.ts.LocalsCaptureSpec
/**
* Provides local
*
* @author Akash Yadav */
* @author Akash Yadav
*/
object LocalCaptureSpecProvider {
private val log = ILogger.newInstance("LocalCaptureSpecProvider")
@JvmStatic
fun newLocalCaptureSpec(type: String): LocalsCaptureSpec {
val scheme = IDEColorSchemeProvider.currentScheme!!
val lang = scheme.languages[type] ?: return LocalsCaptureSpec.DEFAULT
val lang =
IDEColorSchemeProvider.currentScheme?.languages?.get(type)
?: run {
log.error(
"Cannot create LocalsCaptureSpec",
"Failed to load current color scheme.",
"Falling back to default implementation"
)
return LocalsCaptureSpec.DEFAULT
}
return object : LocalsCaptureSpec() {
override fun isDefinitionCapture(captureName: String): Boolean {
return lang.isLocalDef(captureName)
}
Binary file not shown.