mirror of
https://github.com/raven-pensieve/obsidian-ace-code-editor.git
synced 2026-07-22 12:50:24 +00:00
* feat: 新增片段编辑器与开关功能
在 Snippets 相关视图与工具中添加主要功能和重命名参数,
以便提供独立的片段编辑器页面并统一操作接口。
- 在 SnippetsFileModal 中重命名回调 openExternalFile 为
openSnippetFile,并改用 file 名称传参,简化调用与语义。
更新所有调用点(打开文件与创建后自动打开)以使用新接口。
- 在 ObsidianUtils 中将 runCommandById 改为同步执行并新增
toggleSnippetState,用于切换片段的启用状态并触发重新载入
片段 CSS。
- 新增 SnippetsEditorView 组件,基于 AceEditorView 实现完整
片段编辑器视图:
- 提供左右分栏的文件导航与编辑区,支持只读与保存操作。
- 实现视图状态保存/恢复、文件保存到 vault,并在保存后
请求重新加载片段 CSS。
- 提供片段启用/禁用的 UI 行为(toggle action),通过
SnippetUtils.toggleSnippetState 控制并更新提示信息。
- 注册 css-change 事件以在外部变更时更新开关状态。
这些变更修复了不一致的命名、增加了片段编辑的独立视图并
支持在 UI 中直接启用或禁用片段,提升可用性与代码可维护性。
* feat: 添加侧边栏控制开关
在 SnippetsEditorView 中加入侧边栏切换功能并重构片段开关相关逻辑。
- 移除无用的 setTooltip 导入,避免未使用导入警告。
- 新增“Toggle sidebar”动作,用于在视图内收起/展开右侧面板,
并在展开后延迟触发编辑器 resize 以修正布局问题。
- 将原先的 toggleAction 重命名为 toggleSnippetAction,清晰区分
侧边栏控制与片段启用/禁用的操作语义。
- 将片段开关动作移到单独注册的位置,保持职责分离,并在更新
状态时直接切换按钮样式(mod-success),简化 tooltip 逻辑。
- 在样式中加入 .is-collapsed 规则,收起时隐藏面板以实现预期
的折叠行为。
这些变更提升了 UI 控制的可读性和可靠性,修复了面板展开后
编辑器尺寸未及时更新的问题,同时让片段开关的命名更具可
理解性。
* feat: 改进片段侧栏文件列表与元数据获取
在 SnippetsNavigation 中将文件列表从字符串数组改为包含元数据的对象数组,
并添加对每个片段文件的详细信息获取(不带扩展名的显示名、最后修改时间、
以及是否已启用)。这样可以在界面上显示更丰富的信息并支持基于元数据的交互。
同时重构了渲染结构和样式:
- 移除多余的内联样式,使用类名(tappable/is-clickable)统一交互样式并简化 DOM 结
构。
- 将刷新按钮移入统一的 nav-header 容器并将点击处理绑定到图标上,加入加载旋转
动画的样式(animate-spin)。
- 点击回调现在传递文件名(含扩展名)以便上层组件确定选中项。
在样式文件中添加了导航相关的样式规则和旋转动画定义以替代内联样式。
在 SnippetsEditorView 中调整图标标识为 code-xml,以匹配新的视觉语义。
这些改动提高了片段列表的可用性和可扩展性,便于后续展示更多元数据或操
作。
* feat: 添加侧边栏视图、日期与排序支持
在 Snippets 功能中添加并重构若干重要特性,提升可用性与本地化支持:
- 在 i18n 类型定义中新增 view.snippets 的字符串与参数签名(created/
modified/no_snippets),以支持片段视图的本地化文本与占位参数。
- 在 SnippetsEditorView 中修复面板折叠后编辑器尺寸问题:
在切换左侧面板类名后触发 ace 编辑器 resize,避免布局异常。
将传递给导航组件的 prop 从 app 改为 plugin,并新增 onResize 回调,
以便在导航宽度变化时通知外部组件调整编辑器大小。
- 新增 utils/formatDate 工具,统一格式化时间戳为 "YYYY-MM-DD HH:mm:ss",
用于在界面中显示创建/修改时间。
- 重写 SnippetsNavigation 组件:
- 使用 plugin 替代直接依赖 App,便于访问插件实例与其 app。
- 增加 created 与 modified 字段,确保显示创建与修改时间。
- 引入排序类型(按名或按时间升降序)与排序状态管理。
- 引入可拖拽调整宽度的 useResize 钩子,支持最小宽度与 onResize 回调。
- 在加载文件时通过 plugin.app 读取文件状态并判断启用状态。
- 增加右键菜单、重命名、删除确认和格式化时间显示等交互改进。
为什么做这些改动:
- 提升用户体验:动态调整侧栏宽度并在调整后正确重置编辑器尺寸,
避免编辑器渲染问题。
- 增强可读性与信息完整性:显示创建与修改时间并提供统一日期格式。
- 完善国际化:为新视图文本添加类型定义,确保类型安全和翻译覆盖。
- 代码结构优化:通过传入 plugin 而非散乱依赖 App,提高组件的可测性
与插件上下文的一致性。
* feat: 重构代码以统一处理 snippet 文件名与批量切换
将对 snippet 文件名的处理统一为直接去除末尾四个字符
(假定扩展名为 .css),移除重复的 endsWith 检查,简化逻辑,
减少分支判断带来的复杂性。为批量启用/禁用新增了
toggleAllSnippetsState 方法,封装遍历和设置逻辑,并在 UI
中替换原先的逐个处理实现为对该新方法的调用,从而:
- 减少重复代码并集中管理启用/禁用流程;
- 将加载请求聚合为一次调用,避免多次触发请求;
- 将文件名处理规则统一,降低潜在的字符串处理错误。
这些改动提升了可维护性和可读性,同时保证启用/禁用
操作在逻辑上更一致。
* feat: 新增与重构文件创建/重命名对话框组件
将重命名对话框从 RenameFileModal 重构为更通用的
RenameFileDialog,拆分视图组件并引入可配置的 title/
message 和可选 onClose 回调。替换直接依赖 App 的构造,
改为接收插件实例(AceCodeEditorPlugin)以使用 plugin.app,
并改进关闭回调为可选链调用,避免未定义回调报错。
新增 CreateFileDialog 组件,提供统一样式的文件创建
对话框,包含 title/message、输入校验及回车/Esc 快捷键支
持,创建成功后回调文件名(自动追加 .css)并关闭对话框。
同时清理并调整若干 UI 文本与按钮顺序,复用同一套
对话框样式与交互逻辑,提高组件复用性与健壮性。
* feat: 优化片段导航按钮的可点击区域和图标
将导航栏中若干操作按钮的交互从图标元素的 onClick
绑定移到外层容器(div),扩大了可点击区域以提升可用性和无障碍性。
同时替换并调整了部分图标导入:
引入 CircleEllipsis 代替 ListChecks,并将图标渲染改为在容器中
简单渲染,移除图标上的事件与 aria 属性,统一由容器负责处理。
修正了刷新按钮在容器与图标间重复绑定事件的问题,保留 loading
状态下的旋转样式不变。
这些改动提升了点击目标大小、语义清晰度和事件处理一致性,減少
了潜在的重复触发和可访问性问题。
* feat(i18n): 完善英文與繁體中文翻譯字串
更新內容:
- 將多處字串從佔位或 TODO 替換為完整英文翻譯(例如
enable/disable/rename/delete、排序與批次操作相關選項等),
以補足 UI 顯示缺失並提升使用體驗。
- 新增或調整提示/確認訊息的文案,包含重新命名成功與刪除確認等,
使訊息更清楚且一致。
- 統一並修正部分程式碼風格(使用雙引號、分號、satisfies
陳述式與檔案末尾分號),減少 lint/格式化差異。
- 繁體翻譯對應同步更新,將相關 TODO 替換為正確繁體用語,
並修正少數用詞(例如「重新載入外掛程式」)。
為什麼要做:
- 補全翻譯能避免 UI 顯示 TODO 或空白,提升可用性與產品專業度。
- 統一格式與小修正可降低未來合併衝突與 lint 錯誤,維持代碼品質。
* feat: 优化片段编辑器视图和空状态处理
将命令 id 从 openCssSnippet 重命名为 openCssSnippetView,
并改为通过 openPluginView 打开片段编辑器视图,统一视图打开方式,
提升命令语义一致性与可复用性。
为右侧编辑区域添加空状态样式(ace-snippets-empty-state),
并在 SnippetsEditorView 中实现空状态渲染逻辑:
- 在没有选中文件时不初始化编辑器,改为渲染空状态提示,
避免不必要的编辑器实例化与渲染开销;
- 在首次访问或从空状态切换到有文件时重新初始化编辑器,
并恢复编辑器可编辑状态,保证编辑流程正确。
添加对 getEditorContainer 的防御性检查,若右侧面板未初始化则抛出错误,
避免在未准备好 DOM 时访问导致隐蔽的运行时异常。
总体上这些改动改善了视图初始化时序、用户体验和错误可
察觉性,减少资源浪费并提高维护性。
* feat(plugin): 将片段管理改为插件视图
将原先内置的 CSS 片段管理模态窗及其组件移除,改为通过插件视图
(SNIPPETS_EDITOR_VIEW_TYPE)打开片段编辑器。主要变更包括:
- 在 main.ts 中把原先调用 openCssSnippetSelector 的位置替换为
openPluginView(SNIPPETS_EDITOR_VIEW_TYPE),使片段管理以插件视图
而非模态框方式展示,统一视图体验并便于扩展。
- 删除 SnippetsFileModal 组件及其相关逻辑(整个文件移除),减少
重复代码并将片段管理职责下放到插件视图实现,简化主流程。
改动原因:
- 通过插件视图可以提供更灵活的 UI/交互(可停靠、持久化等),更
适合复杂的片段管理场景。
- 删除旧的模态实现有助于精简代码库,降低维护成本并避免功能重
复。
* feat: 批量切换与国际化改进
新增对批量切换代码片段开启/关闭的支持与路径处理,
并扩展 i18n 文本与类型定义以支持搜索相关文案。
主要变更:
- 在 SnippetUtils.toggleAllSnippetsState 中处理完整路径,
提取文件名并去除后缀再设置 CSS 启用状态,保证传入
为带路径或仅文件名时均能正确识别。
- 新增 SnippetUtils.toggleBatchSnippetsState,接受文件
列表并批量切换状态,复用相同的 id 计算逻辑。
- 在所有英语/中文 i18n 文件与类型声明中更新文案:
- 将 "No snippets" 改为 "No snippets found"(对应中文为
"没有发现代码片段"),以表达更准确的含义。
- 添加搜索相关文案与类型:search_placeholder、
case_sensitive、clear_search,并补充相应的类型注释
与本地化函数签名。
- 清理并合并部分已移除的 snippetsFile 节点结构,简化
类型定义以匹配新的界面需求。
为何改动:
- 保证在不同平台或 API 返回带完整路径时仍能正确处理
代码片段 id,避免无法切换的问题。
- 提供批量操作接口以便性能与可用性更好地支持多选
场景。
- 丰富国际化字符串以支持搜索功能并提升文案准确性与
可读性,类型定义同步更新以保证类型安全。
|
||
|---|---|---|
| .. | ||
| changelog-option.js | ||
| copy-to-vault.mjs | ||
| esbuild.config.mjs | ||
| link-data.mjs | ||
| sync-i18n.mjs | ||
| version-bump.mjs | ||