scintillaのtermbox実装

テキストエディタ作成用のライブラリScintillacurses向け実装であるScintermを使っている。 とても良くできていて、問題なく使えているが、色の指定については制約が強い。 16色しか使えないのは良いとして、色の設定が面倒だった。

masahino123.hatenablog.com

そうこうしているうちに、Scintillaのバージョンが上り、Scintermが本家の配布物に含まれなくなったりといったことも起こっていた。

色の設定についてScintermを改造することを考えていたが、 思いきって、別の実装をやってみることにした。 せっかくならcurses以外でということで、termboxを選択。 実際にはtermboxからforkしているtermbox_nextを使うことにした。

GitHub - nullgemm/termbox_next: Library for writing text-based user interfaces

本家のtermboxはメンテ終了しちゃっているので、今さら感もあるが、以前termboxのmrubyバインディングを作ったこともあり、 使い方は把握できている。 また、termbox_nextはtruecolorにも対応している。

作ったのがこれ。

GitHub - masahino/scintilla-termbox

Scintermでcursesの関数を使っているところをtermbox用に変えていく作業が中心。 やってみての感想は、Scintilla良くできているなぁ、というところ。

Scintermとの違いは以下。

  • 色の設定に対応できるように
  • Listbox(自動補完とかで使う)、Calltip、スクロールバー、マーカーの形状を変更

この実装を使って作ったテキストエディタはこれ。

GitHub - masahino/mruby-bin-mrbmacs-termbox: Scintilla base text editor written in mruby

もともと作っていたcurses版のtermbox版。 ほぼほぼ同じ感じ。

サンプル画像がこれ。

https://user-images.githubusercontent.com/381912/141677899-5cb7041d-0b92-44ab-a727-fddee4565c70.png

初期のcurses版の画像がこんな感じだったので、そこそこ見た目が改善されてきているのではないかと思っている。

https://user-images.githubusercontent.com/381912/59429288-6a95b200-8e1a-11e9-9aa7-967dfb05d170.png