欢迎来到 Neovim 的第三期(也是延迟的)新闻通讯,该项目旨在彻底改造 Vim 代码库。
下一期新闻通讯将在 11 月初发布。它已经改为隔月发布,以免用过多的令人惊叹的震撼来压倒任何敏感的 Neovim 爱好者。
GitHub 上的问题跟踪器现在有超过 1000 个问题/拉取请求。幸运的第 1000 个拉取请求是在 8 月之前不久打开的。
正如去年 7 月的新闻通讯中提到的,文档已成功迁移到neovim.io/doc/。
它提供了一些通用的文档链接,还提供了一些针对开发人员和贡献者的更具体的报告。这些报告已经帮助开发人员贡献并改进代码库。
以下是过去两个月的头条新闻(无特定顺序)。
system()
这个问题在6 月的新闻通讯中被提及,当时它还尚未解决。
@aktau已完成实现 VimL system()
函数,以使用管道和作业系统,而不是重定向到临时文件。此更改提供了不错的速度提升,并避免了一些权限问题(主要影响尚未支持的 Windows)。
旧的system()
实现的缓慢尤其在被调用的进程有大量输出时显而易见。例如:system('cat largefile')
。
@aktau利用了libuv 的功能,在许多系统上提供高分辨率时钟,以此拉取请求改进 Neovim 的分析功能。
之前的实现使用了gettimeofday()
。这是 Neovim 在 Windows 上运行的障碍(如上一节所述),因为此函数在 Windows 中不受支持。
有关 Vim 中分析的更多信息,只需运行:help profiling
。
在项目开始时,MoonScript 与 Lua 之间的争论是一个广泛讨论的话题。
MoonScript(一种编译为 Lua 的语言)被选为单元测试的语言。在更新单元测试库Busted 之后,一些单元测试失败了。
因此,决定删除该依赖项,以简化测试并消除抽象层。 @tarruda 做出了相应的更改和拉取请求。
讨论产生了 Neovim 不完全符合msgpack-rpc 规范 的问题。
在过去几周,@tarruda 已完成实现,以完全支持该规范。
他一直在努力升级 msgpack 的使用到最新版本 2.0,该版本应该很快合并。
在第一期新闻通讯中,首次讨论了Python 客户端。从那时起,@tarruda 已对其进行了重构,以进行各种改进。
@myitcv 提出了一项添加 Go 集成的提案,类似于 Python 集成的实现方式。该提案还涉及语言无关性。
虽然此处篇幅有限,无法详细介绍,但上面的链接还包括有关实现和讨论的更多详细信息。
在两个不同的拉取请求(1、2)中删除了更多已失效或用于不受支持的旧系统代码。
仍然存在代码的系统包括SGI IRIS、BeOS 和EBCDIC。
在 Neovim 中创建临时文件的函数需要libuv 中没有的功能。
@Hinidu(Neovim 的一位贡献者)提交了一个拉取请求 到 libuv,以添加一个新函数uv_fs_mkdtemp
。这些更改(现在是 libuv0.11.27 版的一部分)正在被Neovim 使用来提供临时文件/目录创建,并且这些更改跨平台有效。
由于跨平台代码已贡献给 libuv,因此所有基于 libuv 的项目都可以从这些更改中受益。
早在 4 月 9 日,第一个赏金就在Neovim 的 Bountysource 上创建。该请求是将 Christian Brabandt 为 Vim 编写的现有补丁移植到 Neovim。该补丁提供了一个breakindent
选项,该选项将在换行时匹配缩进。
@fmoralesc 创建了一个拉取请求 来领取该赏金。经过一些讨论和修改后,这些更改已合并到主分支中,@fmoralesc 已获得该赏金!
@war1025 已为两个现有文件添加了单元测试:buffer.c 和 fileio.c。在重构代码时增加更多单元测试覆盖率是 Neovim 目标的一部分。
@tarruda 做出了一个拉取请求,该请求通过 msgpack API 公开了 Neovim 的一些核心功能。
虽然仍然处于不断演变的阶段,但这些核心功能包括:
@tarruda 已添加了一个--embedded-mode
标志,该标志将允许另一个程序在后台启动 Neovim 并将其用作无头实例。
从技术上讲,它使用msgpack-rpc 通过 stdin 和 stdout 与客户端通信。
Neovim 已成功在Microsoft Visual C++ 中编译,以及使用MinGW,分别在此问题和此问题中。
如果您想帮助支持开发,您可以使用比特币捐赠,地址:1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQ
,或者在Neovim Bountysource 页面上支持团队。
如果您是经验丰富的开发人员,或者没有经验但想学习,请访问GitHub 仓库 并查看README、CONTRIBUTING 指南,最后是Wiki,以了解更多信息。
有很多机会帮助我们,也有很多事情可以做。
您对这期新闻通讯有任何反馈或建议吗?欢迎通过Neovim Twitter 联系我们。
还要确保订阅RSS Feed,以便了解 Neovim 世界的最新动态。下一期新闻通讯将在两个月后,也就是 11 月初发布。
下次再见。:wq
Neovim 是一款基于 Vim 的文本编辑器,专为可扩展性和可用性而设计,以鼓励新的应用程序和贡献。
访问#neovim:matrix.org 或 irc.libera.chat 上的 #neovim,与团队聊天。