Making Editor written in Ruby version 20160611

41
Making Editor Hamamatsu.rb Langur(@osarusystem) Wed Jun 11 2016

Transcript of Making Editor written in Ruby version 20160611

Page 1: Making Editor written in Ruby version 20160611

Making Editor

Hamamatsu.rb

Langur(@osarusystem)

Wed Jun 11 2016

Page 2: Making Editor written in Ruby version 20160611

About Me

Page 3: Making Editor written in Ruby version 20160611

CC-BY-SA 3.0 from Wikipedia

Name : LangurTwitter : @osarusystemJobs : Embedded Software Engineer

Network Software EngineerInterestedness : OS/Cipher/FreeBSD/Ruby/

Primates/Making Sweets/...etc

Page 4: Making Editor written in Ruby version 20160611

どんなエディタを使っていますか?

Page 5: Making Editor written in Ruby version 20160611
Page 6: Making Editor written in Ruby version 20160611
Page 7: Making Editor written in Ruby version 20160611
Page 8: Making Editor written in Ruby version 20160611

Emacs

• 利点- 豊富なプラグイン

- Lispで拡張可能

- というかLisp環境

- CUIでもGUIでも動作

- ほぼ、なんでもできる

• 欠点- 特殊なキーバインド

- プリインストールされない

- Lispが辛くなってきた...

Page 9: Making Editor written in Ruby version 20160611

Lispが辛くなってきた...

Page 10: Making Editor written in Ruby version 20160611

......

Page 11: Making Editor written in Ruby version 20160611

Hamamatsu.rbに参加しているし

Page 12: Making Editor written in Ruby version 20160611

Rubyでできないかな...

Page 13: Making Editor written in Ruby version 20160611

やってみるか

Page 14: Making Editor written in Ruby version 20160611

処理を考えてみた

Page 15: Making Editor written in Ruby version 20160611
Page 16: Making Editor written in Ruby version 20160611

なんかできそうじゃない?

Page 17: Making Editor written in Ruby version 20160611

やってみた

Page 18: Making Editor written in Ruby version 20160611

editor.rb

require ”./ipl”

init

loop {ch = $main_buffer.getcheditorHandler_exec(ch)

}

1. 別ファイルの読込み

2. 初期化

3. 無限ループ

4. 1文字入力する

5. 対応する処理をする

6. 3.に戻る

Page 19: Making Editor written in Ruby version 20160611

フローチャート通りになった!

Page 20: Making Editor written in Ruby version 20160611

ハンドラ

$handler = {KEY1=>$handler1,KEY2=>EditorCommand2

}

$handler1 = {KEY11=>$handler11,KEY12=>EditorCommand12

}::

Page 21: Making Editor written in Ruby version 20160611

ハンドラ

[↑]キーの場合

キー入力<ESC> [ A

処理$handler = $handler[<ESC>]$handler = $handler[”[”]$handler[”A”].exec$handler = $handlerRoot

Page 22: Making Editor written in Ruby version 20160611

デモ

Page 23: Making Editor written in Ruby version 20160611

利点その1

Page 24: Making Editor written in Ruby version 20160611

構造が単純

Page 25: Making Editor written in Ruby version 20160611

利点その2

Page 26: Making Editor written in Ruby version 20160611

機能拡張が容易

Page 27: Making Editor written in Ruby version 20160611

問題点その1

Page 28: Making Editor written in Ruby version 20160611

キーコードが環境依存

Page 29: Making Editor written in Ruby version 20160611

問題点その2

Page 30: Making Editor written in Ruby version 20160611

クラスによって取得できるキーが異なる

Page 31: Making Editor written in Ruby version 20160611

問題点その3

Page 32: Making Editor written in Ruby version 20160611

クラスによってはキーを取りこぼす

Page 33: Making Editor written in Ruby version 20160611

問題点その4

Page 34: Making Editor written in Ruby version 20160611

コマンドをたくさん用意する必要がある

Page 35: Making Editor written in Ruby version 20160611

今後の課題

• エディタになるように機能追加する

• コマンドの追加を自動化する

• GitHubかどこかで公開できるようにする

Page 36: Making Editor written in Ruby version 20160611

Hamamatsu.rbの皆様

Page 37: Making Editor written in Ruby version 20160611

相談に乗っていただき

Page 38: Making Editor written in Ruby version 20160611

ありがとうございます

Page 39: Making Editor written in Ruby version 20160611

今後ともよろしくお願い致します

Page 40: Making Editor written in Ruby version 20160611

ご来場の皆様

Page 41: Making Editor written in Ruby version 20160611

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