RSS Twitter Facebook

2018/06/01 (2018年06月 のアーカイブ)

Atom のシンタックスハイライトの話

ここ最近流行のエディタと言えばやはり VSCode なんですけど、私としては VSCode が気になりつつもまだ今のところは Atom を使っています。VSCode と比べてしまうとどうしても起動の重さとかは気になっちゃうんですけどね。

Atom
Visual Studio Code

そしてもうひとつ、以前から気になっているのがシンタックスハイライトがいまいち頑張ってくれない所。これはまあ個人的趣味もあると思うし気にしない人はしないのでしょうけど、改行の入っていない長い行があるとすぐ途中で諦めてしまうのですよ、こいつ。

上が Atom で下が VSCode です。折り返して表示していますが、8行目が凄く長い行になっています。

一応 Atom の issue としてはもう4年以上前からそれなりの人数があげています。ただし解決法が示されているわけでもなく、これはパフォーマンスを重視するために仕方のない「仕様」というのが結論になっているようです。

Long line breaks syntax highlighting : https://github.com/atom/atom/issues/1667

どうやら、行を解析してトーカナイズする際のトークン数の上限が100になっているみたいですね。トークン数なので単純な文字数ではなく、一つの文字列で長いのが含まれていても構わないのですが、htmlファイルなんかは < や > でトークンがぶつ切りされてかなり不利な状況です。

もう少し頑張って欲しいなあ。

という事でどうにもならないのかと思っていたらこの上限を拡張するプラグインは存在するようです。「パフォーマンスに影響するよ」という注意書き付きですが。

"grammer-token-limit" ですね。Settings => Install で "grammer-token-limit" を検索してインストールすると1行あたりのトークン数の上限が設定できるようになります。

ただこれで数値は設定できるのですが無制限に大きくできるわけではないようで、500程度までは効くのですが、それ以上の値を入れても他の制限があるのかハイライトしてくれる文字数が増えません。

下の図が500に設定した状態です。まあデフォルト状態よりはましになりますね。

ちなみに VSCode での上限はちゃんとチェックしていないのですが文字数で20000文字程度の所に限界があってその行の解析を諦めるという挙動になるようです。

この件、エディタの比較記事なんかではあまり問題視している人がいないので気にしていない人が大多数なのかも知れませんが、一応デフォルト状態よりはマシになりますよ、という事で。

Posted by g200kg : 2018/06/01 19:45:44