让工作流接起来:文件拖放与 Git 冲突处理

让工作流接起来:文件拖放与 Git 冲突处理

编辑器里的很多不顺手,发生在功能之间。

能新建文件,却不能把已有文件复制进来;能看提交历史,却遇到冲突后不知道下一步在哪。alpha.4 这一轮,砚开始把这些路径接得更完整。

文件复制要跟随资源管理器焦点

在编辑区按复制,复制的是文字;在资源管理器里按复制,用户期待拿到的是文件或文件夹。

砚为资源管理器加入文件复制、粘贴和右键菜单,也支持与访达、不同砚窗口之间的文件传递。目标名称被占用时生成带 copy 的名字,避免直接覆盖。

粘贴到哪里也要明确:选中目录时粘到那个目录,取消选择后则回到当前项目根目录。因此点击文件列表下方空白处、按 Esc 清空选择,也属于这个功能的一部分。

空白处右键菜单提供新建、显示目录、打开终端和粘贴。空项目则直接显示新建文件、新建文件夹入口,不留下一整块让人猜怎么开始的空白。

拖放先完成最常见路径

现在可以从资源管理器或访达拖文件到某一栏打开,也可以从资源管理器拖到访达复制。

不过当前还没有细到"落在标签条的哪一个位置",也没有拖到栏边缘自动分栏、从搜索结果或源代码管理拖文件等全部行为。编辑标签本身拖到另一栏,也仍是待补项。

我觉得这种功能适合按真实使用路径推进:先把外部文件能进来、项目文件能出去做清楚,再补更精细的落点交互。发布时把支持范围写清楚,使用者就知道哪里还需要菜单或命令配合。

一个点号目录也能暴露参数问题

这一轮还修了新文件放在 .changeset 这类点号目录下,源代码管理查看改动时报 Git ambiguous argument 的问题。

它提醒我,文件路径测试不能只用 src/main.go。路径形状会进入底层工具的参数语义,刚好像修订表达式、选项或特殊路径时,正常文件就可能变成解析错误。

对于有 CLI 包装层的桌面工具,把这些真实路径形状加入测试,比只测试一条成功命令更有价值。

Git 操作进入了需要"继续"和"中止"的阶段

砚在提交上增加 merge、rebase、reset、revert 和 cherry-pick。reset 会再选择 soft、mixed 或 hard;操作能否出现,也要结合当前提交和 HEAD 的关系。

这些动作和一次普通查询不同:发生冲突后,Git 仓库会停在一个操作过程里。

所以界面不能只显示最后一条报错。源代码管理会显示冲突过程的提示,并提供继续、中止入口;命令面板也有相应操作,提交框会载入 Git 提供的说明。

text 复制代码
选择操作 → Git 执行
              ├─ 完成 → 刷新状态
              └─ 冲突 → 展示当前过程
                            ├─ 解决冲突后继续
                            └─ 中止

这是操作状态的呈现,还不是完整的图形化合并冲突编辑器。用户仍然需要解决文件内容里的冲突,不能因为有继续按钮就把这部分也算完成。

从 Dock 打开的程序,崩了要留下线索

开发时终端里能看到错误,正常使用时用户可能从 Dock 打开砚,窗口消失后没有任何控制台可看。

这次加入了本地崩溃日志:~/.config/yan/crash.log 保存最近记录,crashes/ 保留最近十次。它让反馈问题时有东西可查,是本地文件记录,并没有因此引入云端遥测。

这一轮测到了什么

alpha.4 发布说明记录了真实临时仓库和文件上的自动化:合并冲突、继续、中止、reset 模式、文件复制与拖放等。

但访达之间实际拖放、冲突横幅的真人点击体验,当时仍明确列为未手工验证。代码层面的事件测试,和鼠标真正拖过两个应用之间的路径,不能互相替代。

这些功能补完后,砚里能走的流程更多了。接下来要打磨的是另一块每天都要接触的区域:终端。


相关推荐
敲代码的玉米C1 小时前
中文输入不是「能打出汉字」就算完成
go
敲代码的玉米C1 小时前
把熟悉的操作带回来:快捷键和 Markdown 预览
go
敲代码的玉米C1 小时前
从打开一个文件,到打开一个项目
go
敲代码的玉米C1 小时前
终端里的小细节:选中复制、截图粘贴和项目提醒
go
敲代码的玉米C1 小时前
一个内核,两张脸:先把终端编辑器跑起来
go
敲代码的玉米C1 小时前
编辑器的第一块砖:文本、快照和撤销
go
敲代码的玉米C1 小时前
路线拐了个弯:接入 MyGo,借鉴 Mayoi
go
敲代码的玉米C1 小时前
写到 alpha.6:现在有什么,还有哪些账没还
go
敲代码的玉米C1 小时前
自动换行和多项目:看着是 UI,背后都是状态
go