無変更が多いものの、仕様の更新が二桁になったので、vim-css3-syntaxのv1.8.0をリリースした。新規追加はCustom Highlight API Module Level 1で、::selection疑似要素などを置き換えた上で、スクリプトから扱いやすいようにし、マルチカーソルにも応用することなどを想定しているようだ。

注目はValues and Units Module Level 4で追加された、計算する関数群だ。例えばround(var(--x), 100px)は、--xが解決された結果を100pxの倍数に丸める。つまり、必ず100pxの倍数になる。僕はfont-size: round(var(--responsive-font-size), 25%)として、段階的に文字サイズが変わるようにする、というような使い道を考えている。

またpow()はべき乗を求める。JavaScriptのMath.pow(A, B)と書き方も含めて同じだ。仕様の例示にもあるように、要素の文字サイズを一定の比率で大きくしていく手法(モジュラー・スケール)に役立つ。現在の実装でも掛けていくだけなので実現は可能だが、それを「何の何乗」とコードが書けるようになると、可読性(CSSコードだけでなく、開発者ツールでも)の上で大きい。負の数のべき乗も便利に使えるだろう。

しかし、これらの関数群(やカスタム・プロパティー)で隠ぺいすると、型チェックで引っかかり、うまく動かないことも増えてくるだろう。仕様でもそこそこ長い説が割かれているが、計算の計算のカスタム・プロパティーの計算などを多用する(多用できるようになる)と、必ず失敗する。といっても最終的に型が合っているかどうかは、使われるプロパティーにも依存するので、できることは少ない。仕様と実装への深い理解を通して、どう単純明快な計算式を組み立てるかにかかっている。