欢迎阅读 Neovim 的第一期新闻稿,Neovim 是一个项目,希望为我们都喜欢的文本编辑器带来新的开始。
我们询问了社区,并且得到了 压倒性的支持;社区希望有一个新闻稿。
计划是每月发布一期新闻稿,详细说明项目的进展以及其他任何值得报道的消息。
未来的新闻稿将在每个月的第一个星期五发布。这意味着下一期新闻稿定于 7 月 4 日发布。
让我们来看看 5 月之前几个月的一些里程碑。
您可能想知道,“自它从 Vim 分叉以来,到底有多少变化?” 好吧,让我们看看一些 Git 统计数据。
考虑到 最初导入 Vim 发生在 2014 年 1 月 31 日,在 77 位贡献者中总共有 1,010 次提交。
这导致:根据 git diff --stat
,887 个文件发生了变化,575371 行插入(+),500868 行删除(-)。
使用更复杂的工具,例如 gitinspector,我们可以看到一些更有趣的统计数据。分析的完整报告可以在 这个 Gist 中查看。
既然我们已经详细介绍了 5 月开始之前的一些里程碑,现在我们可以看看上个月发生了什么。
Neovim 已启用了一些在 Vim 中在编译时是可选的功能。这导致了各种不再需要的 ifdef FEAT_*
宏。这些宏已被 删除。
关于 Neovim 继承的加密代码出现了 讨论。经决定,应删除加密代码,而不是提供可能不安全的实现。随后,删除工作得到了 迅速处理。
由于与 Neovim 的一些头文件存在名称冲突,因此源代码已 移入“nvim”命名空间。还决定从那时起,nvim
将成为项目的内部/技术标识符。
Vim 确实有一些日志记录功能,但我们努力创建了 更好的日志记录实用程序。该实用程序使用宏,可以记录标准调试消息、基本信息、警告消息或错误消息。根据是否定义了 NDEBUG
或 DISABLE_LOG
,可以打开或关闭日志记录。
存在 Vim 特定的类型,在使用标准类型更合适的地方使用。有关这些类型的完整信息,可以在这个 指南 中找到。
到目前为止,short_u
、int_u
和 long_i
类型已 删除。long_u
删除目前正在 进行中,并且计划在不久的将来删除 char_u
和 long
类型。
与其检查当没有足够的内存来分配时 malloc
是否返回 NULL
,不如引入一组 函数 来处理这些内存不足错误。
如果发生这种情况,这些函数会处理错误。检查内存不足的删除已跨越多个问题(和几个月),并在 此问题 中列出。
内存错误的 最后一次删除 几乎完成。
一个名为 mch_stat()
的函数用于填充一个包含给定文件名信息的 struct
。该结构包含有关文件的 stat
信息。
为了提高开发人员的清晰度,此代码被重构到 os/fs.c
中定义的新函数中。然后,对 mch_stat()
的现有调用被 切换 过去。
Coverity Scan 是一种服务,可以对源代码执行静态分析,以查找缺陷和漏洞。它可以查看执行中的多个路径,并找到可能只在特定条件下出现的错误。
Neovim 现在有一个 Coverity 检查,它每周运行多次,此外还有与 TravisCI 一起使用的持续集成。
您现在可以 监听和注册各种 API 事件。这可以通过在发出请求时使用 API 通道 ID 来完成。
除此之外,还创建了一个 Wiki 页面,详细介绍了对插件架构的当前看法。正如顶部的警告所说,并非所有功能都已实现,但请查看它以了解更多信息。
以下是正在进行或在路线图上的事项列表。
system()
时,删除使用临时文件,并 改为使用管道。有些人质疑此功能的动机。原因是 VimL 语言的评估位于名为 eval.c
的文件中。
该文件目前有 19,164 行代码。通过创建翻译器,它将不再需要此评估器。相反,Lua 代码可以依赖于新开发的 API,该 API 将得到充分测试。
当在 邮件列表 中被问及进度时,Thiago 详细列出了 第一个正式版本所需的 事项列表。
- 完成重绘事件的实现 <- 现在正在进行
- 使用重绘事件为基于 busted/lua 的集成测试实现新的基础设施。
- 编写跨平台 GUI 程序
- 针对 Python 客户端的旧 Python 插件的兼容性层(除了使用 Python 7.4 中引入的功能的插件)
- 使其在 Windows 上编译/运行(我认为这并不难,因为很多特定于平台的东西已经运行在 libuv 上)
如果有人自愿,我将在完成重绘事件的实现后委托编写 GUI 程序,因为我不太擅长设计 UI。
如果您想帮助支持开发,您可以使用比特币在这里捐赠:1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ
,或者在 Neovim Bountysource 页面上支持团队。
如果您是一位经验丰富的开发者,或者是一名想要学习的没有经验的开发者,请访问 GitHub 仓库,查看 README、CONTRIBUTING 指南,以及最后的 Wiki,以了解更多信息。
有很多机会可以帮助我们,也有很多事情可以做。
您对这第一期新闻稿有任何反馈或建议吗?请随时通过 Neovim Twitter 联系我们。
同时,请务必订阅 RSS Feed,以便及时了解 Neovim 世界的最新动态。下一期新闻稿将在 7 月的第一个星期五发布。
下次再见。:wq
Neovim 是一款基于 Vim 的文本编辑器,专为 可扩展性 和 可用性 而设计,以鼓励新的应用程序和 贡献。
访问 #neovim:matrix.org 或 irc.libera.chat 上的 #neovim,与团队聊天。