Upgrade to Pro — share decks privately, control downloads, hide ads and more …

EXIA.pdf

slme
January 25, 2018
65

 EXIA.pdf

slme

January 25, 2018
Tweet

Transcript

  1. EXIA
    slme

    View Slide

  2. whoami
    ・slme_not_found
    ・好きな言語: Rust / Kotlin
    ・ゲーム: MHW

    View Slide

  3. ~10日前の出来事~

    View Slide

  4. View Slide

  5. _人人人人人人_
    > 全員発表 <
     ̄Y^Y^Y^Y^Y ̄

    View Slide

  6. View Slide

  7. 逃げました

    View Slide

  8. ある会話が脳裏に浮かんだ

    View Slide

  9. 自作言語、自作エディタ、自作OSはエンジニアの夢

    View Slide

  10. そして出来上がった

    View Slide

  11. EXIA

    View Slide

  12. View Slide

  13. View Slide

  14. エディタを作りました

    View Slide

  15. EXIAの機能
    ・vimと同じようにmodeを持つ
    ・vimと同じようなキーバインド
    ・ただのテキストエディタ
    ・クッソ効率が悪い

    View Slide

  16. だがしかし...

    View Slide

  17. _人人人人人人人人人人_
    > マルチバイト文字 <
     ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

    View Slide

  18. マルチバイト文字
    ・1 byteではない文字
    ・全角ひらがな、漢字、カタカナとか
    ・矢印キーも ( ↑ => “\x1b[A” )

    View Slide

  19. ターミナルのmode
    ・Cooked mode
    ・標準入力から入力されたデータをバッファリング
    ・Enter || EOFで送信
    ・バッファリングされてるデータを編集できる
    ・Raw mode
    ・標準入力から入力されたデータをそのまま送信する

    View Slide

  20. Rustのstdin function
    ・read
    ・read_to_string
    ・read_to_end
    ・read_exact

    View Slide

  21. Raw modeとの相性がよろしくない

    View Slide

  22. 解決法
    ・libcのgetcharを使って後続判定を作り適切に処理する
    ・read_to_stringを使って後続判定を作り適切に処理する
    (おそらくRaw modeならgetcharと変わらない(?))
    ・cursesを使って最高の気分を得る

    View Slide

  23. この時点で月曜日

    View Slide

  24. curses !!!!

    View Slide

  25. curses
    ・UNIX系システムの端末制御ライブラリ
    ・TUIアプリケーションの作成に使われる
    ・cursor optimizationが由来
    ・Linux -> ncurses
    ・Windows -> PDcurses

    View Slide

  26. そして出来上がった

    View Slide

  27. TRANS-AM

    View Slide

  28. View Slide

  29. View Slide

  30. TRANS-AMの機能
    ・vimと同じようにmodeを持つ
    ・vimと同じようなキーバインド
    ・ただのテキストエディタ
    ・ncursesで制御している

    View Slide

  31. 基本的な処理の流れ
    ・キーボードからの入力を監視 ( Raw mode )
    ・その入力文字が何なのか、何を意味するかを解析
    (Commandにparse)
    ・Commandを実行
    ・実行後に端末に変更を反映

    View Slide

  32. 軽いデモ

    View Slide

  33. これから
    ・軽い編集しかできないので、機能追加
    ・突貫なのでバグが多いので修正
    ・シンタックスハイライト欲しい
    ・ある程度の機能追加が終わり次第公開予定

    View Slide

  34. まとめ

    View Slide

  35. 自作エディタはつらい

    View Slide

  36. でも楽しい

    View Slide

  37. ご清聴ありがとうございました

    View Slide