fix(external-editor): Fix TextEditorConfig parsing and add error handling
- TextEditorConfig.from_dict no longer requires 'name' field since name comes from dict key - Added try/except around _render_external_editor_panel to prevent tab bar mismatch
This commit is contained in:
@@ -974,7 +974,10 @@ class App:
|
|||||||
self._render_external_tools_panel()
|
self._render_external_tools_panel()
|
||||||
imgui.separator()
|
imgui.separator()
|
||||||
imgui.text("")
|
imgui.text("")
|
||||||
|
try:
|
||||||
self._render_external_editor_panel()
|
self._render_external_editor_panel()
|
||||||
|
except Exception as e:
|
||||||
|
imgui.text_colored(vec4(1, 0.3, 0.3, 1), f"Error: {str(e)}")
|
||||||
imgui.end_tab_item()
|
imgui.end_tab_item()
|
||||||
if imgui.begin_tab_item("Workspace Layouts")[0]:
|
if imgui.begin_tab_item("Workspace Layouts")[0]:
|
||||||
imgui.text("Experimental: Auto-switch layout by Tier")
|
imgui.text("Experimental: Auto-switch layout by Tier")
|
||||||
|
|||||||
+5
-1
@@ -425,7 +425,11 @@ class ExternalEditorConfig:
|
|||||||
editors = {}
|
editors = {}
|
||||||
for name, ed_data in data.get("editors", {}).items():
|
for name, ed_data in data.get("editors", {}).items():
|
||||||
if isinstance(ed_data, dict):
|
if isinstance(ed_data, dict):
|
||||||
editors[name] = TextEditorConfig.from_dict(ed_data)
|
editors[name] = TextEditorConfig(
|
||||||
|
name=name,
|
||||||
|
path=ed_data.get("path", ""),
|
||||||
|
diff_args=ed_data.get("diff_args", []),
|
||||||
|
)
|
||||||
elif isinstance(ed_data, str):
|
elif isinstance(ed_data, str):
|
||||||
editors[name] = TextEditorConfig(name=name, path=ed_data)
|
editors[name] = TextEditorConfig(name=name, path=ed_data)
|
||||||
return cls(
|
return cls(
|
||||||
|
|||||||
Reference in New Issue
Block a user