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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
slme
January 25, 2018
150
0
Share
EXIA.pdf
slme
January 25, 2018
More Decks by slme
See All by slme
ViewModel SavedState
slme
1
150
Kotlin Serializationことはじめ
slme
1
1.1k
Featured
See All Featured
Building an army of robots
kneath
306
46k
Test your architecture with Archunit
thirion
1
2.2k
Building Adaptive Systems
keathley
44
3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
340
The World Runs on Bad Software
bkeepers
PRO
72
12k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
160
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
My Coaching Mixtape
mlcsv
0
100
Building AI with AI
inesmontani
PRO
1
910
The Language of Interfaces
destraynor
162
26k
How to train your dragon (web standard)
notwaldorf
97
6.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.2k
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を実行 ・実行後に端末に変更を反映
軽いデモ
これから ・軽い編集しかできないので、機能追加 ・突貫なのでバグが多いので修正 ・シンタックスハイライト欲しい ・ある程度の機能追加が終わり次第公開予定
まとめ
自作エディタはつらい
でも楽しい
ご清聴ありがとうございました