気付いたら Firemacs がすごいバージョンアップしてた
今まで, firemacs のバージョン 0.9 をちょっとだけ改造してたのを使ってた.
改造したのは, 確か, C-k で改行まで削除するようにして,
C-/ (undo) と C-o (open-line) を追加したんだったと思う.
こんな風に, 下手に改造したモンだから, その機能が実装されるまで乗り換えまいとしてたんだけど,
いくらなんでも, 2.1 が出てるのに, 未だ 0.9 を使ってるのはちょっと・・・と思ったから乗り換えた.
で, 0.9 に乗り換えて使ってみた感想は, すげえ.
まだちょいちょい不満はあるけど, 色々と機能が追加されてる.
キー割り当てが増えたのは, もちろん, C-n や C-p 等のキーの割り当てを変更できるようにもなってる.
これはイイね.
早速この機能使って, undo を C-xu から C-/ に変更した.
で, 不満点だけど, ぱっ以下のようなのが思いたった.
- M-n や M-p で, Alt + n や Alt + p で移動できない.
ESC + n とか Ctrl-[ n としなければならない. - はてなの人力検索でもあったけど, google の検索文字列入力領域で C-m として検索語を投入できない. Enter ではできるのに.
- キー割り当ては, キーを割り当てられるだけで, 新たにキーを作れない.
- C-o で open-line してくれない.
- C-k で改行ごと削除してくれない.
まあ, 不満ばっか言っててもしょうがないから,
最後の2つの open-line と C-k で改行ごと削除は, 簡単に追加できそうだから, またソースいじって追加した.
まあ, 超ざっくばらんとやったことをば.
firemacs-2.1.xpi を unzip で解凍.
解凍した出来る chrome ディレクトリの中にある firemacs.jar も unzip で解凍.
content ディレクトリ内にある以下のファイルをいじくる.
- config-name.js
- keybinding2.js
- config.xul
キー, というかここだと関数かな?の追加だと, この3つのファイルをいじれば OK みたい.
重要なのは, keybinding2.js.
ここに新たに定義する関数を書き込む.
とりあえず, keybinding2.js をこんな感じに変更した.
ちなみに, 左の数字は, 行番号ね.
110 // khiker's custom start. 111 Keybinding.prototype.KillLine = function(e) { 112 this.sfun.reset_mark(e); 113 goDoCommand('cmd_selectEndLine'); 114 goDoCommand('cmd_selectCharNext'); 115 goDoCommand('cmd_cut'); 116 this.sfun.reset_mark(e); 117 }; 118 // khiker's custom end. 119 120 Keybinding.prototype.Paste = function(e) { 121 goDoCommand('cmd_paste'); 122 }; 123 124 Keybinding.prototype.NewLine = function(e) { 125 this.sfun.insert_text('\n'); 126 }; 127 128 // khiker's custom start. 129 Keybinding.prototype.OpenLine = function(e) { 130 this.sfun.insert_text('\n'); 131 goDoCommand('cmd_charPrevious'); 132 } 133 // khiker's custom end. ... (中略) ... 275 NewLine: 'C-m', 276 OpenLine: 'C-o', 277 DeleteCharForward: 'C-d', 278 DeleteCharBackward: 'C-h',
上の方で関数を定義.
下の方にある Keybinding.prototype.edit に定義した OpenLine を書いておく.
次に, config-name.js にも名前を追加しておく.
34 'Paste', 35 'NewLine', 36 'OpenLine', 37 'DeleteCharForward',
そして最後に, 追加したキーを config.xul にも書き込んで終了.
150 行目から 153 行目がそう.
146 <row> 147 <textbox id="NewLine" value="C-m"/> 148 <description value="inserts a new line"/> 149 </row> 150 <row> 151 <textbox id="OpenLine" value="C-o"/> 152 <description value="Insert a newline and leave point before it."/> 153 </row> 154 <row> 155 <textbox id="DeleteCharForward" value="C-d"/> 156 <description value="deletes the next char"/> 157 </row> 158 <row>
あとは, ファイル, ディレクトリを再び圧縮してやれば OK.
content, skin ディレクトリを firemacs.jarに,
また, その親ディレクトリである chrome ディレクトリと install.rdf ファイルを firemacs-2.1.xpi として.
ざっくばらんと書いたから何処が間違ってるかも. まあ, 大目に見てくださいw
今回もソース見て思ったけど, ファイルが小さくまとまっていて分かり易い.
拡張機能の作成の参考になるんじゃないかなあ. たぶん.
こういうのいじってみると自分でも何か作ってみたくなるね.
更新時刻
2007年, 5月10日, 0:22