Meadow in a bottle


「emacsは、環境である。」のだそうです。そういうことであれば、環境まるごと瓶詰めにして持ち歩けるようにしてしまいましょう。
何をするかといえば、USBフラッシュメモリに、Meadowを入れて、世界標準の、いまどきどこにでもころがっている、Windowsのパソコンに、挿せばそこからEmacs環境が使えるようにする。というものです。さほど難しい話ではなさそうなので、挑戦してみることにしました。

何がおもしろいかって

  • 軽い、小さい。
  • 高機能
  • フォントも入れればSKKで、海外出張もOK多分(どなたかか検証を・・)。


  • 例えば
  • サーバー機や監視端末。アプリケーションをインストールするのは、ちょっとためらってしまう。
  • 管理者からアプリケーションのインストールは禁止されている端末なのだけれど。
  • 嫁さんに内緒のメールアカウント所持。
  • ボスが後ろの席にいなければ、即2ちゃんねらーに変身。(カンケーないか。)

  • というわけで、やってみましょう。・・とはいっても、多分Meadowは、このような使い方ははなから想定はしていないと思うので、試行錯誤の途中なのですが。

    用意するもの

    Windowsのパソコン。9X系はUSBフラッシュメモリを挿すと動作が不安定になるようなので、Wiondows2000環境で、作業してみます。私の環境では、9X系はちょっと使い物にならないかな、という感じです。

    USBフラッシュメモリ。LexarのJumpDriveという瓶を使ってみました。容量128mlです。素のMeadowが、50ml程度ですから、これ以下の容量だと、テトリスを削除するとか、お好みに応じた軽量化が必要になってくるかもしれません。 さらにUSB2.0対応、大容量な新しい製品ならなおのことよさそうですが、もう少し価格が下がってくるのを待ってみます。ちなみに、Lexarのサイトのオンラインショップでは、JumpDrive2.0pro(256ml入り)が\15800だそうです。シーバスのインペリアルでも買ったほうが良さそうな感じです。

    Meadew 現在の安定バージョンは、1.15。これを使用します。素のEmacsだけで、50mlほどあります。Emacs21ベースのバージョンでは、いずれ画像の表示まで可能となるような感じで、ますます期待度大です。

    作り方

    まず、パソコンにMewdowをダウンロードします。解凍やらなにやら面倒なので、NetInstallで、お好みのパッケージごと引っ張ってきます。大容量のメモリがあれば、パッケージすべてを引っ張ってくればよいのでしょうが、100mlを超えるサイズになりそうです。私は、Mewとnavi2chだけを選択しました。
    ダウンロードと、解凍が済み、install.exeの実行をきかれますが、これはスキップします。ローカルの固定ディスクにインストールするわけではないので。かわりにmeadow.exeのあるデイレクトリのdumpNT.exeを実行します。 ここで仮にmeadowが C:\Meadow以下にあるとして、Meadow\site-lisp以下のmewとnavi2chのフォルダを、Meadow\1.15\site-lispに移動します。現状、EMACSLOADPATHの通し方がよくわかっていないので、この方法でしのぐこととします。また、お好みでBDFフォントをMeadow\1.15\fonts以下に置いておきます。BDFフォントは好みの1.1を置いてみました。

    USBフラッシュメモリを挿して、Meadow以下のフォルダを丸ごと、コピーします。

    さて、通常のMeadowの使い方としては、環境変数"HOME"をあらかじめ設定しておいて、そこから.emacsを読み込ませる、というのが、起動の流れです。が、ここでは、あくまで、Emacsの環境を瓶詰めして、例えば、ウズベキスタンの量販店(あるか!!)の店頭のパソコンにメモリを挿して、Mewで、メールチェック、なんていうのを想定しているため、面倒な設定なしで、クリック一発で、起動させたいものです。 起動のためのバッチファイル(meadowinab.bat)を以下のような内容で作り、meadow.exeのあるディレクトリに起きます。

    set HOME=.
    set PATH=.
    meadow.exe

    1行目で、実行ファイルのあるディレクトリをHOMEに。2行目で、カレントディレクトリにパスを通して、3行目で、実行です。パスをカレントディレクトリに通さないと、そこにあるmewencode.exeなどが、使用できません。navi2chのための、gzip.exeなどもここに置きます。

    不特定多数のパソコンのUSBポートの利用を想定しているため、ドライブレターから始まる絶対パスは使用できないので環境変数HOMEを相対パスでカレントディレクトリを指定しています。
    このバッチファイルですと、binディレクトリ以下に、様々な設定ファイルを置かなくてはならず、改善してゆきたい部分ではありますが、とりあえず、このディレクトリに作業用のディレクトリを作り、次の.emacsに、起動時に作業ディレクトリに移動する設定をしています。

    このバッチファイルから起動すると、Meadowは、自身の実行ファイルのあるディレクトリから.emacsファイルを読み込もうとします。

    またまた、コピペ継ぎはぎの.emacsファイルを貼り付けてみましょう。

    ;; 日本語環境設定
    (set-language-environment "Japanese")


    ;;; IMEの設定
    (mw32-ime-initialize)
    (setq default-input-method "MW32-IME")
    (setq-default mw32-ime-mode-line-state-indicator "[--]")
    (setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
    (add-hook 'mw32-ime-on-hook
    (function (lambda () (set-cursor-height 2))))
    (add-hook 'mw32-ime-off-hook
    (function (lambda () (set-cursor-height 4))))


    ;; ;;; カーソルの設定
    (set-cursor-type 'box) ; Meadow-1.10互換 (SKK等で色が変る設定)
    ;; ;; (set-cursor-type 'hairline-caret) ; 縦棒キャレット


    ;;; マウスカーソルを消す設定
    (setq w32-hide-mouse-on-key t)
    (setq w32-hide-mouse-timeout 5000)


    ;;; font-lockの設定
    (if window-system
    (progn
    (setq font-lock-support-mode 'lazy-lock-mode)
    (global-font-lock-mode t)))

    (w32-auto-regist-bdf-font
    "bdf16-latin-iso8859-1" "../fonts/bdf1.1/European/etl16-latin1.bdf" 1)
    (w32-auto-regist-bdf-font
    "bdf16-latin-iso8859-2" "../fonts/bdf1.1/European/etl16-latin2.bdf" 1)
    (w32-auto-regist-bdf-font
    "bdf16-latin-iso8859-3" "../fonts/bdf1.1/European/etl16-latin3.bdf" 1)
    (w32-auto-regist-bdf-font
    "bdf16-latin-iso8859-4" "../fonts/bdf1.1/European/etl16-latin4.bdf" 1)
    (w32-auto-regist-bdf-font
    "bdf16-japanese-jisx0212" "../fonts/bdf1.1/Japanese/jisksp16.bdf" 0)
    (w32-auto-regist-bdf-font
    "bdf16-japanese-jisx0208" "../fonts/bdf1.1/Japanese-X/jiskan16.bdf" 0)
    (w32-auto-regist-bdf-font
    "bdf16-latin-jisx0201" "../fonts/bdf1.1/Japanese-X/8x16rk.bdf" 0)
    (w32-auto-regist-bdf-font
    "bdf16-katakana-jisx0201" "../fonts/bdf1.1/Japanese-X/8x16rk.bdf" 1)

    (new-fontset "intlfonts"
    '((ascii . "bdf16-katakana-jisx0201")
    (latin-iso8859-1 . "bdf16-latin-iso8859-1")
    (latin-iso8859-2 . "bdf16-latin-iso8859-2")
    (latin-iso8859-3 . "bdf16-latin-iso8859-3")
    (latin-iso8859-4 . "bdf16-latin-iso8859-4")
    (japanese-jisx0212 . "bdf16-japanese-jisx0212")
    (japanese-jisx0208 . "bdf16-japanese-jisx0208")
    (latin-jisx0201 . "bdf16-latin-jisx0201")
    (katakana-jisx0201 . "bdf16-katakana-jisx0201")))


    (setq default-frame-alist
    '((foreground-color . "#000000")
    (background-color . "#ffffff")
    (cursor-color . "#000000")
    (top . 2 )
    (left . 60)
    (width . 80)
    (height . 30)
    (font . "intlfonts")))
    (set-face-foreground 'modeline "#ffffff")
    (set-face-background 'modeline "#000000")


    ;;; argument-editing の設定
    (require 'mw32script)
    (mw32script-init)
     

    (autoload 'mew "mew" nil t)
    (autoload 'mew-send "mew" nil t)
     

    (require 'navi2ch)

    (cd "~/dah") ;;bin以下に適当なディレクトリを作り、作業場とする。

    と、まあ、BDFフォントのパスを相対パスにして、とりあえず、Emacsの瓶詰めの試作品は問題をいくつか抱えながらも、なんとか動くレベルにはなりました。

    Navi2chの設定

    navi2chには、gzip.exeが必要です。起動バッチファイルでパスを通したディレクトリに、ここからgzip.exeの自己解凍ファイルを落として解凍後、コピーしておくと良いでしょう。(gzip.exeを使用しない設定も可能なのですが・・・。)リンク先のページの中ほどにある Exectable の下にwindows用のバイナリの圧縮ファイルへのリンクがあります。


    2004.04.24 少しだけ修正
    2003.06.27 navi2chのためのgzipに関する部分を追記。
    2003.06.26 起動用バッチファイルを書き換え。ディレクトリにパスを通す。(Mewでマルチパートのメールのエンコードが可能に。)
    2003.06.16 Mewの設定。サーバーがローカルにあるかないか、の部分を根本的な解決ではないが、自分的には解決。Meadow2がベータになった模様。
    2003.06.14 yagiさんご指摘のバッチファイルの修正。ついでにこのページをハーボットのねんねのご飯にくれてやる。
    2003.06.12 起動用のバッチファイルを大幅に修正。Meadowについて語ってなスレ2 916さん他の皆さんに感謝
    2003.06.10

    Copyright (C) 2000-2004 dah All rights reserved.