从上周的平静中恢复过来,我们已经完成了许多期待已久的功能和修复!我们还在继续致力于我们的 AI 集成和整体稳定性。
马克斯
本周我修复了 Zed 在 ERB 和 HEEx 等语言中解析代码的一些问题,在这些语言中,多个不连续的代码范围需要组合成一个文档。
对于这两种模板语言,底层编程语言(分别是 Ruby 和 Elixir)都与换行符关联着特殊含义。但在外部模板中,换行符通常不会出现在代码片段范围内。所以之前,在下面的 ERB 文件中,Ruby 片段会被解析成它们之间没有换行符,这可能会导致不正确的语法树。现在,当解析出现在不同行上的不连续范围时,Zed 会在它们之间包含一个换行符,这更符合代码的实际解释方式。
<head><% statement_1() %></head>
<div><% statement_2() %></div>
除了这个解析问题,Zed 在这些模板语言中选择特定于语言的编辑行为也存在问题。之前,在这些语言中,切换注释和自动闭合括号等命令有时会使用“内部”语言的设置,即使光标没有位于该语言的代码片段中。
Piotr
本周我专注于完善分支和项目选择器、PHP 语法高亮显示以及改进 tree-sitter 的代码生成。分支列表获得了一个新的漂亮的“创建分支”按钮和模态版本(键盘爱好者们欢呼吧),而项目选择器修复了结果高亮显示问题。我真的很想在下周的预览版本中发布 PHP;语法高亮显示已经完成,现在我正在设置与 LSP 的集成。我正在进行的 tree-sitter 工作与 C 代码的生成方式有关。我最初尝试改进 tree-sitter-rust 的编译时间,在此过程中,我整体加快了其他解析器的速度,同时将 tree-sitter-rust 的编译时间从 30 秒缩短到 6 秒。太棒了!下周我计划继续致力于 PHP 集成和上游 tree-sitter 更改。
米凯拉
我一直在为直播项目寻找灵感而苦恼,所以这周我决定休息一下,专注于我们遇到的一堆小 UI 问题。我添加了一个系统来调整中心窗格中的分割大小,添加了文件图标,添加了 svelte 语言,并思考了我们如何将 Zed 整合到更广泛的“编码即内容”世界中。下周请关注这里获取更多信息!
内森
对我来说是短暂的一周,因为我刚从假期回来。主要是赶进度,并与同事们讨论一切进展和下一步计划。
我的个人贡献继续专注于一个新的通用 Cell 元素,它将我们所有现有元素组合成一个,以便更轻松地设置样式。我花了一些时间与 Zed 的新设计师 Derek 合作,为该组件设计理想的样式界面。我还探索了在开发中热重载我们的样式,这样我们就可以在 Rust 而不是 TypeScript 中制作它们。我们将拭目以待。
Derek
对我来说是部分工作周,周三才开始。我开始迭代一些关于内联代码和缓冲区内 AI 编辑的想法。我正在支持 Max 和 Kyle 提供一些更新的搜索 UI 设计,以适应他们正在研究的自然语言搜索功能。我还花了一大段时间与 Nathan 讨论他一直在 GPUI 中从事的新 Cell 工作。我尽力在那里帮助影响样式/布局 API。
内特
真是精彩的一周!很高兴 Derek 在接下来的一个月左右加入我们,帮助探索一些设计工作,所以我们花了很多时间讨论设计、主题、助手等一系列事情。
我一直在开发新的“频道”面板,您可以在其中查看您所在组织/组中的所有频道并加入它们。最初,这将用于加入您所在组织中正在进行的直播,但之后它也将成为您进入讨论的方式之一。频道可以同时托管讨论和直播。这个面板是目前实现我们公开构建 Zed 愿景的障碍之一,所以我很高兴能尽快将其加入应用程序。它还将使加入活跃通话和直播变得更加容易,因为目前我们内部为此在 Zed 和 Slack 之间切换。
自从我们推出语音功能以来,大部分会议都在 Zed 中进行,这真是太酷了!
此外,我一直在为一些新语言添加语法高亮、在主题方面做了一些工作、对助手进行了设计调整等等。忙碌的一周!:)
约瑟夫
一段时间以来,团队一直在讨论如何查看 Zed 用户是否正在使用协作功能,所以本周我决定介入并添加通话事件。我在 Metabase 中构建了一个通话仪表板,其中包含对通话数据的各种视图。 对于启用遥测的用户,我们可以看到通话何时开始,何时结束,通话中的用户数量等。提醒一下,代码绝不会存储在我们的遥测中,所有数据都是匿名的——无法将其链接到特定用户。
基里尔
我上周的希望实现了,这周也相对平静。
我已经完成了提示博客文章的初稿,收到了初步反馈,现在需要重写一遍——我尝试了几次开始,但最终放弃了新草稿。我想我现在对提示主题感到厌倦了,不得不暂时把它放一边。幸好到目前为止,实现方面没有问题,只剩下博客文章了。
我继续我的“圣战”,解决 Bug 和常见问题:修复了 LSP 重启问题(并首次自行发布了修复),支持编辑器中的后缀补全和“全选”操作。目前我正在改进终端选择和导航,但似乎很难正确实现某些边缘情况——我唯一的希望是 Mikayla 惊人的工作狂热能帮助我。
凯尔
我的所有工作都分为两大类:完善语义索引和 AI 路线图制定。
这是重要的一周,因为语义索引的第一个版本已在内部发布进行测试。总的来说,我对我们从索引中获得的搜索结果相当满意,但在完善我们嵌入的上下文信息并扩展到其他语言方面做了大量工作。这项工作可能会持续到下周。除了语言工作之外,我们还确定了一个相当重要的 UI 更改,以使此功能对用户更易于访问和直观,这项新 UI 的工作才刚刚开始。虽然我们发布此功能可能比最初想象的要晚,但新 UI 是一个进步,将为与这项工作互动提供更好的体验。
除了索引工作之外,我这周还花了一些时间赶上最近的 AI 研究。AI 发展速度之快令人难以跟上,但随着语义索引的成熟,我越来越多的注意力开始转向 Zed 的 AI 未来。关于 AI 的未来可能是什么样子,有很多精彩的讨论正在进行,我对我们在这个领域可以做的所有有趣工作感到兴奋。
茱莉亚 (Julia)
本周我花了不少时间深入研究 Zed 如何处理 panic。Zed 的内部工作机制是高度并行和异步的,有几种不同的机制可以执行非阻塞且可能耗时的后台工作。根据具体情况,其中一项任务中的 panic 可能会导致不正确的崩溃报告,或者只是使应用程序处于不一致、损坏的状态。考虑到线程交互的基本限制,我们仍然没有一个 100% 的解决方案,但我们对情况的理解有所改善,有时这就是你能做的一切。