RubyKaigi 2018 Proposal: A parser based syntax highlighter
accepted.
Title
A parser based syntax highlighter
Abstract
It has an elegant syntax that is natural to read and easy to write. https://www.ruby-lang.org/en/
Definitely. The syntax is elegant. But it is too complex sometimes. So, syntax highlighters for Ruby are difficult and easy to break.
For example, probably your editor cannot correctly highlight ????::?:
, % %s%% %%%%
or def end(def:def def;end)end
(They are valid Ruby programs!).
Yeah, it is edge cases. In real cases, some syntax highlighter cannot correctly highlight a here document.
I'll talk a robust syntax highlighter for Ruby, it is Iro gem and Iro.vim. The highlighter never break since it uses Ripper to highlight code.
Details
このトークではIro.vimというVimプラグイン、及びIroというGemについて話します。 https://github.com/pocke/iro.vim https://github.com/pocke/iro
IroはRipperを使用しRubyプログラムからSyntax Highlightしやすいような構造を生成するためのGemです。そしてIro.vimはIroをVimから使用するためのプラグインです。これらはVImにおいてどんなRubyプログラムも正しくハイライトできるSyntax Highlighterです。
以下に概要を示します。
参加者はRubyを日常的に使用している人を想定しています。また、Ripperの使用経験などはとくに問いません。
なお、Iro.vimについてはVimConf 2017というVimについてのカンファレンスでも行いました。 https://speakerdeck.com/pocke/the-new-syntax-highlighter-for-vim こちらではVim側の視点からの紹介となったため、RubyKaigiではRuby側の視点からIroの解説を行います。
Pitch
Syntax Highlightはコードを読み書きする上で重要なものです。 たとえば、どこが文字列であるかぱっとわかります。自分のコードが想定外の解釈がされていないかがわかります。 これはコードを書く際の安心感につながります。安心してコードを書くことができるという前提があるからこそ、思考をスラスラと楽しくコードに落とし込むことができるのだと、私は考えています。
ところが既存のSyntax Highlighterはよく壊れます。すこし複雑なコードを書いただけで、正しくないハイライトを行います。このような状態は、安心してコードを書くことができる状態とは程遠いでしょう。
私がこのトークで話すIroはこの問題を解決します。Iroは正しくハイライトを行えるので、コーディングを安心して行う上での頼もしい相棒となるでしょう。
そのため、多くの人にIroを知ってもらいたい、そしてIroがハイライトを行うためにパーサーを利用するというアプローチを知ってもらいたいと考えています。 これにより、多くの人が常に安心できる環境の元プログラミングできるようにしたいです。