Piotr

本周我在很多地方都进行了一些修改。

  • Zed 现在能更好地处理嵌套的 git 仓库。以前,我们总是会遵循从工作区根目录到文件系统根目录路径上遇到的所有 .gitignore 文件。这对于那些在 $HOME 目录中为他们的 dotfiles 设置了“全局”git 仓库的用户来说有点麻烦;修复方法相当简单,因为我们现在会在遇到第一个其同级目录为 .git 的 .gitignore 文件时停止。
  • 我最喜欢的那种问题是与在特定键盘布局上无法输入某些字符有关的问题。这次,事实证明,使用美式键盘布局无法在 Zed 中输入“真引号”。幸运的是,这次并非是语言集成拦截了按键,而是键绑定冲突;事实证明,我们将 Copilot 的“建议下一个”和“建议上一个”动作的键绑定设置成了与真引号相同的组合键。哎呀!我们保留了键绑定,如果 Copilot 没有要执行的动作,则会传递按键。
  • 我与 Max 合作了一点关于聊天通知的工作(尽管我更多地是旁听者,因为我还没有触及那部分代码库)——在这个过程中,我添加了聊天消息中提及的突出显示。
  • 我为 Zed 勾勒出了一个基本的 CONTRIBUTING.md 文件,我们将来可以以此为基础进行构建。我计划在接下来的几周里更多地关注我们代码文档的质量。

康拉德

本周主要深入研究了如何向通话中添加“访客”。访客可以关注参与者和聊天;但不能分享自己的项目、屏幕或麦克风。这个想法是,我们可以为处理代码库提供一种行业特定的类似 Twitch 的体验,以帮助传播 Zed。

话虽如此,我确实花了一些时间来解决 Zed 最有趣、也是存在时间最长的 bug 之一……

以前,当您按下 up 键时,它会计算自当前行开始以来的 UTF-8 字节数,然后将光标移动到上一行该 UTF-8 字节数之后。那些读过任何关于 Unicode 的人会知道,这至少可以说是“天真的”。用户理所当然地抱怨它“就是不行”。

@Julia 和我探索了多种修复方法:我们可以通过计算码点而不是字节来做得更好,或者通过计算字形簇而不是码点来做得更好。但不幸的是,即使是字形簇仍然存在问题

  • 在现代系统中,您的字体选择只是一种偏好。当渲染文本时,如果您的字体不包含您需要的字符(通常是表情符号),那么它将使用不同的字体渲染(通常是“Apple Color Emoji”)。这些访客字符将具有不同的宽度。
  • 即使在名义上的等宽字体中,单宽字符(“abcd”)和双宽字符(“漢字”)之间也存在区别。我们可以使用一些 Unicode 查找表来解决这个问题(终端模拟器就是这样工作的),但由于 Unicode 规则经常变化,并且并非所有字体作者都完全遵循它们,因此仍有边缘情况需要考虑。
  • 如果您选择了非等宽字体,那么一切都无法保证了……

所以,Julia 提出我们可以重新利用文本布局引擎的输出来解决这个问题。我们已经有代码来确定您点击时鼠标位置对应的字符,所以我们对其进行了重构,花了一些时间使其更快,修复了舍入误差等。现在(一旦合并),按下 updown 键将按照您的预期工作!

马歇尔

我本周大部分时间都在清理我们的 ui crate 中的各种东西。我们快要达到其他人将开始使用新模式构建 UI 的地步了,所以我想确保一切都整洁且一致。作为其中的一部分,我开始记录我们各种样式助手,包括它们对应的 Tailwind 文档参考。

我还有机会与 Conrad 合作实现了一个切换 Vim 模式的命令。对于像我这样不怎么使用 Vim 但偶尔想尝试一下的人来说,能够启用或禁用 Vim 模式而无需每次修改 settings.json 将会非常方便!

茱莉亚 (Julia)

本周我花了几天时间让 Tailwind CSS 自动补全在更多语言中工作,例如 Svelte、PHP/Blade、Ruby/ERB 和 Elixir/HEEX。在此过程中,我通过设置测试项目并将其配置为在 VSCode 中工作,学到了很多关于这些不同生态系统 的知识,这样我就有了可以比较行为的东西。这有点耗时,但非常有趣且重要的是验证事物是否按预期工作。

基里尔

我正在慢慢缩小对面板中过时诊断信息的搜索范围——唉,这个 bug 很难重现,因为它需要在特定状态下的 LSP 服务器在特殊事件后打开特殊文件,而这三个部分都没有完全清楚。现在,我正在植入更多的日志,以便我们能在下次出现时更好地捕获和理解它:我有一些理论,否则很难证明或反驳。与此同时,我忙于修复 bug,当我尝试破坏诊断功能时,一些 bug 更多地浮现出来,所以这也是处理它们的好机会。

虽然这仍然更像是一个概念,但远程终端共享的事情开始成形:我和 Mikayla 有了一个很好的机会亲自结对,破解 Alacritty 的内部代码并为 Zed 内部更改准备一切。对我来说,一个值得注意的事情是,即使你的伙伴坐在你左边 10 厘米处,Zed 也非常棒:有了所有协作功能,你不再需要尝试将两个人挤到一台笔记本电脑上!所以你可以在 Zed 中关注一个人,在另一个标签中进行自己的代码查找并实时讨论事情,定期跳转到特定的代码位置提供帮助——这和我远程协作时会做的事情差不多,但亲自协作时甚至更快。

凯尔

对于 Zed 的 AI 来说,这是一个相当激动人心的一周,因为我们在内联辅助中发布了一个新按钮“检索上下文”。如果选中,此按钮将为内联助手提供来自仓库的相关上下文。这现在允许内联助手理解您的仓库,并在需要时提供来自您仓库的可靠且相关的答案。这是利用语义索引发布到稳定版的第二个功能,虽然是一个相当简单的第一步,但已经令人印象深刻。

本周剩余时间专注于通过提示模板改进提示的人机工程学,并致力于为内联辅助开发一个多阶段规划代理。随着我们接近发布,我可能会有更多关于规划代理的信息,与其向您介绍一些关于提示人机工程学的工作,不如让内联助手向您介绍我们一些新的提示模板代码是如何工作的

内联助手演示改进的提示人机工程学

正在寻找更好的编辑器吗?

您今天就可以在 macOS、Windows 或 Linux 上试用 Zed。立即下载


我们正在招聘!

如果您对我们博客中涵盖的主题充满热情,请考虑加入我们的团队,帮助我们实现软件开发的未来。