Class-framework-agnostic code editor#2858
Conversation
Summary of ChangesHello @nighca, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a major architectural overhaul to generalize the Code Editor module, making it adaptable to various XGo class frameworks beyond just SPX. This is achieved by establishing clear interfaces, implementing dependency injection, and isolating framework-specific logic. A significant focus is also placed on improving project persistence, with robust serialization and deserialization capabilities for AI-generated assets and their states, allowing for seamless saving and loading of projects even mid-generation. The project loading mechanism itself has been fortified to intelligently manage local cache and cloud data, enhancing overall data integrity and user experience. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
| @@ -0,0 +1,14 @@ | |||
| import { inject, provide, type InjectionKey } from 'vue' | |||
There was a problem hiding this comment.
从 CopilotRoot 中抽出来以避免可能的循环依赖;拆之前的 CopilotRoot 同时承载了
- copilot context 的定义(会被 app 中的其他业务逻辑依赖)
- 集成 app 中的其他业务逻辑(会依赖其他业务逻辑)
这两个角色,所以在 code-editor 统一对外的导出文件后会引入循环依赖
| import { effectKinds } from '@/utils/spx' | ||
| import SpxEffectKindItem from './SpxEffectKindItem.vue' | ||
|
|
||
| defineProps<{ |
There was a problem hiding this comment.
不改变组件的行为,只是加上 props、emits 类型声明以匹配统一的 InputHelper Component 类型要求
|
|
||
| export type SelectableResource = Exclude<ResourceModel, Stage> | ||
|
|
||
| // TODO: Merge with `IResourceSelector` in `xgo-code-editor` to simplify the codebase. |
There was a problem hiding this comment.
这个先没调整,是因为这里对 items 和 useCreateMethods 的类型要求与 xgo-code-editor IResourceSelector 对二者的类型要求不同;前者是既有逻辑,后者是新增接口,但传递 resource 信息时要求 resource URI 而不是 resource(sprite 等)实例,要二者合并起来改动比较大,之后再看
| * We temporarily disable encoding to keep things working, but we should fix the language server | ||
| * to do the encoding and re-enable this in the future. | ||
| */ | ||
| const shouldEncodeResourceName = false |
| @@ -0,0 +1,37 @@ | |||
| /** | |||
There was a problem hiding this comment.
之后 spx-code-editor 和 xgo-code-editor 两个模块与 components/ui 类似,视作相对独立的整体,对外导出统一到单个文件
3d767fe to
682c4ea
Compare
| /** `RotationStyle` in spx */ | ||
| SpxRotationStyle = 'spx-rotation-style', | ||
| /** Resource name (`SpriteName`, `SoundName`, etc.) */ | ||
| // TODO: Rename to `resource-name` or `xgo-resource-name` — the resource mechanism is spx-agnostic |
There was a problem hiding this comment.
这个字符串值后续应该改为 resource-name 或 xgo-resource-name,因为“resource”的机制是与 spx 无关的,spx resource 是 resource 的一种实现
There was a problem hiding this comment.
Pull request overview
Extracts a class-framework-agnostic XGo code editor core and re-builds the SPX editor integration on top of it, including updated highlighting/language IDs and several new editor UI subsystems (completion/hover/diagnostics/context menu/etc.). This aligns Builder’s editor architecture with the need to support multiple XGo class frameworks (issue #2803).
Changes:
- Introduce
xgo-code-editor(framework-agnostic core) andspx-code-editor(SPX adapter/wrapper) modules. - Move XGo identifier/name utilities and syntax highlighting assets from
spxutils toxgo, and switch default highlight language toxgo. - Update editor/coprocessor integrations (Copilot MCP tools, tutorial/copilot context injection, resource typing refactors).
Reviewed changes
Copilot reviewed 110 out of 186 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| spx-gui/src/utils/xgo/index.ts | New XGo identifier/keyword utilities extracted from SPX utils. |
| spx-gui/src/utils/xgo/index.test.ts | Tests for XGo identifier name normalization. |
| spx-gui/src/utils/xgo/highlighter.ts | Update Shiki language aliases to prefer xgo. |
| spx-gui/src/utils/spx/index.ts | Remove XGo identifier helpers/keywords from SPX utils. |
| spx-gui/src/pages/editor/index.vue | Wire code editor via spx-code-editor and register MCP tools via registry. |
| spx-gui/src/models/spx/project.ts | Remove getResourceModel API (resource model typing refactor). |
| spx-gui/src/models/spx/gen/aigc-mock.ts | Cleanup unused-vars eslint disables after config change. |
| spx-gui/src/models/spx/common/resource.ts | Rename resource type alias and remove ResourceModelIdentifier helper. |
| spx-gui/src/models/spx/common/asset-name.ts | Switch XGo identifier imports to @/utils/xgo. |
| spx-gui/src/components/tutorials/TutorialRoot.vue | Use new Copilot context module. |
| spx-gui/src/components/tutorials/TutorialCourseSuccess.vue | Use new Copilot context module. |
| spx-gui/src/components/editor/stage/StageEditor.vue | Switch imports to spx-code-editor UI exports. |
| spx-gui/src/components/editor/sprite/SpriteEditor.vue | Switch imports to spx-code-editor UI exports. |
| spx-gui/src/components/editor/runtime.ts | Move TextDocumentRange import to xgo editor module. |
| spx-gui/src/components/editor/preview/EditorPreview.vue | Use spx-code-editor API for diagnostics + code file naming. |
| spx-gui/src/components/editor/panels/ConsolePanel.vue | Use spx-code-editor exports for CodeLink + document naming. |
| spx-gui/src/components/editor/editor-state.ts | Update ResourceModel import to new resource module. |
| spx-gui/src/components/editor/common/EditorList.vue | Update ResourceType typing import. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/snippet.ts | New framework-agnostic snippet parser with provider-based variables. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/resource/index.ts | Resource references controller refactor to IResourceProvider. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/markdown/index.ts | Default markdown code fences now use xgo. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/markdown/ResourcePreview.vue | Render resources via provider-defined renderer component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/markdown/InputValuePreview.vue | New provider-driven input value preview rendering. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/markdown/DiagnosticItem.vue | New diagnostic item UI building block. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/markdown/CodeBlock.vue | New markdown code block renderer using CodeView. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/pen.svg | New input-helper icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/index.ts | Input helper controller refactor + re-exports of provider types. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/StringInput.vue | New generic string input component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/ResourceInput.vue | Resource input refactored to use IResourceProvider selector/renderer. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/IntegerInput.vue | New generic integer input component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/InputHelperUI.vue | Input helper UI now uses provider-defined type handlers. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/DecimalInput.vue | New generic decimal input component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/input-helper/BooleanInput.vue | Update boolean input emits to include submit. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/inlay-hint/index.ts | Inlay-hint controller now re-exports core types from generic module. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/inlay-hint/InlayHintUI.vue | New inlay hint decoration renderer. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/icons/zoom-reset.svg | New zoom control icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/icons/zoom-out.svg | New zoom control icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/icons/zoom-in.svg | New zoom control icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/hover/index.ts | Hover controller refactor to new generic hover provider types. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/hover/HoverUI.vue | New hover dropdown UI and hovered-text decorations. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/hover/HoverCardContent.vue | New hover content wrapper component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/hover/HoverCard.vue | New hover card container + action buttons. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/hover/ActionButton.vue | New hover action button component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/drop-indicator/index.ts | Drop indicator controller refactor to UI-controller type. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/drop-indicator/DropIndicatorUI.vue | New drop indicator decorations renderer. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/document-tab/DocumentTabs.vue | New document tab list UI (main + temp docs). |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/document-tab/DocumentTab.vue | Tab rendering now driven by text document displayName + thumbnail. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/diagnostics/index.ts | Diagnostics controller refactor to generic diagnostics provider types. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/diagnostics/DiagnosticsUI.vue | New diagnostic decorations renderer. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/read.svg | New definition icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/listen.svg | New definition icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/DefinitionOverviewWrapper.vue | New definition overview wrapper UI. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/DefinitionItem.vue | New definition item renderer. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/DefinitionIcon.vue | New definition icon selection component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/DefinitionDetailWrapper.vue | New definition detail layout wrapper. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/definition/DefinitionDetail.vue | New definition detail renderer (document base + slot fallback). |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/copilot.ts | Default markdown code fences now use xgo. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/context-menu/index.ts | Context menu controller refactor to generic provider types. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/context-menu/ContextMenuUI.vue | New context menu UI wiring (menu + trigger). |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/context-menu/ContextMenuTrigger.vue | New context-menu trigger button implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/context-menu/ContextMenu.vue | New context-menu dropdown content. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/index.ts | Completion controller refactor to generic provider types. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/fuzzy/strings.ts | New fuzzy helper utility (copied upstream). |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/fuzzy/README.md | Attribution doc for copied fuzzy implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/CompletionUI.vue | New completion dropdown container. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/CompletionItem.vue | New completion item rendering with match highlighting. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/completion/CompletionCard.vue | New completion list + documentation pane UI. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/common.ts | New shared Monaco conversion + decoration utilities. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/rename.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/modify.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/goto.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/fix.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/copy.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/copilot.svg | New command icon asset. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/command/CommandIcon.vue | New command icon component. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/api-reference/index.ts | API reference controller refactor + category view info support. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/ZoomControl.vue | New code editor zoom control UI. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/MonacoEditor.vue | New Monaco editor wrapper component with custom options. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/ui/CodeEditorCard.vue | New shared card container for editor popovers. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/snippet-variables.ts | New snippet variables provider contract + default implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/resource.ts | Generic resource provider contract + default LSP-backed implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/project.ts | Define ClassFramework + IXGoProject abstraction. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/monaco.ts | New Monaco loader registering xgo and wiring Shiki highlighting. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/lsp/types.ts | New generic LSP client interface for editor core. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/inlay-hint.ts | New generic inlay hint provider implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/index.ts | Public entrypoint exporting xgo-code-editor APIs + components. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/hover.ts | New generic hover provider implementation with built-in actions. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/document-base/index.ts | Refactor document base to injectable definitions + IDocumentBase. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/diagnostics.ts | New generic diagnostics provider with workspace-diagnostic caching. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/context.ts | New generic code editor injection + rename warning helper. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/context-menu.ts | New generic context menu provider implementation. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/common.test.ts | Tests for definition id stringify/parse in generic module. |
| spx-gui/src/components/editor/code-editor/xgo-code-editor/api-reference.ts | Define API reference provider contract + category view metadata. |
| spx-gui/src/components/editor/code-editor/ui/snippet.ts | Remove old SPX-coupled snippet parser (moved to providers). |
| spx-gui/src/components/editor/code-editor/ui/markdown/InputValuePreview.vue | Remove old SPX-specific input preview implementation. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/resource/resource-selector.ts | Update resource typing imports; prep for shared selector interface. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/resource/SpxResourceItem.vue | Render resource items from resource URIs via model lookup. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/spx-effect-input/SpxEffectKindItem.vue | New SPX effect kind preview item component. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/spx-effect-input/SpxEffectKindInput.vue | Add emit contracts for effect kind input. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxSpecialObjInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxRotationStyleInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxPlayActionInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxLayerActionInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxKeyInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxDirectionInput.vue | New direction input UI (angle picker + numeric input). |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/input-helper/SpxDirActionInput.vue | Add submit emit contract. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/ui/CodeEditorUI.vue | SPX wrapper supplying framework-specific handlers to xgo UI. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/text-document.ts | SPX code owner implementations for stage/sprite documents. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/spx-project.ts | Implement IXGoProject adapter for SpxProject. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/snippet-variables.ts | SPX snippet variables provider extracted from old snippet parser. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/resource.ts | SPX resource provider extending generic resource provider. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/lsp/spxls/methods.ts | Update imports to use generic xgo editor types. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/lsp/spxls/index.d.ts | Relocate spxls type reference shim. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/lsp/spxls/commands.ts | Update imports to use generic xgo editor types. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/lsp/spx-lsp-client.ts | Implement ILSPClient; adjust types and comments. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/index.ts | Public entrypoint re-exporting xgo-code-editor + SPX additions. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/document-base/key.ts | Update category imports to xgo-code-editor. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/document-base/index.ts | Update imports to xgo-code-editor; note snippet vars provider location. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/document-base/helpers.ts | Update helper wiring to xgo-code-editor exports + new key defs. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/document-base/common.ts | Update imports to xgo-code-editor. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/diagnostics.ts | SPX diagnostics provider merges runtime + LSP diagnostics. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/context.ts | SPX code editor wiring: Monaco, LSP client, providers, injection. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/common.test.ts | Remove definition-id tests (moved to xgo tests); extend URI tests. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/sound.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/sensing.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/motion.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/look.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/game.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/event.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/api-reference/icons/control.svg | New API reference category icon asset. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/FormatButton.vue | Update formatting to use new code editor injection API. |
| spx-gui/src/components/editor/code-editor/spx-code-editor/CodeLink.vue | Update CodeLink to use new code editor injection API. |
| spx-gui/src/components/editor/code-editor/monaco.ts | Remove old Monaco module (superseded by xgo-code-editor/monaco). |
| spx-gui/src/components/editor/code-editor/lsp/spxls/index.d.ts | Remove old spxls shim file from previous location. |
| spx-gui/src/components/editor/EditorContextProvider.vue | Switch SpxProject import to type-only. |
| spx-gui/src/components/copilot/custom-elements/CodeLink.ts | Use spx-code-editor re-exports for CodeLink + document IDs. |
| spx-gui/src/components/copilot/custom-elements/CodeChange.vue | Use new useCodeEditorRef API from spx-code-editor. |
| spx-gui/src/components/copilot/custom-elements/CodeBlock.vue | Use new useCodeEditorRef API from spx-code-editor. |
| spx-gui/src/components/copilot/context.ts | New Copilot injection context module. |
| spx-gui/src/components/copilot/MarkdownView.vue | Switch Copilot context import to new module. |
| spx-gui/src/components/copilot/CopilotUI.vue | Switch Copilot context import to new module. |
| spx-gui/src/components/common/CodeView.vue | Switch highlighter + default language to xgo. |
| spx-gui/src/components/agent-copilot/markdown/FileContent.vue | Switch syntax language to xgo. |
| spx-gui/src/components/agent-copilot/markdown/CodeView.vue | Switch highlighter + default language to xgo. |
| spx-gui/eslint.config.js | Update ignored fuzzy path and unused-vars args ignore pattern. |
| spx-gui/.prettierignore | Update ignored paths for moved highlight/theme assets and fuzzy code. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
spx-gui/src/components/editor/code-editor/xgo-code-editor/diagnostics.ts
Show resolved
Hide resolved
|
Good structural split. The two-layer ( |
close #2803.
Extracts a class-framework-agnostic XGo code editor core and re-builds the SPX editor integration on top of it, including updated highlighting/language IDs and several new editor UI subsystems (completion/hover/diagnostics/context menu/etc.). This aligns Builder’s editor architecture with the need to support multiple XGo class frameworks (issue #2803).
Changes:
xgo-code-editor(framework-agnostic core) andspx-code-editor(SPX adapter/wrapper) modules.spxutils toxgo, and switch default highlight language toxgo.