Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EXIA.pdf
Search
slme
January 25, 2018
0
120
EXIA.pdf
slme
January 25, 2018
Tweet
Share
More Decks by slme
See All by slme
ViewModel SavedState
slme
1
130
Kotlin Serializationことはじめ
slme
1
980
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
39
1.9k
The Invisible Side of Design
smashingmag
299
50k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Practical Orchestrator
shlominoach
186
10k
Why Our Code Smells
bkeepers
PRO
335
57k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Done Done
chrislema
182
16k
Designing for Performance
lara
604
68k
Rails Girls Zürich Keynote
gr2m
94
13k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Transcript
EXIA slme
whoami ・slme_not_found ・好きな言語: Rust / Kotlin ・ゲーム: MHW
~10日前の出来事~
None
_人人人人人人_ > 全員発表 <  ̄Y^Y^Y^Y^Y ̄
None
逃げました
ある会話が脳裏に浮かんだ
自作言語、自作エディタ、自作OSはエンジニアの夢
そして出来上がった
EXIA
None
None
エディタを作りました
EXIAの機能 ・vimと同じようにmodeを持つ ・vimと同じようなキーバインド ・ただのテキストエディタ ・クッソ効率が悪い
だがしかし...
_人人人人人人人人人人_ > マルチバイト文字 <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
マルチバイト文字 ・1 byteではない文字 ・全角ひらがな、漢字、カタカナとか ・矢印キーも ( ↑ => “\x1b[A” )
ターミナルのmode ・Cooked mode ・標準入力から入力されたデータをバッファリング ・Enter || EOFで送信 ・バッファリングされてるデータを編集できる ・Raw mode
・標準入力から入力されたデータをそのまま送信する
Rustのstdin function ・read ・read_to_string ・read_to_end ・read_exact
Raw modeとの相性がよろしくない
解決法 ・libcのgetcharを使って後続判定を作り適切に処理する ・read_to_stringを使って後続判定を作り適切に処理する (おそらくRaw modeならgetcharと変わらない(?)) ・cursesを使って最高の気分を得る
この時点で月曜日
curses !!!!
curses ・UNIX系システムの端末制御ライブラリ ・TUIアプリケーションの作成に使われる ・cursor optimizationが由来 ・Linux -> ncurses ・Windows ->
PDcurses
そして出来上がった
TRANS-AM
None
None
TRANS-AMの機能 ・vimと同じようにmodeを持つ ・vimと同じようなキーバインド ・ただのテキストエディタ ・ncursesで制御している
基本的な処理の流れ ・キーボードからの入力を監視 ( Raw mode ) ・その入力文字が何なのか、何を意味するかを解析 (Commandにparse) ・Commandを実行 ・実行後に端末に変更を反映
軽いデモ
これから ・軽い編集しかできないので、機能追加 ・突貫なのでバグが多いので修正 ・シンタックスハイライト欲しい ・ある程度の機能追加が終わり次第公開予定
まとめ
自作エディタはつらい
でも楽しい
ご清聴ありがとうございました