YAJS: Yet Another JavaScript Syntax for Vim

前陣子把我 fork 的 Enhanced Javascript syntax 大改後,乾脆改名上到 Vim Scripts 了,名字就叫做 YAJS,全名是 Yet Another JavaScript Syntax for Vim(又一個 JS Syntax),當然也有 github repo 方便安裝,為什麼這次會自己大修呢,主要的原因是想要弄支援 ES6 的一些新語法,不過剛好有一些問題也已經很久了,就一口氣處理,大概整理一下和其他版的差異如下:

  • javascript做 group name 的 prefix,如此才符合 Vim doc 的規範,並且可以直接讓SyntaxComplete使用
  • 完整重新整理過的 Web API、DOM、JS 關鍵字
  • 可以完美的和 javascript-libraries-syntax.vim 共用
  • 把許多歷史遺跡的 syntax rule 都砍掉了
  • 當然最後就是支援許多的 ES6 syntax,像是 arrow function、 method definition 等

第一點這問題很久了,我好像之前也有說過,第二個一開始弄之前有點猶豫,因為關鍵字真的很多,目前整理了大概有 1800 個上下,不過後來看到 Vim 內建的 xs 的 syntax 我就釋懷了,這個檔案有三千多行,而定義關鍵字的每行都有數個關鍵字,1800 其實還只整理了一部份,除了 Global 物件都有加上外,很多新 Spec 是還沒整理的,例如 Mozilla 為了 Firefox OS 定的那些和硬體溝通的 API 等。

第三點是我重新整理的時候才注意到的,本來我的 javascript-libraries-syntax.vim 會把.的 group 取代掉,也就是原來的 syntax rule 裡面,和.有關的東西在套用過 libraries syntax 之後就會消失,只是不太容易注意到,這次修改就讓這個問題不會發生,不過 JS 僅限於 YAJS,,其他還有 CoffeeScript、LiveScript 其實不受影響,不過是因為他們本來在.之後就沒其他的 syntax highlight 了。

第四點就是把一些不明用途或是過時的東西砍掉,最後就是 ES6 的語法了,目前大概知道會有的都已經做上去了像是 block scope、let、const、class、新的 number literal 等都支援,如果有缺什麼歡迎報 bug 摟。