Mule for Win32 tips

2001.08.10
スクリーンショット (11KB)

Link

Q & A

Q: Ctrl と Capsの入れ換えなど 入力キーの変更
A:
(set-ime-toggle-key "C-\\")
IME起動キーを変更。
(win32-set-modifier-key 20 'ctrl)
英語キーボードで Capsを Ctrlにする
(win32-set-modifier-key 240 'ctrl)
日本語キーボードで Capsを Ctrlにする
(win32-set-modifier-key 18 'nil)
Altキーが果たしている [meta] の役割を剥奪。Altキーを押しても何もおこらない(Mule for Win32だけ)
(win32-set-modifier-key 18 'none)
上に続いて こう設定すると、Altキーを押したかどうか Mule for Win32が感知しなくなった。Mule for Win32を使っていても、Windowsが Altキーを監視するようになった。
Q:あるファイルの文字コードを Shift-JISから、iso-2022-jpに変えたいと思っ たら?
A: そのファイルを Muleで読みこんだあと、`C-x C-k f' と入力すると、Mule はミニバッファで、

     File-coding-system:  
と聞いてきますので、指定したいコード系を入力します。このとき、スペース キーや TAB キーによるコード系名の補完機能が使えます。そのあとでファイ ルに文書を書き出す とOKです。 コード体系は、これ。
*sjis*
MS 漢字コード(シフト JIS コード)
*sjis*dos
MS 漢字コード(シフト JIS コード)、行末は CRLF
*junet*
JUNET で使われているコード(およびそれに類するもの)
*oldjis*
旧 JIS コード
*ctext*
X で使われているコンパウンドテキストのコード
*euc-japan* 日本語 EUC コード
iso-2022-jpに変えたいのなら、 *junet* を指定すればいいですね。そのあ とで、C-x C-sで上書きすれば iso-2022-jpでセーブできます。(Emacs20で は別の指定方法になってます、ここの指定は Mule(Emacs19)の方法だという ことをお忘れなく)くわしくは、infoの File: mule-jp, Node: File I/O, Next: File Input, Prev: Display, Up: Set Coding System を見てください。
Q: infoモードの使いかたがわからない..
      A: M-x info で、Infoを選べば解説がでてくるけど、英語なんですね。な
      ので、日本語でちょと解説。 

      操作法:
      マウスを使ったばあい: カーソルで色のかわる項目を選んで、*右*クリ
      ックで、とりあえず読むことができます。

      キーボードの操作:
      File: info,  Node: Help-^L,  Next: Help-M,  Prev: Help-P,  Up: Getting Started

      いちばん上の行がこうなってるとき、Fileというのは、現在読んでいる
      infoファイル。Nodeノードというのは、そのinfoファイルの中の項目。
      (nodeという単語は 結節点とかネットワーク上の1つの要素という意味だ
      けど、ここでは文章の小まとまりごとにつけられた標題のこと)
      Nextというのは NextNode次のノード、Prevというのが PreviousNode前
      のノード。Upというのは、上位ノード。

       n      次のノードに進む(Next)  同じレベルでの次のノードに進みます
       p      前のノードに戻る(Prev)
       u      上位ノードに戻る(Up)    レベルが上位のノードに戻ります

       space  画面をスクロールしながら読む (ふつうのMuleなら、C-v )
       del    画面を逆スクロールする (ふつうのMuleだと、M-v )
       b      画面を いちばん最初(Beginning)の行に戻す (ふつうのMuleでいえば、M-< )

       C-l    カーソルのある行を 画面中央にする (これはいつもと同じ)
       ?      操作コマンドを表示 (spaceで戻る)
       m      このコマンドのあとに、Menuと記してある単語を入力するとそのページに行く

      ここまでが、基本。

       l      さっき(Last)の場所に戻る (webブラウザでの [戻る矢印] の機能)
       f      このコマンドのあとに、クロスリファレンスしてある単語を入力すると、そのページに行く (lで戻る)
              (クロスリファレンスしてある単語は、*Note Cross などとなっていて、
              単語に色もついてる)

      おわりかたは、私はいつも C-x kで終わらせてるけどいいのかな。qキー
      で終わるのがいいみたい。 キーボードで操作するとき、カーソルを色の
      ちがうとこに置いてspace でそのノードを読むこともできますね。 
Q: Muleの関数名の調べかた..
A: C-h a としてから調べたい関数名の一部をおもむろに入力すると、そ の入力文字が含まれた関数が 一覧されます。(私は、活用入門をみて C-hをバックスペースに割当て、そのかわり元の C-hの機能を M-x ? に 割当ててます。だから、M-x ?a と打ちこんでから、 文字を入力すること になります) M-x command-aproposと直接指定してもいい です。M-x describe-function というのもあります。変数を調べるなら、M-x describe-variableM-x apropos とすると、変数、関数を両方しらべてく れるみたい。
Q: E-mailで送るために、70文字程度で改行したいのだ
A: M-x fill-region を使え。何文字で折りかえすかは、変数 fill-column で 変えれる。デフォルトは70。変えかたは、C-u 65 などと打ちこんだあとに、 C-x f とすればよい。ほかにも、

File: emacs,  Node: Fill Commands,  Next: Fill Prefix,  Prev: Auto Fil
l,  Up: Filling

Explicit Fill Commands
----------------------

`M-q'
     Fill current paragraph (`fill-paragraph').

`C-x f'
     Set the fill column (`set-fill-column').

`M-x fill-region'
     Fill each paragraph in the region (`fill-region').

`M-x fill-region-as-paragraph.'
     Fill the region, considering it as one paragraph.

`M-s'
     Center a line.
Q: elファイルのバイトコンパイルってどうやるの?
A: Diredモードで、Bとするのがかんたんです。elcファイルが作られま す。
infoのdired の項 `B' Byte compile the specified Emacs Lisp files (`dired-do-byte-compile'). *Note Byte Compilation: (elisp)Byte Compilation.
Q: かんたんにコメントにしたり、コメント記号を外したりしたいぜー
A: M-x comment-region で、できますよ。shell-script modeなら #が、 C++ modeなら、//を付けたり外したりできます。 C-[SPC]で、範囲の始まりを指定して、 範囲の終わりにカーソルもってきて、 C-u M-x comment-region[RET]とすると、 コメント外れたでしょ? C-uを打ちこまないようにすれば、コメント記号がつきます。
Q:バックアップファイルの index.txt~ とか、にょろがついたfileが邪魔です..
A: ~/.emacsに次のように書く。これは 活用入門に書いてあるのですけ ど、 その本ではかっこの位置がまちがってました(少なくとも1998/1/10 発行第3刷までは)。ここにあるのは、Mailing Listで出された訂正版で す。

;; backupfiles location
 (cond ((not (fboundp 'make-backup-file-name-original))
        (fset 'make-backup-file-name-original
              (symbol-function 'make-backup-file-name))
        (defun make-backup-file-name (filename)
          (if (and (file-exists-p (expand-file-name "~/bak"))
                   (file-directory-p (expand-file-name "~/bak/")))
              (expand-file-name
               (file-name-nondirectory filename) "~/bak/")
            (make-backup-file-name-original filename)))))

これで %HOME%/bak ディレクトリに 更新したファイルのバックアップが index.txtという名前で 作られます。index.txt~ というファイルは作られな くなります。

Mailing Listで紹介されていたのですが、もっと簡単なのがありました よ。効果は上のものと同じです。

;; backup.file~ location
(setq backup-by-copying t)
     (fset 'make-backup-file-name
       '(lambda (file)
        (concat (expand-file-name "~/tmp/")
        (file-name-nondirectory file))
       ))

Q: %HOME%ディレクトリの ~/.emacsを読んでくれなくて..
A: set HOME=c:\homeという文(イコールの前後にスペース置くとX)を C:\autoexec.batに書かなくてはならないみたい。レジストリに c:\homeは登録してあったんだけどそれじゃだめのようだ。
Q: Buffer List(バッファリスト)モードの操作について..
A: C-x C-b で別ウィンドウに起動します。C-x oでそのウィンドウに移動 します。 d でバッファから消すマークがついて、x で消します。Drag&Drop でファイルを ひらき過ぎたときはこれで減らしましょう。 o で別ウィンド ウにオープン。f でそのウィンドウ自身にオープンします、文字入力を 再 開しましょう。 (正式には Emacsでは、ウィンドウという言葉とフレームと いう言葉が、webブラウザと 逆になってるらしい) C-o は、多数ある text fileの中身をちょっと見るのに便利ですよ。
Q: (line-number-mode t) って~/.emacsにあったけど何?
A: 行数が modeline(モードライン)に L21 とか表示されます。
Q: SKK 9.6 を使おうと思います..
      A:skk9.6.tar.gz を解凍すると skk-9.6/ というディレクトリができるので、
      skk9.6m.tar.gzをその中に置いてから解凍します。これで、skk9.6の修正
      済みファイルができました。
      skk-9.6/lisp/ にあるelファイルをとりあえず全部、
      %MULE%/site-lisp/skk/というディレクトリにいれます。 

      次は設定。skk9.6.tar.gz を解凍したときの ReadMe を元に ~/.emacsに
      設定を書き加える。skk.elには、「skk.el 9.x より ~/.emacs でのカスタマ
      イズが可能となった」と書いてあります。skkの設定は全部~/.emacsに書
      きましょう。 

      ~/.emacsに設定を書き込みます。 まずはskk.elのあるpathの設定。 

       (setq load-path
             (cons (expand-file-name
                    (concat exec-directory "../site-lisp/skk"))
                   load-path))

      %MULE%/site-lisp/skk ディレクトリにskk.elほかの elispファイルがありま
      すよー という設定です。活用入門に書いてあったのを写した。
      次にskkの操作キーを設定します。 

       (setq j-delete-backward-char "\C-h" )
       (global-set-key "\C-x\C-j" 'skk-mode)
               ;(global-set-key "\C-xj" 'skk-auto-fill-mode)
               ;(global-set-key "\C-xt" 'skk-tutorial)
       (autoload 'skk-mode "skk" nil t)
               ;(autoload 'skk-tutorial "skk-tut" nil t)
               ;(autoload 'skk-check-jisyo "skk-tools" nil t)
               ;(autoload 'skk-merge "skk-tools" nil t)
               ;(autoload 'skk-diff "skk-tools" nil t)

      個人的に使用しない機能には、行頭に ; をつけてコメントにしておきま
      した。C-hをバックスペースに割当てたほかは ReadMe に書いてあった
      のを写しましたよ。
      次に skkのシステム辞書がある場所を指定します。活用入門によれば 
      %MULE%/bin/ に入れなさい、ということだけど、全部 skk.elと同じディレ
      クトリに入れるのがわかりやすいでしょう! と思ったのでそうしてます。 

       (setq skk-large-jisyo "c:/usr/mule2/site-lisp/skk/SKK-JISYO.L")


      あとskkチュートリアルをするときには この設定も必要です。 

       (setq skk-tut-file "/usr/mule2/site-lisp/skk/SKK.tut"

      活用入門についてた skk 8.6に比べると、各モードでカーソルが色分け
      できてて便利です。でも elファイルのままで動かしてると、stringp, nilの
      エラーがskk漢字変換の初回にでるぞ。でもそのエラーのあとは普通に
      つかえるからまあいいか。elファイルのうち Elib 1.0由来のもの以外 を
      バイトコンパイルした。diredモードで 'B'することによってバイトコンパイ
      ルしていきます。するとこのエラーもでなくなった。
      Elib 1.0由来のファイル、`avltree.el',`elib-node.el', `queue-m.el',
      `stack-m.el' は、ftp://ftp.mei.co.jp/free/gnu/elisp/ から入手した 
      elib-1.0.tar.gzのなかのものをバイトコンパイルして使用してます。
      skk9.6.tar.gzのほうの上記5つのファイルはバイトコンパイルがうまくい
      かないらしいので。 

      ところで skk9.6.tar.gz と skk9.6m.tar.gz は京大の skkホームページ
      (http://skk.kuis.kyoto-u.ac.jp/skk/)などでdownloadしたものですよ。
Q: Emacs-Lispを書けたいんですけど..
A: ほかのエディタだとマクロっていっているのを書けると便利ですよ ね。 GNU Emacs Lisp Reference Manual の日本語訳のページがありま す。 とりあえずここ。(なんだかミラーサイトが多いんだけど..gooで調べ た) http://shakosv.sk.tsukuba.ac.jp/ShakoDoc/Editors/NEmacs/elisp-jman/html/ なんだか難しそうなページですけど、 「ハッカー以外の人のための GNU Emacs Lisp」というページは読むことが できました。 Muleを起動 するとできる *scratch* というバッファは、(Lisp Interaction) というモー ドになっています。 ここで fill-column とタイプして、カーソルがその1つ あとに位置しているとき、 C-j を押すと、70と表示されると思います。 (+ 5 5) とタイプして、C-j で 10と表示されます。あとはそのページを 見ま しょう。
Q: cmailの使いかた..
      A: http://www.st.rim.or.jp/~fuku/cmail/ ここで、オフィシャルリリースの 
      cmail-2.59.11.tar.gz と修正ファイルをもらってきました。修正ファイルは
      ただのテキストファイルだったので、cmail.el ファイルの該当個所を修正
      しておきます。 (活用入門にも同じバージョンのファイルが入っているけ
      ど、今回はnet上で入手したファイルを使いました。CD-ROMの入換えっ
      て面倒なのでnet上で取ってくることが多い) 

      まず E-mailを扱うために 次の設定が必要です。 

       ;;; mail general setup
       ;;; E-mailの設定
       (setq user-mail-address "pinpon@foo.bar.or.jp")
       (setq user-full-name "PinPon")
       (defun user-full-name () user-full-name)
       (define-service-coding-system 25 nil *junet*unix) ;SMTP
       (define-service-coding-system 110 nil *junet*unix) ;POP
       (setenv "MAILHOST" "POPサーバ") ;POP server
       (setq mail-from-style 'angles) ;From: fullname <address@..>
       (setq mail-yank-prefix " > ") ;引用符
       (setq send-mail-function 'smtpmail-send-it) ;i select to use smtp
       (setq smtpmail-default-smtp-server
             "SMTPサーバ") ;smtp server
               ;(setq smtpmail-local-domain "ドメイン名") ;domainName
       (setq mail-use-rfc822 t) ;make mail-header rfc822style
       (require 'smtpmail)

       (setenv "MOVEMAIL" "-p") ;show status of getting mails


      ドメイン名とは、localhost.foo.bar.or.jpなどのようなものです。 localhost
      の部分がマシン名(ダイアルアップ接続してる人のばあい、なんでもい
      いはず) 、 foo.bar.or.jpの部分がドメイン。
      [コントロールパネル] -> [ネットワーク] -> [TCP/IP] -> [TCP/IPのプロ
      パティ] -> [DNS設定] の"ホスト名"と "ドメイン"をきちんと指定してあ
      れば (setq smtpmail-local-domain "ドメイン名") この文はいりません。
      そのあとで cmail固有の設定をします。 

       ;;; cmail
       (setq load-path
             (cons (expand-file-name
                   (concat exec-directory "../site-lisp/cmail"))
                   load-path))
       (setq cmail-spool-directory "po: PinPon") ;pop-user-account
       (setq cmail-path "~/mail/") ;mail saved dir
       (setq cmail-archive-folder "send") ;my written mail saved dir
       (setq cmail-use-send-mail-archive t) ;save my written mail
               ;(setq cmail-use-mime t) ;tm
       (setq cmail-display-thread t)
       (autoload 'cmail "cmail" nil t)
               ;(setq mail-default-headers
               ;      (concat
               ;       "X-Mailer: cmail 2.59.11 on Mule for Win32 v1.22\n"))
       (setq cmail-folder-alist
             '(("To" ("mule-win32" . "mule_w32"))
               ("To" ("lw3d-ml" . "lw3d"))
               ("To" ("reversible" . "rr"))
               ("To" ("demo" . "demo"))
               ("Reply-To" ("mule-win32" . "mule_w32"))))

               ; ("調べるフィールド" ("この文字列を含むなら" . "このフォルダに"))
               ; C-c C-w で signature を挿入


      cmail-path ですけど、活用入門のp126を参考にしたら、MailINBOX とい
      う ファイル名ができてしまった。この本では (setq cmail-path "~/Mail")
      となってるけど (setq cmail-path "~/Mail/")とする(後ろのスラッシュをつ
      ける)のが正しいですよ。
      (setq cmail-display-thread t) というのは スレッド表示をする、という指
      定ですけど、これを指定するとメールを受信したあと結構またされます。
      指定しないときは t を nil にする。 

      操作法:
       M-x cmail      起動して メールを取りにいく
       C-u M-x cmail  起動するけど、メールを取りにいかない

       space  メールをスクロールしながら次々に読む
       <      メールの最初に戻る
       n      次のメール
       p      前のメールに戻る

       m      新規メールを書く
       C-c C-c        書いたメールを送る
       R      メールを引用したうえで、返事書きモードになる

       g      新着メールを取りにいく

       d      メールを削除するためのマークをつけて
       x      実際に削除する
       u      削除マークをやっぱりはずす
       v      別のフォルダに移動する
       A      メールを各フォルダに自動分類する
       q      cmailを終了する

       t      ヘッダを表示するかどうか切換える

      細かいことは cmail.texi を見てね。このファイルは infoファイルに直す
      のがよいんだろうけど、私的にはこのファイルを テキストファイルとして
      そのまま読むほうがラクです。
      ところで tm(tool for MIME) は導入してないので、Subjectの日本語ヘッ
      ダは読めません。
      =?ISO-2022-JP?B?GyRCPi40WBsoQiAbJEI1SEInGyhC?= といった表
      示になります。あまり困らないのでこのままでいいことにしました。 

      実際に使ってみるとなかなかいいですね。電信8号+den8viewより軽快
      にメール読めますし。でもメール送信の途中でダイアルアップ回線がき
      れたとき、TCP の一般保護例外 とかで、Muleごとおちてしまいました。
      .BACKUP というファイルがあったので読んでた途中のメールをなくすこ
      とはありませんでしたけど。こういう安定性は 電信8号とか ほかのメー
      ラのほうがあるかな?
      そんなわけで、移行するつもりはあんましなかったんだけど、メーラを
      cmailに移行しました。おもってたよりずっとラクだわー。キー操作覚える
      のが面倒にちがいないとおもってたけど、キーボードだけで操作できる
      し、レスポンスもいいし。 

      elファイルのままで使用したら問題なく動いたので、バイトコンパイルし
      ました。動作は早くなってます。 
Q: Ctrl-H にバックスペースの役割をわりあてたい..
      A: ~/.emacsに
      (global-set-key "\C-h" 'backward-delete-char) ;C-h as BackSpace 

      付記ですが、活用入門の P.79-80ページの VK_LSHIFT, VK_RSHIFT,
      VK_LCONTROL, VK_RCONTROL...の 値はひとつづつちがってます。
      正しい値
      VK_LSHIFT 160
      VK_RSHIFT 161
      VK_LCONTROL 162
      VK_RCONTROL 163
      VK_LMENU 164
      VK_RMENU 165
Q: Calendar/Diary パッケージを使いたい..
      A: Info で mEm<TAB><RET> と打ちこみ、さらに、
      mCalendar/D<TAB><RET> と打ちこんで説明を読みましょう(英語だけ
      ど)。 

      操作法:
       M-x calendar   カレンダーをつかう
       q      おわる
       .      カレンダーの今日の位置に、カーソルをもってくる
       x      休日を 色つきで表示する

      Diaryモードで、予定表をつくったり日記を書いたりできる。そのために
      は、まず最初に"diary file"を作らなくてはなりません。%HOME%ディレク
      トリに diaryという名のファイルをつくります。 見たい日にカーソルをあわ
      せて(例えば今日なら、. を押す)、d でその日の予定がみれます。


       d      その日の予定を見る
       s      すべての日の予定を見る( ~/dairy ファイルを見る)
       m      予定のある日を マークする
       u      マークを消す

      こういう記述が、File: emacs, Node: Move to Beginning or Endにあった。
      By default, weeks begin on Sunday. To make them begin on Monday
      instead, set the variable `calendar-week-start-day' to 1. 
tm 7.106のインストール
0) tm-7.106.tar.gzを、D:\wApp\tmp\ に解凍した。D:ドライブは、Mule for
Win32もインストールしてあるドライブだ。同じドライブに置いておくとトラ
ブルを減らせると思う。

1) D:\bin に、sh.exe, rm.exe, cp.exeを置く。(Makefileを見ると、これら
を使うことがわかったから。このファイルもD:ドライブに置く)

2) Makefileなどをこせきさんのpageを見て書換え。そのまま。

3) Makefileのあるとこ、(D:\wApp\tmp\tm-7.106\tm\ )で、makeを実行。この
makeはDJGPP2.01のもの。

4) ~/.emacs_w32に、(load など書く)再起動

5) e-mailの MIMEencodeがはずれてないやつを読みこんで、M-x
mime/decode-..headersを実行すると読めるようになった。うまく動いている
ようだ。
Q:region内のcodeをきちんとインデントしてくれるコマンド
A: M-C-\ にバインドされている
Q: font設定について

Mule for Win32 附属の、README.fontset を読みましょう。 「便利に使おうMule for Windows活用入門」宮下尚・著 (カットシステム) には、会話調の非常にわかりやすいフォント設定法が載っています。

1) *scratch* バッファは、(Lisp Interaction) Modeになっているはず。 このバッファで、
(win32-query-get-logfont) と入力する。カッコも入力する。 最後のカッコ「)」の1つ後ろにカーソルを置き、Ctrl-j とすると、 Windowsのフォントダイアログが出てくる。 「フォントの種類」と、「スタイル」と、「サイズ」を選びます。「文字飾り」、「色」はここでは関係ないので別に選ばなくていいです。 フォントの種類は、等幅フォントしか選べない。スタイルは、Regularを選んでおけばいい。 すると、
("MS 明朝" 0 -15 400 0 nil nil 128 1 3 17) などの設定がでてくるはずです。これをそのまま使います。(この数値は、MS 明朝 11ポイント(96dpi)を選んだときの数値) bold体にするには、400というのを、700にするだけ。 italic体にするには、1つめの nil を t にする。(わたしは、italic体は使わないことにしてるので、nil のままにしてます)

;; 95knmfont
(win32-add-fontset "term10pt" 6 14 0 0)
(win32-add-font "default" *sjis* "term10pt")
(win32-change-font-property "default" 0
			    '("Terminal" 0 -13 400 0 nil nil 128 1 1 49)
			    "term10pt") ;normal
(win32-change-font-property "default" 1
			    '("Terminal" 0 -13 700 0 nil nil 128 1 1 49)
			    "term10pt") ;bold
(win32-change-font-property "default" 2
			    '("Terminal" 0 -13 400 0 nil nil 128 1 1 49)
			    "term10pt") ;(italic)normal
(win32-change-font-property "default" 3
			    '("Terminal" 0 -13 700 0 nil nil 128 1 1 49)
			    "term10pt") ;(italic & )bold

Q: ファイルを ドラッグ&ドロップでopenするには..
A: Mule for Win32を ver1.22にして、~/.emacsに (load "win32dropfiles") と書きこむ. 便利です.

Mule for Win32 で 95toXfontを使う
1999.3.27

ここで紹介するのは、Mule for Win32 ver1.22のフォント設定です. ver1.21でもOKです. 実は、~/.emacsを作らなくてもFixedSysは使えます. Mule for Win32は標準で FixedSysをつかうんです. でも、横幅がみょうに空いているので(斜体が欠けないためだそうですけど) 、~/.emacsにフォント設定を書きこみましょう. スクリーンショット(16KB)

;; 95toXfont
(win32-add-fontset "myfontset" 8 17 0 0)
(win32-add-font "default" *sjis* "myfontset") ;a part of the fontset

(win32-change-font-property "default" 0
			    '("FixedSys" 0 -19 400 0 nil nil 128 1 1 1)
			    "myfontset")       ;normal Logfont

(win32-change-font-property "default" 1
			    '("FixedSys" 0 -19 700 0 nil nil 128 1 1 1)
			    "myfontset")       ;bold Logfont

(win32-change-font-property "default" 2
			    '("FixedSys" 0 -19 400 0 nil nil 128 1 1 1)
			    "myfontset")       ;italic Logfont

(win32-change-font-property "default" 3
			    '("FixedSys" 0 -19 700 0 nil nil 128 1 1 1)
			    "myfontset")       ;bold&italic  Logfont

setq default-frame-alist (append (list
				   '(font . "default")
				   '(fontset . "myfontset")
				   ) default-frame-alist))

README.Muleには、「ラスターフォントでイタリック体を使うのはおすすめできない」と書いてあるのでイタリック(斜体)は使ってません.

tipsとしては、 (win32-add-fontset "myfontset" 8 17 0 0) この行の 8 というのが文字の横の大きさ、17 というのが縦の大きさです. (単位はpixel) 例えば縦に大きくすれば、行と行が空くので見やすいかもしれません. 横の大きさを大きくすれば 文字と文字のスペースが空きます.

本について

      「便利に使おうMule for Windows活用入門」宮下尚・著 カットシステム、
      初版1997/8/20, 2500yen 

      Mule for win32 v1.22をプログラムしたhimiさんが書いた本です! Mule for
      win32のカスタマイズ法、各種ライブラリの使い方など掲載。 CD-ROM
      には SKK 8.6やcmail 2.59.11やispellとかのライブラリ、windowsのUNIX
      化に役立つ cygwin32 b18, tcshなどを収録。Mule for w32はv1.21です。
      かなり役立ちました!

      最初は、Muleに付属するチュートリアルをして操作をつかみます。 M-x
      help-with-tutorial-for-mule , Japanese で始まり。 この長いコマンド
      は、打ち込む途中で[tab]を押して補完すれば 全部打ち込まずに済み
      ますけど、でも個人的には、 etc\TUTORIAL.jp のファイルを 直接みる
      ほうが早いと思うです。
      これをしただけでは たりないと思いますが、あと必要な操作は、 C-k で
      バッファを消す、C-x o で画面の各ウィンドウを移動、 C-x C-b でバッフ
      ァ・リストを出して、dで削除マークをつけて xで削除、 uでマークを解除
      する、 C-x d でdiredモードになり、f でそのフレームにファイルをopen、 
      o で別のフレームにopen、といったとこだと思います。 操作を学んだ本
      として、
                  GNU Emacs Zenith Guide for Programers
                        --- プログラマに捧げる ---
                         GNU Emacs ガイドブック
                        --- カスタマイズに挑戦! ---
                Copyright (C) 1993,1994 亀井 信義、舘野 信行
      かなりためになりました! 

1998/8/30, 9/27, 11/08, 12/16

~/.emacs の例
2000.5.07

;;; -*- mode: lisp-interaction; syntax: elisp -*-
;;;

;; keyset
(global-set-key "\C-h" 'backward-delete-char) ;C-h as BackSpace
(global-set-key "\M-?" 'help-for-help)        ;M-? as help
(global-set-key "\C-t" 'other-window)
(global-set-key "\M-w" 'kill-region)          ;M-w as cut
(global-set-key "\C-w" 'kill-ring-save)       ;C-w as copy
(global-set-key "\C-x\C-b" 'buffer-menu)

;; window-line
; move cursor just 1 line above/below
(global-set-key "\C-p" 'previous-window-line)
(global-set-key "\C-n" 'next-window-line)
(global-set-key [up] 'previous-window-line)
(global-set-key [down] 'next-window-line)
(defun next-window-line (n)
  (interactive "p")
  (let ((cur-col
         (- (current-column)
            (save-excursion (vertical-motion 0) (current-column)))))
    (vertical-motion n)
    (move-to-column (+ (current-column) cur-col))))
(defun previous-window-line (n)
  (interactive "p")
  (next-window-line (- n)))

;; insert-current-time-string
(define-key ctl-x-map "T" 'insert-current-time-string)
(defun insert-current-time-string ()
  "Inserts current time string at point."
  (interactive)
  (insert (current-time-string)))


;; backup.file~ location 
(setq backup-by-copying t)
     (fset 'make-backup-file-name
       '(lambda (file)
        (concat (expand-file-name "~/tmp/")
        (file-name-nondirectory file))
       ))


;; capitalize(abc -> ABC), lowerChar(ABC -> abc)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)


(cd "~")                            ;start on home directory
(line-number-mode t)
(setq next-line-add-newlines nil)   ;no nxt line in C-n

(load "~/.mulewin")

; end of file

~/.mulewin の例

;;; -*- mode: lisp-interaction; syntax: elisp -*-
;;; for `Mule for Win32 v1.22'

(load "win32dropfiles")

;; display time
;(setq display-time-day-and-date t)
;(setq display-time-24hr-format nil) ;24hr-format==20:00 or nil==8:00pm
;(display-time)

;; font
; 95toXfont
(win32-add-fontset "myfontset" 9 18 0 0)     ;included all of same size
(win32-add-font "default" *sjis* "myfontset") ;a part of the fontset
(win32-change-font-property "default" 0
			    '("FixedSys" 0 -19 400 0 nil nil 128 1 1 1)
			    "myfontset")               ;normal Logfont
(win32-change-font-property "default" 1
			    '("FixedSys" 0 -19 700 0 nil nil 128 1 1 1)
			    "myfontset")               ;bold Logfont
(win32-change-font-property "default" 2
			    '("FixedSys" 0 -19 400 0 nil nil 128 1 1 1)
			    "myfontset")               ;italic Logfont
(win32-change-font-property "default" 3
			    '("FixedSys" 0 -19 700 0 nil nil 128 1 1 1)
			    "myfontset")               ;bold&italic  Logfont

; Lucida console 11
(win32-add-fontset "lucida11" 9 16 0 0)
(win32-add-font "default" *sjis* "lucida11")
(win32-change-font-property "default" 0
			    '("Lucida Console" 0 -15 400 0 nil nil 0 1 3 49)
			    "lucida11")           ;normal Logfont
(win32-change-font-property "default" 1
			    '("Lucida Console" 0 -15 700 0 nil nil 0 1 3 49)
			    "lucida11")           ;bold Logfont
(win32-change-font-property "default" 2
			    '("Lucida Console" 0 -15 400 0 nil nil 0 1 3 49)
			    "lucida11")           ;italic Logfont
(win32-change-font-property "default" 3
			    '("Lucida Console" 0 -15 700 0 nil nil 0 1 3 49)
			    "lucida11")           ;bold&italic  Logfont

;; 95knmfont
(win32-add-fontset "term10pt" 6 14 0 0)
(win32-add-font "default" *sjis* "term10pt")
(win32-change-font-property "default" 0
			    '("Terminal" 0 -13 400 0 nil nil 128 1 1 49)
			    "term10pt") ;normal
(win32-change-font-property "default" 1
			    '("Terminal" 0 -13 700 0 nil nil 128 1 1 49)
			    "term10pt") ;bold
(win32-change-font-property "default" 2
			    '("Terminal" 0 -13 400 0 nil nil 128 1 1 49)
			    "term10pt") ;(italic)normal
(win32-change-font-property "default" 3
			    '("Terminal" 0 -13 700 0 nil nil 128 1 1 49)
			    "term10pt") ;(italic & )bold



(setq default-frame-alist (append (list
				   '(width . 80)
				   '(height . 34)
				   '(top . 1)
				   '(left . 1)
				   '(font . "default")
				   '(vertical-scroll-bars . nil)
				        ;'(fontset . "myfontset")
				   '(fontset . "term10pt")
					;'(cursor-type . bar)
				   '(cursor-color . "white")
					;'(cursor-color . "black")
				   '(background-color . "black")
					;'(background-color . "LightGrey")
					;'(foreground-color . "black")
				   '(foreground-color . "lightgrey")
				   ) default-frame-alist))
(set-face-background 'modeline "grey")
(set-face-foreground 'modeline "black")

;; skk 9.6
(setq load-path
      (cons (expand-file-name
	     (concat exec-directory "../site-lisp/skk"))
	    load-path))
(setq j-delete-backward-char "\C-h")
(global-set-key "\C-x\C-j" 'skk-mode)
	;(global-set-key "\C-xj" 'skk-auto-fill-mode)
	;(global-set-key "\C-xt" 'skk-tutorial)
(autoload 'skk-mode "skk" nil t)
	;(autoload 'skk-tutorial "skk-tut" nil t)
	;(autoload 'skk-check-jisyo "skk-tools" nil t)
	;(autoload 'skk-merge "skk-tools" nil t)
	;(autoload 'skk-diff "skk-tools" nil t)
	;(setq skk-tut-file "/usr/mule2/site-lisp/skk/SKK.tut")
(autoload 'skk-isearch-mode-setup "skk-isearch" nil t)
(autoload 'skk-isearch-mode-cleanup "skk-isearch" nil t)
(add-hook 'isearch-mode-hook
	  (function (lambda ()
		      (and (boundp 'skk-mode) skk-mode
			   (skk-isearch-mode-setup)))))
(add-hook 'isearch-mode-end-hook
	  (function (lambda ()
		      (and (boundp 'skk-mode) skk-mode
			   (skk-isearch-mode-cleanup)
			   (skk-set-cursor-color-properly)))))

(setq skk-large-jisyo "C:/bin/mule2/site-lisp/skk/SKK-JISYO.M")
;(setq skk-large-jisyo "/usr/mule2/site-lisp/skk/SKK-JISYO.L")
(setq skk-roma-kana-i
  '(("" . ("い" . "イ"))
    ("b" . ("び" . "ビ")) ("by" . ("びぃ" . "ビィ"))
    ("ch" . ("ち" . "チ")) ("cy" . ("ちぃ" . "チィ"))
    ("d" . ("でぃ" . "ディ")) ("dh" . ("でぃ" . "ディ"))
    ("dy" . ("でぃ" . "ディ"))
    ("f" . ("ふぃ" . "フィ")) ("fy" . ("ふぃ" . "フィ"))
    ("g" . ("ぎ" . "ギ")) ("gy" . ("ぎぃ" . "ギィ"))
    ("h" . ("ひ" . "ヒ")) ("hy" . ("ひぃ" . "ヒィ"))
    ("j" . ("じ" . "ジ")) ("jy" . ("じぃ" . "ジィ"))
    ("k" . ("き" . "キ")) ("ky" . ("きぃ" . "キィ"))
    ("m" . ("み" . "ミ")) ("my" . ("みぃ" . "ミィ"))
    ("n" . ("に" . "ニ")) ("ny" . ("にぃ" . "ニィ"))
    ("p" . ("ぴ" . "ピ")) ("py" . ("ぴぃ" . "ピィ"))
    ("r" . ("り" . "リ")) ("ry" . ("りぃ" . "リィ"))
    ("s" . ("し" . "シ")) ("sh" . ("し" . "シ"))
    ("sy" . ("しぃ" . "シィ"))
    ("t" . ("てぃ" . "ティ")) ("th" . ("てぃ" . "ティ"))
    ("ty" . ("ちぃ" . "チィ"))
    ("v" . ("う゛ぃ" . "ヴィ")) ("w" . ("うぃ" . "ウィ"))
    ("x" . ("ぃ" . "ィ")) ("xw" . ("ゐ" . "ヰ"))
    ("z" . ("じ" . "ジ")) ("zy" . ("じぃ" . "ジィ"))))
(setq skk-rom-kana-rule-list
      '(("nn" nil ("ン" . "ん"))   ;;defalut
	("n'" nil ("ン" . "ん"))   ;;defalut
	("oh" "h" ("" . "")) ))    ;;hohhohho  ==> ほっほっほ(not ほおほおほ)
(setq skk-input-vector
  [nil  nil  nil  nil  nil  nil  nil  nil  ;7
   nil  nil  nil  nil  nil  nil  nil  nil  ;15
   nil  nil  nil  nil  nil  nil  nil  nil  ;23
   nil  nil  nil  nil  nil  nil  nil  nil  ;31
   nil  nil  nil  nil  nil  nil  nil  nil  ;39
   nil  nil  nil  nil  "、" "ー" "。" nil  ;47
   nil  nil  nil  nil  nil  nil  nil  nil  ;55
   nil  nil  nil  nil  nil  nil  nil  nil  ;63
   nil  nil  nil  nil  nil  nil  nil  nil  ;71
   nil  nil  nil  nil  nil  nil  nil  nil  ;79
   nil  nil  nil  nil  nil  nil  nil  nil  ;87
   nil  nil  nil  "「" nil  "」" nil  nil  ;95
   nil  nil  nil  nil  nil  nil  nil  nil  ;103
   nil  nil  nil  nil  nil  nil  nil  nil  ;111
   nil  nil  nil  nil  nil  nil  nil  nil  ;119
   nil  nil  nil  nil  nil  nil  nil  nil] ;127
)                                  ;; "!" ":" ";" "?"を全角文字にしない
(setq skk-henkan-okuri-strictly t) ;;\"▽おお*く\" 変換で\"大く\" を出力しない
;(skk-undo-kakutei "\C-")   ;;いったん確定した'高校'を選択しなおす
(setq skk-auto-okuri-process t)  ;;\"▽あつかう\"で、送り仮名つけた"扱う"を出力


;; skk color (document is in skk-e19.el)
;(skk-make-face 'white/black) ;; 変換途中
(setq skk-henkan-face 'white/black) ;; 変換途中
;(setq skk-kana-cursor-color "blue") ;; かな
;(setq skk-katakana-cursor-color "darkgreen") ;;カナ
;(setq skk-ascii-cursor-color "gray") ;;ascii



;;; cpp-mode
;; putting -*- cpp -*- on the first two lines, automatically
;; this mode is derived from linux-c-mode
(defun cpp-mode ()
  "C mode with K&R-style and tab-width 8"
  (interactive)
  (c++-mode)
  (setq c-indent-level 8)
  (setq c-brace-imaginary-offset 0)
  (setq c-brace-offset -8)
  (setq c-argdecl-indent 8)
  (setq c-label-offset -8)
  (setq c-continued-statement-offset 8)
;  (setq indent-tabs-mode nil) ; linux-c-mode
  (setq indent-tabs-mode t)
  (setq tab-width 8))
	;(setq auto-mode-alist

	;	    auto-mode-alist))
(setq auto-mode-alist (append (list
			       '("\\.c\\'" . cpp-mode)
			       '("\\.cpp\\'" . cpp-mode)
			       '("\\.h\\'" . cpp-mode)
			       '("\\.pl\\'" . perl-mode))
			      auto-mode-alist))

;;; highlight
(cond (window-system
      (setq hilit-mode-enable-list  '(not text-mode)
	    hilit-background-mode   'dark  ;light
	    hilit-inhibit-hooks     nil
	    hilit-inhibit-rebinding nil)
      (require 'hilit19)
))

;;; calender / diary _ ja
(setq load-path
      (cons (expand-file-name
	     (concat exec-directory "../site-lisp"))
	    load-path))
(setq calendar-load-hook
'(lambda nil
   (load "japanese-holidays" t)
   (setq calendar-holidays japanese-holidays)
   ))


;;; lookup
(setq load-path
      (cons (expand-file-name
	     (concat exec-directory "../site-lisp/lookup"))
	    load-path))
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)
(define-key ctl-x-map "l" 'lookup)              ; C-x l - lookup
(define-key ctl-x-map "y" 'lookup-region)       ; C-x y - lookup-region
(define-key ctl-x-map "\C-y" 'lookup-pattern)   ; C-x C-y - lookup-pattern
(define-key global-map "\C-ce" 'lookup-pattern)
(setq lookup-search-agents
           '((ndeb "d:/dic/chujiten" :appendix "d:/dic/appendix/chujiten")
             (ndeb "d:/dic/daijirin" :appendix "d:/dic/appendix/daijirin")
))
(setq lookup-default-dictionary-options
      '((:stemmer .  stem-english)))




;;; Mew Easy Settings (generated automatically)
(if (file-exists-p
     (concat exec-directory "../site-lisp/mew"))
    (setq load-path		; Mule for Windows and site-lisp exists
	  (cons (expand-file-name (concat exec-directory "../site-lisp/mew"))
		load-path))
  (setq load-path		; Mule for Windows and site-lisp do not exist
	(cons (expand-file-name (concat exec-directory "../lisp")) load-path)))

(setq mew-mail-address "nomail@xxx.com")
(setq mew-mail-domain-list '("xxx.com"))

(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
(autoload 'mew-user-agent-compose "mew" nil t)
(if (boundp 'mail-user-agent)
    (setq mail-user-agent 'mew-user-agent))
(if (fboundp 'define-mail-user-agent)
    (define-mail-user-agent
      'mew-user-agent
      'mew-user-agent-compose
      'mew-draft-send-letter
      'mew-draft-kill
      'mew-send-hook))

;(setq mew-cc nil)
(setq mew-fcc "+Backup")

;; modify Cc:
;(setq mew-replyto-to-list '("Reply-To:"))
;(setq mew-replyto-cc-list '("To:" "Apparently-To:"))

(setq mew-from "Norton Sensei <nomail@xxx.com>")

;; offline mode
;(setq mew-auto-get nil)
(setq mew-auto-get t)
;(setq mew-auto-flush-queue t)


;; caesar decryption
;(add-hook 'mew-init-hook (lambda () (require 'mew-caesar)))

;; virtual threading
;(eval-after-load "mew" '(require 'mew-virtual-thread))

;; colorful highlighting
;(eval-after-load "mew" '(require 'mew-cite-color))

;; Another Mew search method, powered by Namazu.
;(eval-after-load "mew" '(require 'mew-nmz))
;(setq mew-nmz-use-backslash t) ; for Win32 environment

;; browse-url
;(require 'mew-browse)
;(define-key global-map [S-mouse-2] 'browse-url-at-mouse)

;; illegal subject (CAUTION : This behavior is OUT OF RFC SPECIFICATION!)
(setq mew-decode-quoted t)

;; fake CDP: (CAUTION: This behavior is OUT OF RFC SPECIFICATION!)
;;(eval-after-load "mew" '(load "mew-fake-cdp"))

;; password caching
;(setq mew-use-cached-passwd t) ; imget's password
;(setq mew-use-pgp-cached-passphrase t) ; PGP/GPG's passphrase
;(setq mew-passwd-timer-unit 100) ; timer-unit x lifetime
;(setq mew-passwd-lifetime 200)    ;    = interval(sec) of flushing cache.


;; end of file


itouh