用 Sublime 看 Swift 代码有个痛点:Sublime 官方一直没有内置 Swift 支持。而去 Package Control ( Sublime 的官方插件商店)里搜,排名靠前的几个 Swift 插件(在我开始动手做的时候)全都停留在好几年前——有的甚至是十年前 Swift 1/2 时代的产物;稍微好一点的是两年前更新的,但也只支持到 Swift 5.6 。
于是我就动手做了一个,方便自己阅读代码。写完之后,心想做都做了,不如顺手提交到 Package Control 上,这样也可以让别人用。没想到在提交 PR 的时候,遇到了一段意料之外的经历。
本来我是想反正上面已经有好几个 Swift 插件了,多我一个不多,少我一个不少。在我看来,网上同一个功能存在一堆竞品是再正常不过的事,用户爱用哪个用哪个。
结果 PR 提上去之后,神奇的事情发生了。
Package Control 的核心维护者们看法跟我完全不一样。他们不希望基础语言的语法插件继续碎片化下去。用户只需要一个完好能用的,而不是几个各有缺陷的。
核心维护者 @braver 和负责 Sublime 官方内置语法库的 @deathaxe 在 PR 里聊了起来,顺便给我科普了一段历史:原来过去很多年里,社区先后尝试过两次想孵化一个能够内置进官方的标准 Swift 语法插件,但都半途而废了,结果就是现在的局面。
@deathaxe 审查了一遍我的实现,认为整体架构很干净,甚至可以向下兼容 Sublime Text 3 。最终他们拍板了一个让我受宠若惊的决定:直接由我接管那个 97K 安装量的元老级 Swift 插件,用我这套新实现顶替它!
更让人感慨开源社区氛围的是:@braver 本来在评论里说“那个老项目看起来已经彻底凉了,按规矩我们给十年前的原作者 @quiqueg 留两周时间看是否反对”,结果话音刚落 2 分钟,@quiqueg 居然就在 PR 里闪现秒回了!他不仅爽快地表示双手赞,承认其它实现可能好得多。甚至还主动帮我把他十年前的最后一个旧版本打包成了无历史记录的孤立分支,让我作为历史记录同步到我的分支里。
现在所有安装了 Swift 插件的老用户会自动升级到我这个新实现上。而新用户在 Package Control 上搜索 Swift 也会优先找到这个用户量很大的插件。这样实现了对 Sublime Text 社区的最大收益。
本来只是为了自己看代码方便随手造的小轮子,莫名其妙就成了 9.7 万存量用户的“正统继承人”,突然感觉肩上多了一份沉甸甸的责任感 😅。
- 项目地址: https://github.com/hanguokai/sublime-swift
- Package Control 地址: https://packagecontrol.io/packages/Swift