Thread View: fj.editor.xemacs
4 messages
4 total messages
Started by IIJIMA Hiromitsu
Mon, 24 Jun 2002 09:51
.emacsでのカスタマイズより前にEgg/Wnnを読み込むには?
Author: IIJIMA Hiromitsu
Date: Mon, 24 Jun 2002 09:51
Date: Mon, 24 Jun 2002 09:51
87 lines
5867 bytes
5867 bytes
いいじまです。
#クロスポストを少し広めにしてあります。適宜絞ってください。
[背景]
しばらく前に Mule 2.3 用に自作した
http://www.ht.sakura.ne.jp/~delmonta/emacs/wnn-recovery.el
なるものを一般公開すべく、XEmacs や GNU Emacs 20+ の環境でテストしており
ます。(正確にいえば、私の手の届くところに XEmacs や GNU Emacs 20+ の環境
はないので、知り合いのところに出かけていってテストしています。)
#ちなみにこのファイルの正体ですが、Egg/Wnn でローマ字入力中に、たとえば
#s h Backspace a と入力したときに |sあ| のようになってしまうので、これを
#|さ| のような形に置換してから仮名漢字変換をする、という設定です。
#
#事前に Egg/Wnn を起動しておいてからこのファイルを load-library すると
#動作するようになります。emcws や XEmacs でも動くと思いますが、Tamago4 は
#非対応です。
#(というか、Tamago4 では s h Backspace a できちんと |さ| になるので、
#こういう Lisp プログラムは必要ありません。)
が、どうしても分からないことがあるので、教えてください。
[質問]
XEmacs に Egg がインストールされている環境で、~/.emacs(Mule 2.3 や GNU
Emacs 20+ と共用するという前提です)から Wnn 周りの設定のカスタマイズを
行いたいのですが、XEmacs の場合、Mule 2.3 と違って、~/.emacs が解釈される
時点では Egg/Wnn 関係の Emacs Lisp ファイルは読み込まれていないため、
単にたとえば
(if (boundp 'fence-mode-map) (progn
(define-key fence-mode-map "\C-h" 'fence-backward-delete-char)
:
:
))
と書いても、boundp が nil を返してしまい、何も起こりません。
(1)こういう場合に、この if 文の前で Egg/Wnn を読み込むためには、どのように
記述するのが正しいのでしょうか?
とりあえず今のところ、
(if (fboundp 'toggle-input-method)
(let (_dim default-input-method)
(setq _dim default-input-method)
(setq default-input-method "japanese-egg-wnn")
(toggle-input-method)
(toggle-input-method)
(setq default-input-method _dim)
))
としていますが、もっとスマートで確実な方法はないでしょうか。
#さらに言うと、XEmacs では
# (global-set-key "\C-x" 'kill-region)
#のようにして C-x に単一のコマンドを割り当てた状態で Wnn を起動すると
#エラーになって、そのあと一般の文字キーが全く効かなくなる(egg.el で
#(global-set-key "\C-x " 'henkan-regiob)としているのが原因なので、egg.el
#を先に load してから C-x に単一コマンドを割り当てるようにすれば回避でき
#る)ので、その対策という意味でも Egg/Wnn は ~/.emacs の時点で読み込んで
#おきたいのです。
また、Egg/Wnn がインストールされていない Emacs でもエラーにならないこと、
というのが私の場合の大前提なのですが、上記の方法で、toggle-input-method
を実行したときに「japanese-egg-wnn なんて知らねーぞ」と叱られる危険性は
ないでしょうか。
(2)XEmacs に加えて Tamago4 の場合も ~/.emacs で Egg/Wnn をロードしたい
のですが(同じファイル名でも中身がガラリと違うので、(boundp 'egg-
conversion-map) などで場合分けする必要はありますが)、この場合はどう書く
のが適切でしょうか?
(3)私の周りに emcws な環境がないのですが、emcws の場合、Mule 2.3 と同じ
ように何もしなくても Egg/Wnn 周りのものは ~/.emacs より先に読み込まれて
いるのでしょうか? それとも、何らかの方法で読み込んでおく必要があるの
でしょうか?
========================================================================
飯嶋 浩光 / でるもんた http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta [自宅] mailto:delmonta@ht.sakura.ne.jp
------【宣伝】----------------------------------------------------------
Emacs の VZ + ATOK + カナ入力化など外道カスタマイズの数々
メールマガジン不定期配信中 ↓バックナンバーはこちらから
http://www.ht.sakura.ne.jp/~delmonta/emacs/
------------------------------------------------------------------------
Re: .emacsでのカスタマイズより前にEgg/Wnnを読み込むには?
Author: Tetsuo Tsukamoto
Date: Mon, 24 Jun 2002 12:16
Date: Mon, 24 Jun 2002 12:16
74 lines
4652 bytes
4652 bytes
# ななめ読みで答えてますのでご参考程度に... >>>>> [Mon, 24 Jun 2002 18:51:32 +0900] >>>>> IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes: > [質問] > XEmacs に Egg がインストールされている環境で、~/.emacs(Mule 2.3 > や GNU Emacs 20+ と共用するという前提です)から Wnn 周りの設定の > カスタマイズを行いたいのですが、XEmacs の場合、Mule 2.3 と違って、~ > /.emacs が解釈される時点では Egg/Wnn 関係の Emacs Lisp ファイル > は読み込まれていないため、単にたとえば > (if (boundp 'fence-mode-map) (progn > (define-key fence-mode-map "\C-h" > 'fence-backward-delete-char) > : > : > )) > と書いても、boundp が nil を返してしまい、何も起こりません。 > (1)こういう場合に、この if 文の前で Egg/Wnn を読み込むためには、 > どのように記述するのが正しいのでしょうか? (eval-after-load "egg" '(if ... )) でよいのではないですか? 無理 して load しなくてよいような気がします。 > とりあえず今のところ、 > (if (fboundp 'toggle-input-method) > (let (_dim default-input-method) > (setq _dim default-input-method) > (setq default-input-method "japanese-egg-wnn") > (toggle-input-method) > (toggle-input-method) > (setq default-input-method _dim) > )) > としていますが、もっとスマートで確実な方法はないでしょうか。 ん?これは (progn (activate-input-method "japanese-egg-wnn") (inactivate-input-method)) ということをしたいのですか? > また、Egg/Wnn がインストールされていない Emacs でもエラーになら > ないこと、というのが私の場合の大前提なのですが、上記の方法で、 > toggle-input-methodを実行したときに「japanese-egg-wnn なんて知ら > ねーぞ」と叱られる危険性はないでしょうか。 それは当然あるでしょう。input-method-alist に japanese-egg-wnn が あることは確かめる必要があると思います。 # もしそういうことをやる必要があるならば、の話です。できればそうい # うことはやらない方がいいと、個人的には思います。 > (2)XEmacs に加えて Tamago4 の場合も ~/.emacs で Egg/Wnn をロード > したいのですが(同じファイル名でも中身がガラリと違うので、 > (boundp 'egg-conversion-map) などで場合分けする必要はありますが)、 > この場合はどう書くのが適切でしょうか? これも同様に、無理して load しなくても eval-after-load でできるの ではないでしょうか。 > (3)私の周りに emcws な環境がないのですが、emcws の場合、Mule 2.3 > と同じように何もしなくても Egg/Wnn 周りのものは ~/.emacs より先 > に読み込まれているのでしょうか? それとも、何らかの方法で読み込 > んでおく必要があるのでしょうか? これはよく知りませんのでパス。 -- 塚本 徹雄
Re: .emacsでのカスタマイズより前にEgg/Wnnを読み込むには?
Author: IIJIMA Hiromitsu
Date: Mon, 24 Jun 2002 14:08
Date: Mon, 24 Jun 2002 14:08
58 lines
4626 bytes
4626 bytes
いいじま@元記事です。早速のフォローありがとうございます。
#Emacs 系 web site を運営しているくせに最近の Emacs には疎く、
#また、きちんとした elisp の基礎というか底辺部分のことを知らない
#ので、こうして教えていただけると非常に助かります。
#cond 構文もつい最近まで知らなかった(爆)阿呆なので…
> (eval-after-load "egg" '(if ... )) でよいのではないですか? 無理
> して load しなくてよいような気がします。
をっ。こういう手があるのですか……が、Egg/Wnn 関係のキーバイン
ディングの設定箇所が、Mule 2.3 や emcws では wnn-egg.el、XEmacs
では egg-wnn.el(爆)、Tamago4 では egg-cnv.el とバラバラですし、
他にも Egg 周りでは色々いじりたいところがあります(この記事の
header とか signature にも書いていますけど、私は自称「外道」で
す(^^;))ので、load したほうが無難なようです。
> (progn
> (activate-input-method "japanese-egg-wnn")
> (inactivate-input-method))
>
> ということをしたいのですか?
なるほど、やはりこういう便利な関数があるのですね。
これでいけそうです。
> > また、Egg/Wnn がインストールされていない Emacs でもエラーになら
> > ないこと、というのが私の場合の大前提なのですが、上記の方法で、
> > toggle-input-methodを実行したときに「japanese-egg-wnn なんて知ら
> > ねーぞ」と叱られる危険性はないでしょうか。
>
> それは当然あるでしょう。input-method-alist に japanese-egg-wnn が
> あることは確かめる必要があると思います。
了解です。キーワードは input-method-alist ですね…というわけで、
(assoc "japanese-egg-wnn" input-method-alist) でいけそうです。
> > (2)XEmacs に加えて Tamago4 の場合も ~/.emacs で Egg/Wnn をロード
> > したいのですが(同じファイル名でも中身がガラリと違うので、
> > (boundp 'egg-conversion-map) などで場合分けする必要はありますが)、
> > この場合はどう書くのが適切でしょうか?
>
> これも同様に、無理して load しなくても eval-after-load でできるの
> ではないでしょうか。
むむう。残念ながら、load よりも前に Tamago4 と Egg V3(Mule 2.3
or emcws or XEmacs)の識別をする簡便な手段が思い浮かばないので、
やはりload するのが確実なようです。
========================================================================
飯嶋 浩光 / でるもんた http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta [自宅] mailto:delmonta@ht.sakura.ne.jp
------【宣伝】----------------------------------------------------------
Emacs の VZ + ATOK + カナ入力化など外道カスタマイズの数々
メールマガジン不定期配信中 ↓バックナンバーはこちらから
http://www.ht.sakura.ne.jp/~delmonta/emacs/
------------------------------------------------------------------------
Re: .emacsでのカスタマイズより前にEgg/Wnnを読み込むには?
Author: Seiichi Namba
Date: Mon, 24 Jun 2002 16:21
Date: Mon, 24 Jun 2002 16:21
39 lines
3025 bytes
3025 bytes
難波です。 wnn も egg も tamago も知らないのですが、 > http://www.ht.sakura.ne.jp/~delmonta/emacs/wnn-recovery.el の前に wnn/egg/tamago (のどれか) が load 済みになっている事が必要 な訳ですか。 それならユーザに wnn/egg/tamago (のどれか。以下 xxx) の xxx-load-hook (件の xxx で用意されているもの) を使って wnn-recovery を require() す るコード、たとえば (add-hook 'xxx-mode-hook (lambda (require 'wnn-recovery))) のような感じのものを .emacs に書いてもらえば良いのではありませんか。 このとき、require() される wnn-recovery.el の側に不用意に (require 'xxx) を書くと嵌まることがあるので注意、かな(この話は dired-x の info に書いてあったと記憶)。 xxx-load-hook が無いとしても、xxx-mode-hook のようなものがあれば、そっ ちを使うこともできます。おそらくxxx-mode に入るごとに wnn-recovery が require() されるような形にはなりますが、実害はほとんど無いといえる でしょう(wnn-recovery.el の側に (provide 'wnn-recovery) を書いとけば、 の話ですが、(require 'wnn-recovery) の2回目の評価ではファイルのロードが 起きません)。 xxx-load-hook や xxx-mode-hook は xxx というモジュールに必ず用意されて いるとは限らないので、その場合はeval-after-load() を使うんですかね。 hook の方が確実だと思うんで、xxx-(load|mode)-hook があるなら、hook を 使う方が良いとは思います。 細い話を読んでいないので、外してたらごめんなさい。 -- 難波清一@東京都西東京市 (http://www.asahi-net.or.jp/~pi9s-nnb/) NAMBA Seiichi <sn@asahi-net.email.ne.jp>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads