boiled-canna は CANNA 版 boiled-egg です(分かる人はこれで分かる(^^;)。
boiled-canna は、emacs 上で動作する日本語入力インタフェースの一種です。CANNA のフロントエンドとして動作し、emacs のバッファに挿入されているアルファベットを、あたかも CANNA がかな漢字変換可能な状態でそのローマ字を入力して変換をかけたかのような状態にしてくれるインタフェースです。
最新版の boiled-canna が動いた、動く emacs のリストです
今は、昔、Nemacs の日本語入力環境として、標準では EGG、オプションで SKK の時代がありました。その後に CANNA も追加されるのですが、、、、この時代に、日本語入力するとなると EGG を C-\ で有効にし、ローマ字を入力して SPC で変換、RET で確定と言うのが、通常の流れでした。これはまさに、MS-DOS や MS-Windows でおなじみの FEP と同じ操作をする必要があったと言うことです(別に当時は面倒だとも思ってませんでしたが)。当然、アルファベットを中心に入力する時は、再度 C-\ を入力して EGG を無効にする必要がありました。
と、ここに EGG を使いやすくする拡張として boiled-egg と言うものが出現しました。boiled-egg の画期的だったのは、FEP の ON/OFF を行うと言う概念が無くなった事です。どういう事かと言うと、アルファベット(ローマ字)を通常通りに打ち込んで行って、漢字変換したくなった時に C-j と打つとそれまで入力していたアルファベット(ローマ字)が、あたかも FEP ON の状態で入力したかのように漢字変換する事が出来たと言う事です。この動作で何が嬉しいかと言うと、プログラムのようなアルファベット中心(コード部分)の入力と日本語中心(コメント部分)の入力が頻繁に切り替わるような場合に、一切、FEP の状態を気にしなくとも良くなり、思考が中断される事無くコーディングに勤しめるようになった。と言う事で、長らく、boiled-egg を使っていたのですが、その当時の、EGG と言うか jserver はたまにお亡くなりになる事があってメンテナンスがうっとうしかった記憶があります。
その後、時代は流れ、CANNA も Nemacs で使えるようになり、Nemacs も Mule となり、Mule-2.x も出始めていた頃、いわゆる DOS/V マシン(PC-AT互換機) が巷に出回り、早速、購入(ちなみに、当時日本標準機の PC-9801 は持っていませんでした)。これで『自宅でも UNIX 出来る』と喜んだのは良いのですが、BSDには AT&T と BSD との著作権問題という暗い影が差し込んでおり、それならイッチョ Linux でも入れてみっかと言う事でLinuxをインストールしたのですが、また、jserver と格闘するのが嫌だったのと設定がうっとうしい(/etc/host.confをいじる必要があった)のが嫌で cannaserver に流れてしまいました。
しかし、ここで問題発生、boiled-egg が使えない、、、と言う事でほんのちょっとの間、canna-boil(CANNA 対応の mule を作ると使えた boiled-egg もどきのインタフェース)を使っていたのですが、canna-boil にも癖があり、どうも馴染めない(一番許せなかったのは変換対象としてアルファベットしか拾わなかった事で、次に許せなかったのが fence-mode でローマ字を入力し始めると候補を確定してくれるのは良いのだが文節区切りの空白をそのまま残してくれる事だった)。canna-boil がここまでやってくれてるんだから、『もうちょっと処理を追加してあげればもっと boiled-egg らしく動作するようになるのに』と言う事で、開発したのが boiled-canna です。
boiled-canna は emacs 上で動作する日本語変換インタフェースの一種です。 boiled-canna は以下のような特徴を持っています。
boiled-canna を使うには .emacs に以下を追加して下さい。
(load "boiled-canna")これで、全バッファで boiled-canna が使えます。モードライン(通常反転している行)のモード欄(通常'('と')'で囲まれた部分)に "BC" と表示されていれば boiled-canna 有効な状態です。
(boiled-canna-mode 1)
boiled-canna の基本は C-j です。
kanakanjihenkan_変換範囲はカーソル位置から行頭方向に向かって同種の文字(実は、アルファベット(ローマ字)に限らず、ひらがな、カタカナ(半角、全角)、数字、記号も変換範囲とする事が出来ます。さすがに漢字は除きますが)が続く部分が、変換対象となります。この時、空白文字(空白、タブ、改行)を飛び越して変換範囲とする事はありません。アルファベットとかな漢字混じり文を書く時は、アルファベットと変換するローマ字の間に空白を置いてあげるとスムーズに変換できるようになります。
↓ C-j
|仮名 漢字 変換|
↓ C-m
仮名漢字変換_
canna kanjihenkan_また、変換しようとしている文字列の前に同種の文字列がつながっている場合にはその部分まで変換範囲になってしまいますが、region を指定してあげる事で変換する範囲をregionに特定してあげる事が出来ます。
↓ C-j
canna |漢字 変換|
↓ C-m
canna 漢字変換_
cannakanjihenkan更に、変換確定直後に限り、C-j で再変換します。
↓ C-@ C-e
cannakanjihenkan_
↓ C-j
canna|漢字 変換|
↓ C-m
canna漢字変換
kanjihenkan_変換を中止したい場合には、 C-g で変換を中止します。
↓ C-j
|感じ 変換|
↓ C-m
感じ変換_
↓ C-j
|感じ 変換|
↓ C-j 数回入力
|漢字 変換|
↓ C-m
漢字変換_
kanjihankan_変換中に非空白文字を入力すると変換を確定し入力した文字を確定した文字列の後ろに挿入します。
↓ C-j
|漢字 反感|
↓ C-g
kanjihankan
kanji_boiled-canna を無効にするには M-x boiled-canna-mode して下さい。モードラインのモード欄から BC が消えて boiled-canna が無効になった事を示します。再度 boiled-canna を有効にするには M-x boiled-canna-mode でモード欄に BC が表示され、boiled-canna が有効になった事を示します。ようは、boiled-canna は M-x boiled-canna-mode でトグルします。
↓ C-j
|漢字|
↓ henkan
漢字henkan_
これから説明する操作は、全然 boiled-canna の話ではないのですが、CANNA に詳しくない人もいるでしょうから CANNA の標準的な操作を説明します。
fence-mode の基本操作は
boiled-canna の動作は以下の変数を設定する事により変更できます。
(add-hook 'boiled-canna-preload-hook (function (lambda () (setq boiled-canna-toggle-buffer nil ; 全バッファでトグル boiled-canna-rK-trans-key "\C-j" ; C-j で変換開始 boiled-canna:stop-char "(){}<>") ))) ; "(){}<>"範囲外 (load "boiled-canna") ; boiled-canna のロード (boiled-canna) ; boiled-canna 有効 (global-set-key "\M-\ " 'boiled-canna-mode) ; boiled-canna をトグルさせるキー