2019の参加記事です。Textbringerという名前はStormbringerに由来している。メルニボネの皇子をはじめとするマイクルムアコックの小説群)に登場する魔剣Stormbringerの方である。殺した相手の魂を吸い取って、持ち主である病弱なエルリックに活力を与えてくれる強力な剣であり、我々定命の者の能力を拡張するテキストエディタの名前としてふさわしい。ムアコックの読者からはしばしば不吉な名前だと言われるが、Stormbringerが危険なのはstormをbringするからであって、Textbringerがbringするのはtextなので安心してほしい。5.1.0へアップデートした。Requestsでどうにもならない感じだったので、以下のスクリプトでキャッシュを元にリンクするようにして、Amazonプラグインは使わないことにした。2019の参加記事です。textbringerでインストールできる。日本語を扱うためにncurseswが必要な環境があるので、その場合は例えば以下のように事前にインストールしておく。textbringerで起動できるが、コマンド名が長いので自分は以下のようなスクリプトを~/bin/tbに置いている。とでもしておけばよい。rbenvを使っていたりするとRubyのバージョンによってgemが入ってないことがありがちなので注意。2019の参加記事です。Textbringerの操作はほとんどEmacsと同じなのでEmacsチートシートを利用できるが、少しだけ違うところがある。EmacsのC-/でundoを実行できるがちょっと癖があり、戻しすぎた時にredoするコマンドがなく、いったんundoをC-fなどの他のコマンドで中断すると、以降のundoはそれまでのundoを取り消す動作になる。C-/)というredo用コマンドを別途用意している。ちなみにundoのコマンド名はundoなのに対し、redo_commandというコマンド名になっているのは、redoはRubyでは予約語であるため。Rubyでは予約語と同名のメソッドも定義できるが、レシーバを省略した呼び出しができないのは不便なので、別の名前にしている。2019の参加記事です。TextbringerのマークはEmacs同様C-SPCでセットできる。set」と表示されるだけの、昔のEmacsのような挙動にしている。C-x(exhange_point_and_mark)でマークとポイントの位置を入れ替えたりといった用途もあるので、これはこれで合理的だと思っている。やめた、という時にC-gとかでハイライト表示を消さなくていいし。[なるほど、そういう理由なんですね。[プルリクエストお待ちしております。平成Ruby会議01平成Ruby会議01で発表してきた。立派なビルだなあと思って写真を撮ってたけど、このビルとは違う棟だったらしくて道に迷った。ライブコーディングの練習を事前にしておいたのが徒になって、練習の時のメソッド定義が残っていて微妙な感じになってしまった。置いておいたステッカーはなくなっていたので平成生まれの人は優しい。Challengeとかの成果もあって若い人たちがRubyをハックしてくれているのは心強い。スタッフ・参加者のみなさん、ありがとうございました。2019の参加記事です。1.0.2をリリースした。最後のが一番つらいやつで、平成Ruby会議の時も当日の朝にライブコーディングの練習をしていたらバグに気づいて修正していた。2019TextbringerのRubyモードでは、インデントの計算をする時にまず最初にカーソル位置から一番近いclassやdef、ifなどを探してそこからカーソル位置までのトークンをRipperで切り出す。endendの部分のトークンを切り出し、ifの行のインデント位置からendの対応関係を見てインデントを計算する。ところが、Ripper.lexは2番目のendで文法エラーを検出して最後のendはトークンとして返してくれない。1.0.2では途中で文法エラーになったら残りの部分を繰り返しRipperに食わせて最後までトークンを切り出すようにした。して返ってくるのでそのあたりも修正した。Ripperは正しいRubyプログラムを先頭から食わせるような使い方では便利だが、テキストエディタのように正しくないかもしれないRubyプログラムを一部分だけ処理するようなケースではちょっと工夫が必要になる。