ecode: add structured settings pages for plugins

- introduce reusable settings models, documents, and plugin settings pages
  - expose all registered plugin configuration options in the Settings panel
  - support groups, choices, editable values, lists, secrets, and JSON objects
  - stage plugin changes and persist them when the Settings window closes
  - preserve raw JSON access for advanced configuration
  - safely migrate legacy AI provider API keys
  - add translated plugin setting labels and descriptions
  - remove the obsolete plugin GUI configuration API
  - fix autocomplete signature documentation persistence
  - fix AI model catalog refresh interval loading
This commit is contained in:
Martín Lucas Golini
2026-08-26 01:37:28 -03:00
parent 42d9dd6473
commit a182878837
35 changed files with 1409 additions and 63 deletions
+108 -3
View File
@@ -31,7 +31,6 @@
<string name="arguments">参数</string>
<string name="ask_close_tab">关闭标签页?</string>
<string name="author">作者</string>
<string name="auto_close_brackets_and_tags">Auto-Close Brackets &amp; Tags</string>
<string name="auto_close_xml_tags">自动关闭XML标签</string>
<string name="auto_close_brackets_and_tags">自动闭合括号和标签</string>
<string name="auto_detect_indent_type_and_width">Auto Detect Indent Type &amp; Width</string>
@@ -186,6 +185,8 @@
<string name="edit">编辑</string>
<string name="edit_build">编辑构建</string>
<string name="edit_custom_output_parser">编辑已选的自定义输出解析器</string>
<string name="edit_settings_json">编辑设置 JSON</string>
<string name="edit_settings_json_desc">打开完整的插件配置文件。</string>
<string name="editor_font_and_size_ellipsis">编辑器字体和大小...</string>
<string name="editor_font_features">编辑器字体特性</string>
<string name="ui_font_features">界面字体特性</string>
@@ -198,7 +199,6 @@
<string name="discretionary_ligatures">任意连字 (dlig)</string>
<string name="discretionary_ligatures_desc">字体提供的可选装饰性或风格化连字。</string>
<string name="editor_font_size">编辑器字体大小</string>
<string name="editor_font_features">编辑器字体特性</string>
<string name="editor_go_back">编辑器撤销</string>
<string name="editor_go_forward">编辑器重做</string>
<string name="enable_color_picker">开启颜色选择器</string>
@@ -371,6 +371,22 @@ Name your stash (optional):</string>
<string name="lsp_memory_usage">Lsp Memory Usage</string>
<string name="lsp_plugin_restart">Lsp Plugin Restart</string>
<string name="lsp_refresh_semantic_highlighting">Lsp Refresh Semantic Highlighting</string>
<string name="lsp_breadcrumb_navigation">面包屑导航</string>
<string name="lsp_breadcrumb_navigation_desc">在编辑器上方显示语言感知的面包屑导航。</string>
<string name="lsp_breadcrumb_height">面包屑高度</string>
<string name="lsp_breadcrumb_height_desc">使用 CSS 长度设置编辑器面包屑的高度。</string>
<string name="lsp_disable_semantic_highlighting_lang">禁用语义高亮的语言</string>
<string name="lsp_disable_semantic_highlighting_lang_desc">以逗号分隔要禁用语义高亮的语言标识符。</string>
<string name="lsp_hover_delay">悬停延迟</string>
<string name="lsp_hover_delay_desc">悬停时显示语言服务器信息前的等待时间。</string>
<string name="lsp_semantic_highlighting">语义高亮</string>
<string name="lsp_semantic_highlighting_desc">在可用时使用语言服务器提供的语义标记。</string>
<string name="lsp_server_close_after_idle_time">服务器空闲关闭时间</string>
<string name="lsp_server_close_after_idle_time_desc">关闭未使用的语言服务器前保持其运行的时间。</string>
<string name="lsp_silent">隐藏语言服务器日志</string>
<string name="lsp_silent_desc">隐藏非关键的语言服务器日志消息。</string>
<string name="lsp_trim_logs">截断语言服务器日志</string>
<string name="lsp_trim_logs_desc">将每行语言服务器日志限制为 1 KiB。</string>
<string name="lsp_rename_symbol_under_cursor">Lsp Rename Symbol Under Cursor</string>
<string name="lsp_restart_lsp_client">Restart LSP Client</string>
<string name="lsp_switch_header_source">Lsp Switch Header Source</string>
@@ -462,6 +478,7 @@ Restart ecode to see the changes.</string>
<string name="pick_widget">选择组件</string>
<string name="please_enter_file_url_ellipsis">请输入文件URL...</string>
<string name="plugin_manager">插件管理器</string>
<string name="plugins">插件</string>
<string name="plugin_manager_open">打开插件管理器</string>
<string name="pluginsmodel_description">描述</string>
<string name="pluginsmodel_enabled">已开启</string>
@@ -622,7 +639,6 @@ file in the directory tree.</string>
<string name="type_to_locate">Type to Locate</string>
<string name="ui_font_and_size_ellipsis">界面字体和大小...</string>
<string name="ui_font_size">Ui字体大小</string>
<string name="ui_font_features">界面字体特性</string>
<string name="ui_language">界面语言</string>
<string name="ui_multisamples_level">多重采样抗锯齿级别</string>
<string name="ui_panel_font_size">界面面板字体大小</string>
@@ -894,4 +910,93 @@ file in the directory tree.</string>
<string name="wrap_letter">按字符换行</string>
<string name="wrap_type">换行依据</string>
<string name="wrap_word">按单词换行</string>
<string name="aiassistant_api_key_anthropic">Anthropic API Key</string>
<string name="aiassistant_api_key_deepseek">DeepSeek API Key</string>
<string name="aiassistant_api_key_desc">Credential used to access this model provider.</string>
<string name="aiassistant_api_key_github">GitHub Models API Key</string>
<string name="aiassistant_api_key_google">Google AI API Key</string>
<string name="aiassistant_api_key_mistral">Mistral API Key</string>
<string name="aiassistant_api_key_moonshotai">Moonshot AI API Key</string>
<string name="aiassistant_api_key_nvidia">NVIDIA API Key</string>
<string name="aiassistant_api_key_openai">OpenAI API Key</string>
<string name="aiassistant_api_key_openrouter">OpenRouter API Key</string>
<string name="aiassistant_api_key_perplexity">Perplexity API Key</string>
<string name="aiassistant_api_key_togetherai">Together AI API Key</string>
<string name="aiassistant_api_key_xai">xAI API Key</string>
<string name="aiassistant_api_key_xiaomi">Xiaomi MiMo API Key</string>
<string name="aiassistant_api_keys">API Keys</string>
<string name="aiassistant_display_reasoning">Display Reasoning</string>
<string name="aiassistant_display_reasoning_desc">Display reasoning content returned by supported models.</string>
<string name="aiassistant_model_catalog_enabled">Enable Model Catalog</string>
<string name="aiassistant_model_catalog_enabled_desc">Download model metadata from the configured catalog.</string>
<string name="aiassistant_model_catalog_refresh_hours">Model Catalog Refresh Interval</string>
<string name="aiassistant_model_catalog_refresh_hours_desc">Hours between model catalog refreshes.</string>
<string name="aiassistant_model_catalog_url">Model Catalog URL</string>
<string name="aiassistant_model_catalog_url_desc">URL used to download model catalog metadata.</string>
<string name="autocomplete_load_vscode_snippets">Load VS Code Snippets</string>
<string name="autocomplete_load_vscode_snippets_desc">Load compatible snippets installed for VS Code.</string>
<string name="autocomplete_max_label_characters">Maximum Label Characters</string>
<string name="autocomplete_max_label_characters_desc">Maximum number of characters shown in a suggestion label.</string>
<string name="autocomplete_max_signature_helper_width">Maximum Signature Help Width</string>
<string name="autocomplete_max_signature_helper_width_desc">Maximum signature help popup width as a CSS length.</string>
<string name="autocomplete_max_suggestion_documentation_width">Maximum Suggestion Documentation Width</string>
<string name="autocomplete_max_suggestion_documentation_width_desc">Maximum documentation popup width as a CSS length.</string>
<string name="autocomplete_signature_help_documentation">Signature Help Documentation</string>
<string name="autocomplete_signature_help_documentation_desc">Show documentation alongside signature help.</string>
<string name="autocomplete_signature_help_multi_line">Multiline Signature Help</string>
<string name="autocomplete_signature_help_multi_line_desc">Allow signature help to use multiple lines.</string>
<string name="autocomplete_suggestion_documentation">Suggestion Documentation</string>
<string name="autocomplete_suggestion_documentation_desc">Show documentation alongside completion suggestions.</string>
<string name="autocomplete_suggestions_syntax_highlight">Syntax Highlight Suggestions</string>
<string name="autocomplete_suggestions_syntax_highlight_desc">Apply syntax highlighting to completion suggestions.</string>
<string name="debugger_fetch_globals">Fetch Global Variables</string>
<string name="debugger_fetch_globals_desc">Request global variables while debugging.</string>
<string name="debugger_fetch_registers">Fetch Registers</string>
<string name="debugger_fetch_registers_desc">Request processor registers while debugging.</string>
<string name="debugger_load_vscode_launch_config">Load VS Code Launch Configuration</string>
<string name="debugger_load_vscode_launch_config_desc">Load compatible launch configurations from .vscode/launch.json.</string>
<string name="debugger_silent">Silent Debugger Logs</string>
<string name="debugger_silent_desc">Hide non-critical debugger log messages.</string>
<string name="discordrpc_application_id">Discord Application ID</string>
<string name="discordrpc_application_id_desc">Discord application identifier used for Rich Presence.</string>
<string name="discordrpc_git_integration">Git Integration</string>
<string name="discordrpc_git_integration_desc">Include repository information in Rich Presence.</string>
<string name="discordrpc_icon_bindings">Language Icon Bindings</string>
<string name="discordrpc_icon_bindings_desc">JSON object mapping language identifiers to Discord image assets.</string>
<string name="discordrpc_language_icons">Language Icons</string>
<string name="discordrpc_language_icons_desc">Display an icon for the active document language.</string>
<string name="formatter_auto_format_on_save">Format on Save</string>
<string name="formatter_auto_format_on_save_desc">Automatically format supported documents when saving.</string>
<string name="git_filetree_highlight_changes">Highlight File Tree Changes</string>
<string name="git_filetree_highlight_changes_desc">Highlight files with Git changes in the file tree.</string>
<string name="git_filetree_highlight_style_color">File Tree Highlight Color</string>
<string name="git_filetree_highlight_style_color_desc">CSS color used to highlight changed files.</string>
<string name="git_silent">Silent Git Logs</string>
<string name="git_silent_desc">Hide non-critical Git plugin log messages.</string>
<string name="git_status_recurse_submodules">Recurse into Submodules</string>
<string name="git_status_recurse_submodules_desc">Include submodule changes when collecting repository status.</string>
<string name="git_statusbar_display_branch">Show Branch in Status Bar</string>
<string name="git_statusbar_display_branch_desc">Display the current Git branch in the status bar.</string>
<string name="git_statusbar_display_modifications">Show Modifications in Status Bar</string>
<string name="git_statusbar_display_modifications_desc">Display repository modification counts in the status bar.</string>
<string name="git_ui_refresh_frequency">Refresh Frequency</string>
<string name="git_ui_refresh_frequency_desc">How often Git information in the interface is refreshed.</string>
<string name="linter_delay_time">Lint Delay</string>
<string name="linter_delay_time_desc">Time to wait before linting after an edit.</string>
<string name="linter_disable_languages">Disable Linter Languages</string>
<string name="linter_disable_languages_desc">Comma-separated language identifiers where linters are disabled.</string>
<string name="linter_disable_lsp_languages">Disable LSP Diagnostic Languages</string>
<string name="linter_disable_lsp_languages_desc">Comma-separated language identifiers where LSP diagnostics are disabled.</string>
<string name="linter_enable_error_lens">Error Lens</string>
<string name="linter_enable_error_lens_desc">Display diagnostic messages inline in the editor.</string>
<string name="linter_enable_lsp_diagnostics">Language Server Diagnostics</string>
<string name="linter_enable_lsp_diagnostics_desc">Display diagnostics reported by language servers.</string>
<string name="linter_goto_ignore_warnings">Ignore Warnings When Navigating</string>
<string name="linter_goto_ignore_warnings_desc">Skip warnings when navigating between diagnostics.</string>
<string name="spellchecker_delay_time">Spell Check Delay</string>
<string name="spellchecker_delay_time_desc">Time to wait before checking spelling after an edit.</string>
<string name="xmltools_auto_edit_match">Edit Matching Tags</string>
<string name="xmltools_auto_edit_match_desc">Update the matching tag automatically while editing.</string>
<string name="xmltools_highlight_match">Highlight Matching Tags</string>
<string name="xmltools_highlight_match_desc">Highlight the matching XML or HTML tag at the cursor.</string>
</resources>