Helix22.12のアップデート情報

~~Helixは11月にアップデートする予定だった12月に延期になった~~
~~12月のアップデートまで待とうかなと思ったが、特に待つ理由もそこまでなかったので2022/12/05現在に投稿することにした~~

Helix22.12が正式にリリースされた

[Release highlightings](https://helix-editor.com/news/release-22-12-highlights/)

## はじめに

ロゴがやっとできた
![helix_editor_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/a19779c3-2609-1f73-5aa5-8bcc3f71b941.png)
ロゴのデザインは紆余曲折あり、途中でVSCodeやMetaのロゴに似ている問題が出たりしていろいろ試行錯誤していた

若干Visual StdioとVScodeの色の感じが残っているが、個人的には二重螺旋のシンプルなデザインで良いと思っている

あとはたくさんの細かい点が修正された

全体的にユーティリティが向上しており、Helix自体の使い勝手の良さが全体的に上がったという感じ

## 特徴的なアップデート

個人的なピックアップなので全体を見たいときには[change log](https://github.com/helix-editor/helix/blob/master/CHANGELOG.md)を見ること

- Git diff gutter

![gutter_color.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/dac28ab3-5080-0753-9189-b79cb6bd0c52.png)

恐らく今回の一番の目玉になる機能

左のガターに(git)diffが表示されるようになった

だいぶ実装するのに苦労していたみたい

~~windowsでgitの改行が`crlf`だと全部変更マークがついてしまうバグがあるので注意~~

https://github.com/helix-editor/helix/issues/4989

修正された

- テーマ系
地味にたくさんあってびっくりした

    - Support underline styles and colors 

        アンダーラインの色と種類を変更できるようになった

        割とすごくいい機能だが、種類はターミナル?に依存してしまうので波線とかを表示できない問題もある

        エラーとかの過剰だった表示を線だけで表示させられるので良いが、上記の問題で今試行錯誤している    

    - Inheritance for themes

        既存のテーマを継承して部分的に色などを変更できるようになる

        既存のテーマはたくさんあるが、色が微妙に違ったりメンテナンスされていなかったりする

        これにより、いちいち全てを編集せずに自分の環境でカスタマイズできる

        ```toml:onedark_transparent.toml
            inherits = "onedark"
            "ui.background" = { bg = "" } # ポップアップも透過するとテーマの統一性が上がる
        ```

        ![onedark_transparent.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/675cf47b-a9f0-e668-306b-b10fb94462e3.png)

        こんな感じで背景を透過した`onedark`のテーマを簡単に作れる

        これを`/runtime/themes/`に配置するだけ

    - cursorcolumn

        vimのcursorcolmと同じで列に背景を出すことができる

        色はcursorlineと同じ色で，テーマにこの設定が無ければ表示されない

        実際base16_transparentでは背景を設定すると配色がごちゃごちゃになるので設定していない

        テーマによってはこんな感じで主張が強いのもある
![my_config.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/6b9ac8fc-7475-af6a-41fc-9ca3dea6cd07.png)

    - ui.gutter.selected

        カーソルがある行のガターを強調表示できる

        これも地味に視認性にかかわる部分

    - Popup scrollbar

        ![ex.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/19b32f70-135a-1490-bb63-bd9230f98b8a.png)

        右側の白いバーのところ

        ポップアップはCtrl+d(u)でスクロールすることができた

        そのポップアップにスクロールバーが追加されたのでどこまで見えるかを視覚的に確認できるようになった
        地味にありがたい

        base16_transparentではバーの色(白)とその背景(透明)だが，バーの背景が見にくければ灰色とか別の色するとよりわかりやすくなるかもしれない

        これもテーマによるので透明だったらメンテナンスされていないことになる


- :lsp-restart

便利機能の一つ

今までlspがクラッシュしたら再度Helixを起動し直す必要があった

だが、これがあるおかげで起動し直す手間が省けるようになった

どこかにキーバインドしたい

- make_search_word_bounded

Helixでは正規表現を使って選択状態から特定の文字列にカーソルを追加することができる

なので選択し検索が編集する上で重要になるのだが、それに追加の単語の境界をつけることができる

まだ、試しきれていない

- statusline element

    - Add a statusline element to show number of selected chars 

        選択した文字数を表示

        今までなかったことに気づかなかった

    - Add a statusline element showing global LSP diagnostic warning and error counts 

        ファイルとワークスペースのエラー・ワーニングを別々で表示できる

        個人的には嬉しい機能だが、どっちがどっちだかわかりにくいのが難点

などなどいろいろと目白押し

言語の追加やLSPの追加、テーマの追加など様々ある

他にもクラッシュの原因の修正や、あいまい検索のソートなど地味にうれしい修正がいくつもある

徐々に徐々に手に馴染むエディタになってきた

## 今後の個人的に注目しているPR

- [エラーメッセージ](https://github.com/helix-editor/helix/pull/4559)
    左寄席になるので見やすくなりそう
    欲を言えばエラー箇所との距離が近い箇所にポップアップしてくれればうれしい
- [統合ターミナル](https://github.com/helix-editor/helix/pull/4649)
    GUIがないから個人的にはそこまで必要ではない
    ただあればやっぱりコマンド系を上手く統合できそう
    出力結果などを綺麗に表示したりできそう
- [ビューベースリファクタリング](https://github.com/helix-editor/helix/pull/4381)
    地味に便利そうな機能
    マルチカーソルがやりやすくなると編集が捗るので、これはよさげ
    ただ、だいぶ先にはなりそう
- [Pop-upのアウトライン](https://github.com/helix-editor/helix/pull/4313)
    LSPのポップアップなどにアウトラインを追加できる
    地味だけどだいぶ見やすくなる気がする
    こういうカスタマイズ性があるのはいろんな人にとって利点になる
    実際ハイコントラストのテーマを作ったときにアウトラインが欲しいと要望があったのでマージされたらアップデートしたい
    エラーメッセージにもアウトラインが欲しいところ
- [ジャンプモード](https://github.com/helix-editor/helix/pull/3791)
    vimのeasymotionやhopとかの機能
    helixはf, F, t, Tが見つかるまで検索される
    これにより拡張されて視覚化されれば使い勝手が向上すると思う
    個人的には既に入れており、使っているが特にそこまで問題が発生していないので良いと思う
    日本語とかだとダメみたい
- [補完](https://github.com/helix-editor/helix/pull/4816)
    単語を環境構築なしで補完できる
    個人的に欲しい機能に挙げてる
    環境があればいらないので最近はそこまで重要度が高くない
    ぱっと出した時には必要なので欲しい

- [カスタムコマンドのラベル付け](https://github.com/helix-editor/helix/pull/3958)
    カスタムコマンドに対してラベルを付けられる
    複数コマンドをキーバインドしたときに`[Multiple commands]`と表示されていた
    それに対してラベルを付けられる
    Issueを作っていたので割と欲しかった機能
- [ファイルエクスプローラー](https://github.com/helix-editor/helix/pull/2377)
    defxやNERDTreeとかの機能
    複数のディレクトリまたがって編集しているときとかこういうのがあると目視で場所が把握できるので良い
    ただ、Helixにはfzfがあるのでそこまで必要性がない気もする
- [括弧の色付け](https://github.com/helix-editor/helix/pull/2857)
    tree-sitterを利用した対応する括弧の色付け
    VSCodeで標準になってから使っていた機能で個人的には欲しい機能
    括弧を誤って消した時とか違う色になって深さが変わったのを目視で判断しやすくなる
- [インラインヒント](https://github.com/helix-editor/helix/pull/5934)
    型情報などLSPで推論された内容を表示する機能
    私が欲しいなあと思っていた機能の一つ

    ![inlay-hints.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/94cac78b-a2f8-eb21-9ffe-3a5be34f6bac.png)

    かなりいい感じ

- [センタリング](https://github.com/helix-editor/helix/pull/3239)
    ウィンドウを真ん中に配置する
    ウィンドウは必ず左側に寄せて表示される
    この左側に表示されているのを右に寄せたりとかできなかったのが中央に表示できるようになる
    これと今の表示されている情報をいくつかそぎ取れば，いわゆるZennモードになる
    ![181724252-821bfea2-dbb2-4a8f-9419-7b457fc360d5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/84633552-226e-316a-8552-fdcffdb132cf.png)

- [デバッグモード](https://github.com/helix-editor/helix/issues/5950)
     デバッグも一応Helixにはついており，実際に扱うことができる
     これはそれを更に拡張して目視で変数の確認したりできるようになる
     VSCodeのを参考に作られているので見た目が似ているので扱いが簡単そう
     ![218330925-d1a22744-e5f8-4f25-8aee-378d2cf3b016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2630694/e2305a7e-c53f-f093-2de4-93554ab1a74d.png)

---
### マージされた

- [マルチカーソル補完](https://github.com/helix-editor/helix/pull/4496)
    マルチカーソルが強みなのに今は補完できないのが辛い
    これが直ればより一層編集の幅が広がる

- [ソフトラップとバーチャル文字](https://github.com/helix-editor/helix/pull/5420)
    いままでエディタの右端まで文字が来ても，改行されず見切れるようになっていた
    これのおかげでそれをソフトラップによる改行になるようになった
    すごい勢いでみんながコメントやテストをしていてOSSの凄さを感じた
    型などの表示ができるようになるらしい(まだない)
    個人的には非常に欲しい機能の一つ
    VScodeなどで型情報が出るのがRustを扱う上で役立つ
    それがこれで解消されればVScodeの個人てきな利用回数が各段に減ると思う

## 終わりに

全体的にはユーティリティの向上になっている

使い勝手が少しづつ良くなっており、いつの間にかできなかったり不便だったところが修正されており良かった

テーマ系の拡張が地味にあったので、自分のテーマでもそれらに対応させないといけないなあと思った

気になっているPRがマージされれば、正直プラグインはいらないなあと思ってしまった

取り出せてすぐ使えるがこのHelixの強みなので、プラグインに依存せず基礎機能が充実すれば問題ないと思う

ただ、やっぱりあれば面白い機能ができるだろうから待ち遠しいところ