気付いたら 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