$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EXIA.pdf
Search
slme
January 25, 2018
0
150
EXIA.pdf
slme
January 25, 2018
Tweet
Share
More Decks by slme
See All by slme
ViewModel SavedState
slme
1
140
Kotlin Serializationことはじめ
slme
1
1.1k
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
320
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
Discover your Explorer Soul
emna__ayadi
2
1k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
87
The Spectacular Lies of Maps
axbom
PRO
1
400
Measuring & Analyzing Core Web Vitals
bluesmoon
9
710
Utilizing Notion as your number one productivity tool
mfonobong
2
180
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
220
Between Models and Reality
mayunak
0
150
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.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を実行 ・実行後に端末に変更を反映
軽いデモ
これから ・軽い編集しかできないので、機能追加 ・突貫なのでバグが多いので修正 ・シンタックスハイライト欲しい ・ある程度の機能追加が終わり次第公開予定
まとめ
自作エディタはつらい
でも楽しい
ご清聴ありがとうございました