Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
EXIA slme
Slide 2
Slide 2 text
whoami ・slme_not_found ・好きな言語: Rust / Kotlin ・ゲーム: MHW
Slide 3
Slide 3 text
~10日前の出来事~
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
_人人人人人人_ > 全員発表 <  ̄Y^Y^Y^Y^Y ̄
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
逃げました
Slide 8
Slide 8 text
ある会話が脳裏に浮かんだ
Slide 9
Slide 9 text
自作言語、自作エディタ、自作OSはエンジニアの夢
Slide 10
Slide 10 text
そして出来上がった
Slide 11
Slide 11 text
EXIA
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
エディタを作りました
Slide 15
Slide 15 text
EXIAの機能 ・vimと同じようにmodeを持つ ・vimと同じようなキーバインド ・ただのテキストエディタ ・クッソ効率が悪い
Slide 16
Slide 16 text
だがしかし...
Slide 17
Slide 17 text
_人人人人人人人人人人_ > マルチバイト文字 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Slide 18
Slide 18 text
マルチバイト文字 ・1 byteではない文字 ・全角ひらがな、漢字、カタカナとか ・矢印キーも ( ↑ => “\x1b[A” )
Slide 19
Slide 19 text
ターミナルのmode ・Cooked mode ・標準入力から入力されたデータをバッファリング ・Enter || EOFで送信 ・バッファリングされてるデータを編集できる ・Raw mode ・標準入力から入力されたデータをそのまま送信する
Slide 20
Slide 20 text
Rustのstdin function ・read ・read_to_string ・read_to_end ・read_exact
Slide 21
Slide 21 text
Raw modeとの相性がよろしくない
Slide 22
Slide 22 text
解決法 ・libcのgetcharを使って後続判定を作り適切に処理する ・read_to_stringを使って後続判定を作り適切に処理する (おそらくRaw modeならgetcharと変わらない(?)) ・cursesを使って最高の気分を得る
Slide 23
Slide 23 text
この時点で月曜日
Slide 24
Slide 24 text
curses !!!!
Slide 25
Slide 25 text
curses ・UNIX系システムの端末制御ライブラリ ・TUIアプリケーションの作成に使われる ・cursor optimizationが由来 ・Linux -> ncurses ・Windows -> PDcurses
Slide 26
Slide 26 text
そして出来上がった
Slide 27
Slide 27 text
TRANS-AM
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
TRANS-AMの機能 ・vimと同じようにmodeを持つ ・vimと同じようなキーバインド ・ただのテキストエディタ ・ncursesで制御している
Slide 31
Slide 31 text
基本的な処理の流れ ・キーボードからの入力を監視 ( Raw mode ) ・その入力文字が何なのか、何を意味するかを解析 (Commandにparse) ・Commandを実行 ・実行後に端末に変更を反映
Slide 32
Slide 32 text
軽いデモ
Slide 33
Slide 33 text
これから ・軽い編集しかできないので、機能追加 ・突貫なのでバグが多いので修正 ・シンタックスハイライト欲しい ・ある程度の機能追加が終わり次第公開予定
Slide 34
Slide 34 text
まとめ
Slide 35
Slide 35 text
自作エディタはつらい
Slide 36
Slide 36 text
でも楽しい
Slide 37
Slide 37 text
ご清聴ありがとうございました