3. 基本設定
3.1 環境変数の設定
Windows 95/98/ME の場合
set HOME=c:\home #ホームディレクトリの指定
#ドライブレターが必要
set SHELL=bash #シェルの指定
set PATH=c:\usr\local\meadow\1.15\bin;%PATH% #パスの追加
set TZ=JST-9 #タイムゾーンの設定
set TMP=c:\tmp #テンポラリディレクトリの指定
#ディレクトリがなければ別途作成
set EMACS=meadow95 #ライブラリの導入を容易にするため
Windows NT/2000/XP の場合
3.2 最小限の設定
Meadow のカスタマイズは、 初期設定ファイル ~/.emacs で行います。~ はホームディレクトリを意味し、 環境変数 HOME で指定します。 上記 autoexec.bat の設定では、c:\home という値に設定してますが、 実際には、 C:\home\miyoshi のように、ユーザごとに専用のディレクトリを作成して、 ホームディレクトリとしたほうがよいと思います。 .emacs では、様々な設定を Emacs Lisp という言語で記述します。
この .emacs の設定が最も大切なのですが、 私の .emacs は人様に公開できるものではありませんので、 先人の方々の設定を参考にしてください。
とはいっても、何も書かないのはあんまりなので、 日本語のテキストファイルを取り扱うのに必要最小限の設定を下記に紹介します。 ";"から行末まではコメントを意味します。設定後、Meadow を立ち上げると、 通常の Windows アプリケーションと同様に Alt-漢字(または M-\) で日本語入力モードになります。
;;; ;;; 日本語環境の設定 ;;; (set-language-environment "Japanese") ;;; ;;; IMEの設定 ;;; (mw32-ime-initialize) (setq default-input-method "MW32-IME")
注意事項
(1) coding-systemの設定
coding-sysytem は、特に必要がない限り、 Meadow のデフォルトの設定から変更しないようにしましょう。 coding-sysytem のことをよく理解しないで、変な設定をしてしまうと、 トラブルの原因となります。
なお、Meadow 1.15 の場合、上記のように設定するだけで、 次の設定が自動的になされます。
(set-clipboard-coding-system 'japanese-shift-jis-dos)
(set-w32-system-coding-system 'japanese-shift-jis-dos)
(setq default-file-name-coding-system 'japanese-shift-jis)
(set-default-coding-systems 'japanese-shift-jis-dos)
;; 以下は set-default-coding-systems で設定される
(setq-default buffer-file-coding-system 'japanese-shift-jis-dos)
(setq default-file-name-coding-system 'japanese-shift-jis-dos)
(setq default-terminal-coding-system 'japanese-shift-jis-dos)
(setq default-keyboard-coding-system 'japanese-shift-jis-dos)
(setq default-process-coding-system
'(japanese-shift-jis-dos. japanese-shift-jis-dos))
(2) "."で始まるファイル名の設定
> ren dot.emacs.ja .emacs
3.3 フォントの設定
(a) 概要
*) オブジェクト指向のソフトウェア開発におけるオブジェクトの意味。lisp で実装されているのでオブジェクトの要件を満たさないかもしれませんが、 設計上の話と考えて下さい。

図1 フォント設定関係のクラス図
フレーム
フォントセット
フォント
論理フォント
(b) 設定手順
手順は次のようになります。
- w32-add-font でフォントを作成する。
- 作成したフォントに対して、w32-change-font-logfont で論理フォント
を指定する。論理フォントを指定方法は次のとおり。詳しくは、
README.Meadow[.ja] を参照してください。
- Windows フォント:(w32-query-get-logfont) を評価する と出てくるダイアログボックスの結果のリスト。
- BDF フォント:'(bdf "font ファイルをフルパスで指定") というリスト。
- 利用したいフォントに応じて、1, 2を繰り返す。
- new-fontset でフォントセットを作成する。
- default-frame-alist に利用するフォントセットを指定する。
次に、具体的な設定例を示します。ここでは、ascii 文字集合を表示するために、 Windows フォント(Courier New)を使用して、 フォントとフォントセットを作成しています。
;; w32-ascii という名のフォントの作成
(w32-add-font "w32-ascii"
'((encoding-type . 0) ; コーディング方式
(overhang . 0) ; オーバーハング(傾き)
(base . 12) ; ベース
(height . 16) ; 高さ
(width . 8))) ; 幅
;; 論理フォントの指定(ノーマル)
(w32-change-font-logfont
"w32-ascii" 0 '(w32-logfont "Courier New" 0 -13 400 0 nil nil nil 0 1 3 49))
;; 論理フォントの指定(ボールド)
(w32-change-font-logfont
"w32-ascii" 1 '(w32-logfont "Courier New" 0 -13 700 0 nil nil nil 0 1 3 49))
;; 論理フォントの指定(イタリック)
(w32-change-font-logfont
"w32-ascii" 2 '(w32-logfont "Courier New" 0 -13 400 0 t nil nil 0 1 3 49))
;; 論理フォントの指定(ボールド・イタリック)
(w32-change-font-logfont
"w32-ascii" 3 '(w32-logfont "Courier New" 0 -13 700 0 t nil nil 0 1 3 49))
;; フォントセットの作成
;; ascii 文字集合を w32-ascii というフォントで表示する
(new-fontset "private-fontset" '((ascii . "w32-ascii")))
;; 利用するフォントセットの指定
(setq default-frame-alist
(cons '(font . "private-fontset") ; フォントセットの指定
default-frame-alist))
(c) 設定例
次に、私の設定例を紹介します。 Windows フォントを使って表示間隔が16ドットの standard-fontset と、 14 ドットの small-fontset、さらに、 フォント自体の大きさが16ドットの BDF フォントを使って bdf-fontset を定義しています。これらの中からデフォルトのフォントセット として16ドットの Windows フォントを選択しています。 いずれのフォントセットの場合も、 個人的な趣味で X-Face のインライン表示などに利用する bitmap フォント(BDF フォントの一種、bitmap-mule に付属する) も使うように設定しています。BDF フォントは例えば、GNU の ftp サーバ などから入手してください。ここでは、C:/usr/local/meadow にインストールされているものとして設定しています。 なお、BDF フォントが存在しない場合は、設定をスキップするようにしています。
設定を簡単にするために自前で関数を定義して使っているのですが、 かえって複雑になっているかもしれません。参考程度にとどめておいてください。
この設定を使用するにあたっては、赤字 のファイル名・ディレクトリ名の部分を、 お使いの環境に合わせて変更してください。絶対パス、 または"~"(ホームディレクトリ)を使って指定できます また、青字の部分も、 環境に合わせて変更してください。"std-fontset", "small-fontset", "bdf-fontset" の中から好きなフォントセットを指定できます。
;; フォント設定用の補助関数
(defun my-define-font (prefix font-param logfont-charset-list)
(let (charset-font-list logfont-list charset-alist)
(while logfont-charset-list
(setq logfont-list (nth 0 (car logfont-charset-list)))
(setq charset-alist (nth 1 (car logfont-charset-list)))
(while charset-alist
(let* ((charset (caar charset-alist))
(encoding (cdar charset-alist))
(font-name (concat prefix (symbol-name charset))))
(create-font-from-logfont-list font-name
logfont-list encoding font-param)
(setq charset-font-list
(cons (cons charset font-name) charset-font-list)))
(setq charset-alist (cdr charset-alist)))
(setq logfont-charset-list (cdr logfont-charset-list)))
charset-font-list))
(let ((bdf-dir "c:/usr/local/Meadow/intlfonts-1.1/")
charset-font-list logfont-charset-list font-param)
;; 標準フォントの設定
;; フォント表示用のパラメタ
(setq font-param
'((overhang . 0)
(base . 12)
(height . 16)
(width . 8)))
;; 論理フォントと、対応する文字集合のリスト
(setq logfont-charset-list
'(
;; 英字フォント
(
;; 論理フォントのリスト(normal, bold, italic, bold + italic の順)
((w32-logfont "Courier New" 0 -14 400 0 nil nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -14 700 0 nil nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -14 400 0 t nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -14 700 0 t nil nil 0 1 3 49))
;; 文字集合と、フォントのコーディング方法の連想リスト
((ascii . 0)
(latin-iso8859-1 . 1)))
;; 日本語フォント
(((w32-logfont "MS ゴシック" 0 -14 400 0 nil nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -14 700 0 nil nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -14 400 0 t nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -14 700 0 t nil nil 128 1 3 49))
((latin-jisx0201 . 0)
(katakana-jisx0201 . 4)
(japanese-jisx0208 . 4)))))
;; フォントの作成(結果は文字集合と、作成したフォントの連想リスト)
(setq charset-font-list
(my-define-font "w16-" font-param logfont-charset-list))
;; ビットマップフォントの作成(x-face, Gnus 用)
(let ((font-file (expand-file-name "Misc/etl8x16-bitmap.bdf" bdf-dir)))
(when (and (locate-library "bitmap") (file-exists-p font-file))
(require 'bitmap)
(setq logfont-charset-list
`((((bdf-font ,font-file))
((bitmap . 0)))))
(setq charset-font-list
(append (my-define-font "bdf16-" font-param logfont-charset-list)
charset-font-list))))
;; フォントセットの作成
(new-fontset "std-fontset" charset-font-list)
;; 小さめのフォントの設定
;; このサイズだと、l と 1 の区別ができないのが難点
;; また、bitmap も正しく表示されないが仕方がない
(setq font-param
'((overhang . 0)
(base . 10)
(height . 14)
(width . 7)))
(setq logfont-charset-list
'((((w32-logfont "Courier New" 0 -12 400 0 nil nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -12 700 0 nil nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -12 400 0 t nil nil 0 1 3 49)
(w32-logfont "Courier New" 0 -12 700 0 t nil nil 0 1 3 49))
((ascii . 0)
(latin-iso8859-1 . 1)))
(((w32-logfont "MS ゴシック" 0 -12 400 0 nil nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -12 700 0 nil nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -12 400 0 t nil nil 128 1 3 49)
(w32-logfont "MS ゴシック" 0 -12 700 0 t nil nil 128 1 3 49))
((latin-jisx0201 . 0)
(katakana-jisx0201 . 4)
(japanese-jisx0208 . 4)))))
(setq charset-font-list
(my-define-font "w14-" font-param logfont-charset-list))
;; 既定義のビットマップフォントを再利用する
(let ((font "bdf16-bitmap"))
(if (member font (w32-font-list))
(setq charset-font-list
(cons (cons 'bitmap font) charset-font-list))))
;; fontset の作成
(new-fontset "small-fontset" charset-font-list)
;; BDF フォントの設定
(setq bdf-dir (expand-file-name bdf-dir)) ; ファイル名の展開
(when (file-exists-p bdf-dir) ; ディレクトリの有無をチェック
(setq font-param
'((overhang . 0)
(base . 14)
(height . 16)
(width . 8)))
(setq logfont-charset-list
`((((bdf-font ,(concat bdf-dir "European/etl16-latin1.bdf"))
(bdf-font ,(concat bdf-dir "European/etl16b-latin1.bdf"))
(bdf-font ,(concat bdf-dir "European/etl16i-latin1.bdf"))
(bdf-font ,(concat bdf-dir "European/etl16bi-latin1.bdf")))
((ascii . 0)
(latin-iso8859-1 . 1)))
(((bdf-font ,(concat bdf-dir "Japanese-X/8x16rk.bdf")))
((latin-jisx0201 . 0)
(katakana-jisx0201 . 1)))
(((bdf-font ,(concat bdf-dir "Japanese-X/jiskan16.bdf")))
((japanese-jisx0208 . 0)))))
(setq charset-font-list
(my-define-font "bdf16-" font-param logfont-charset-list))
(let ((font "bdf16-bitmap"))
(if (member font (w32-font-list))
(setq charset-font-list
(cons (cons 'bitmap font) charset-font-list))))
;; fontset の作成
(new-fontset "bdf-fontset" charset-font-list)))
;; フレームの設定
;; 色を指定するときは rgb.txt で定義されている色名を使う
;; このファイルは、Meadow 1.15 の場合 C:/usr/local/Meadow/1.15/etc/ にある
(setq default-frame-alist
(append
'((foreground-color . "black") ; 前景色
(background-color . "white") ; 背景色
(border-color . "black") ; ボーダー色(Meadow では無効?)
(mouse-color . "black") ; マウス色(???)
(cursor-color . "black") ; カーソル色
(width . 80) ; フレーム幅(文字数)
(height . 43) ; フレーム高(文字数)
(top . 20) ; フレームの Y 位置(ピクセル数)
(left . 40) ; フレームの X 位置(ピクセル数)
(ime-font . "w16-japanese-jisx0208") ; IME 用のフォント
(font . "std-fontset"))
; デフォルトのフォントセット
default-frame-alist))