From b57eb26fbefc3aa43029a20e2c94fb9c8d67e185 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 25 Dec 2022 23:37:24 +0530 Subject: [PATCH] feat: improved error handling in case color scheme cannot be parsed --- .../editor/schemes/IDEColorSchemeProvider.kt | 12 ++++++----- .../schemes/LocalCaptureSpecProvider.kt | 20 ++++++++++++++---- tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt b/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt index d2648e575..f8a2e6430 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/schemes/IDEColorSchemeProvider.kt @@ -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 diff --git a/editor/src/main/java/com/itsaky/androidide/editor/schemes/LocalCaptureSpecProvider.kt b/editor/src/main/java/com/itsaky/androidide/editor/schemes/LocalCaptureSpecProvider.kt index 9da91965c..93e1e61f7 100644 --- a/editor/src/main/java/com/itsaky/androidide/editor/schemes/LocalCaptureSpecProvider.kt +++ b/editor/src/main/java/com/itsaky/androidide/editor/schemes/LocalCaptureSpecProvider.kt @@ -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) } diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index e1a9b7e45e4155470da26ebd397de3aca8ab43f0..4cf96815bc762efc21e08c47718b7f0cbdda0a2c 100644 GIT binary patch delta 31 ncmaF+m-+2qW}X0VW)?061`ZB}iai^7{N6KF?AaXiej+~rwv!8` delta 31 ncmaF+m-+2qW}X0VW)?061`ZB}Kf5;a_`PTPvuktA`-%Jj!9fhE