/ / 最新

swk's log - UNIX使いだった俺がWindowsに移行してみるよ -- Meadow (Emacs)

2012-02-14

* UNIX使いだった俺がWindowsに移行してみるよ -- Meadow (Emacs) [unix2win] 2 users

カレー作りにかまけて久しく放置していたこのシリーズ [2010-01-22-1],その間に私のメイン環境も Windows XP から 7 に変わっていたりして既報分も最早アレなのだけど,まあその辺は追々書いていくことにして,今日はテキストエディタ Emacs (の Windows 版である Meadow) の話.

私自身は,ある程度以上の長さのテキスト書き (メール含む) はほぼ常に Emacs を使っているわけですが,それを見た人から「Emacs ってそんなにいいですか?」と聞かれたり,ごく稀に「Emacs 使ってみようと思うんですけど…」とか相談されたりします.えーと,あのー,まあ,なんだ, お勧めはしません.特に必要がない限り,今さら Emacs なんて使い始める必要はないんじゃないですかね? 私はもう他のエディタを体が受け付けないので使い続けますが.


さて微妙な雰囲気になったところで,インストールのメモ.Windows 7 で Meadow 3.01 の Netinstall 版を使う.

パッケージの選択はいつも悩むところ,というか,インストールする度に前回は何を入れたか忘れていてアレなのだが,現時点では (meadow/packages/setup/installed.db によれば) 以下のものがインストールされている.あまり深く考えずにインストールしているようだ.正直 tdiary-mode とか何のために入れてるのかわからんし.JDEE 関連は,入れたらパッケージ読み込みが途中でおかしくなったので外した.まあ使わないし.フォント関係は特に何も入れていない.

apel apel-10.7-1.tar.bz2 0
css-mode css-mode-1.0-1.tar.bz2 0
flim flim-1.14.9-1.tar.bz2 0
gnuserv gnuserv-0411-1999-5.tar.bz2 0
html-helper-mode html-helper-mode-3.8-4.tar.bz2 0
imagemagick imagemagick-6.2.8-0-Q16-1.tar.bz2 0
info-ja-eintr info-ja-eintr-2.04-3.tar.bz2 0
info-ja-elisp info-ja-elisp-2.9-4.tar.bz2 0
info-ja-emacs info-ja-emacs-21.3.50-2.tar.bz2 0
ispell ispell-3.3.02-1.tar.bz2 0
japanese-holidays japanese-holidays-1.1-1.tar.bz2 0
javascript-mode javascript-mode-2.0b8-2.tar.bz2 0
Meadow Meadow-3.02-r4261-3.tar.bz2 0
mew mew-5.1-1.tar.bz2 0
migemo migemo-1.8-1.tar.bz2 0
misc misc-0.7-1.tar.bz2 0
mule-ucs mule-ucs-0.85-20050113-2.tar.bz2 0
pukiwiki-mode pukiwiki-mode-2.30-1.tar.bz2 0
ruby-mode ruby-mode-23606-1.tar.bz2 0
semi semi-1.14.6-4.tar.bz2 0
tdiary-mode tdiary-mode-20050831-1.tar.bz2 0
yaml-mode yaml-mode-0.3-1.tar.bz2 0

コントロールパネル-システム で設定している環境変数は

TZ    	JST-9
GNUCLIENT     -F
GNUCLIENTW    -F
HOME  	C:\cygwin\home\swk

TZ がないと,とりあえず目に見えるところでは,Mew で送ったメールのタイムゾーンがおかしくなるようだ.

GNUCLIENT(W) の -F は,gnuclient(w) コマンドでファイルを開いたときに Emacs のウィンドウを前面に出すオプション,のはずだが,どうも効いてないような.


各種設定は .emacs ファイルに書くわけだが,UNIX 中心で Emacs を使っていた頃から .emacs は肥大化しまくっていて,何が必要で何が不要なのかさっぱりわからない状況になっていた.これを機にざっくり整理してみた.

.emacs.meadow [この記事の公開時の版] [最新版] (これを .emacs の中から load している)

以下大雑把にメモ.見出しは .emacs.meadow 内のコメントに対応している. (見出しからのリンクは,この記事の公開時のファイルの該当箇所を指している)

;; MULE-UCS; must be put before set-language-environment

UTF-8 なファイルが扱えないと仕事にならない昨今,mule-ucs はどうしても必要.コメントに書いてある通り, set-language-environment する前に jisx0213 を読み込まないといけないという罠がある.

;; ime

文字化けして見えるかもしれない行は

(setq mw32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))

と書いてある.基本的には Meadow に標準でついてくる設定ファイルの通りだけど,

(add-hook 'mw32-ime-on-hook '(lambda () (set-cursor-color "green")))
(add-hook 'mw32-ime-off-hook '(lambda () (set-cursor-color "black")))

として IME の状態によってカーソルの色を変えている.それから,y/n とか yes/no と聞かれたときに IME がオンになっているとイラッとするので,

(wrap-function-to-control-ime 'y-or-n-p nil nil)
(wrap-function-to-control-ime 'yes-or-no-p nil nil)

を入れている.その直後で IME の オン/オフ を C-o にバインドしているが,これは canna を使っていた頃の名残り.あ,というか FreeBSD では今も canna 使っているので名残りというのはおかしいのだが.

その後はしばらく標準の設定項目が続く.よく理解していないものも多い.

;; printing: use ps-print-{buffer,region}[-with-faces]

Windows の文化では驚くべきことかも知れないが,Meadow は標準のままで自前でテキストファイルを印刷することができない(はず).なので,他のテキストエディタ (notepad とか) にファイルを渡して印刷させたりということがよく行われるが,残念な感じが漂い過ぎなので何とかしたい.

一方で,Meadow は Emacs であって UNIX 文化で育ってきたソフトウェアなので,PostScript として出力して印刷するのはお手の物,というかそうするのが正しいと考えて作られているフシがある.おとなしくそれに従うのがよかろう.PostScript プリンタ以外に出力するためには gs (GhostScript) を使えばよい.というわけで gsview32 に渡すように設定している.印刷するときはコメントにあるように

M-x ps-print-buffer
M-x ps-print-buffer-with-faces
M-x ps-print-region
M-x ps-print-region-with-faces

のいずれかを実行する.-with-faces があると色つきになる.

行番号の有無とかヘッダの有無とか,いろいろ切り替えられるようにしようかと思ったこともあるけど,現状でそれほど困らないのでずっと後回しにしたままである.

;;printing in mew: use mew-summary-print (# key)

メールの読み書きにはずっと Mew を使っています.Mew の設定は基本的に.mew.el という別ファイルに分かれていて,その設定についてはまた改めて書こうと思うが,とりあえずここで印刷用の設定だけをしている.要はヘッダをつけて ps-print-buffer-with-faces を呼んでいるだけ.

なぜこれが .mew.el じゃなくて .emacs に入っているのかというと,たぶんこれが Meadow/Windows 依存なので .mew.el からは分離したいと,この設定を書いた当時の私が考えたからだと思う.実は .emacs も Meadow 依存のファイルとそれ以外の共通設定ファイルに分かれていたのだが,だんだん面倒くさくなってまとめてしまって今に至る.

;; imaxima

Maxima,ときどき使います.標準の端末ではどうにも使いにくいし wxWidget のインタフェースも好きじゃないので,結局 Emacs で使うことに. imaxima は表示も見やすくてよい.

;; basic preferences

なぜこんな中途半端なところから「基本設定」が始まるのかというと,昔はここから (Windows に依存しない) 共通設定ファイルが始まってたからですな.今はもうグダグダになってますが.

比較的最近 (といってもここ数年) になって使い始めたものとしては:

(show-paren-mode nil)

括弧の対応を表示.これってどうして nil なんだっけ,と思って今調べたら,デフォルトでオフなのを toggle してオンにすることになるらしい. nil の代わりに正の数にすれば,もとの状態に関わらずオンにするようだ.そのうち直す.

(define-key minibuffer-local-completion-map "\C-w" 'backward-kill-word)

ミニバッファで C-w を打つとカーソル前の文字をワード単位で消してくれる.C-x C-f したときに長いディレクトリ名を編集する場合などに便利.

(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)

同名のファイルを複数開いたときに「Makefile<1>」「Makefile<2>」とか表示されて,どっちがどっちだかわからなくなるのを緩和する.<> の中に1階層上のディレクトリ名が表示されるので,(ディレクトリの掘り方にもよるが) だいぶわかりやすくなる.

;; sdic

英辞郎をインストールして sdic で使ってます.辞書ファイルの変換の話とかはまたそのうち気が向いたら.

で,sdic-eiwa-dictionary-list とか sdic-waei-dictionary-list を設定するところでディレクトリ名を何度も繰り返し書いているのがダサい,というかパス名が Windows 依存なので嫌なのだが,これを避けようと思うと意外と面倒くさい.のでダサいまま放置.

;; shell

特筆事項なし.あまり Emacs 内でシェルを起動することはないので,まあ念のため書いてあるだけ.実際このまま M-x shell で起動するとプロンプトのエスケープシーケンスが化けまくってひどいことになるのだが,気にしてない.

;; dev env

C/C++ での開発は最近はもっぱら Visual Studio を使っているので,Emacs の出番はないかと思いきや,しっかり Visual Studio から外部エディタとして登録して使っています.

「標準のエディタにも Emacs-like なキーバインド用意されてますよ?」 うん,知ってますけど,その like というやつが曲者で,ほとんど同じという認識で使っていたら微妙なところで挙動が違ったりして却ってストレスがたまります.(xyzzy もそれが理由で使うのやめた)

「でも,IntelliSense とか超便利ですよ?」 うん,それもわかりますが,それでも Emacs じゃなきゃ体が動かないのでどうしようもないのです.年を取るというのはそういうことだ.

まあそれでも etags とかを駆使すればそれなりにシンボル名補完とか定義検索とかはできるので,そういう設定が書いてある.

(global-set-key "\C-c\C-i" 'complete-symbol)
(global-set-key "\C-cc" 'compile)
(setq compile-command "make ")

…のはいいのだが,じゃあこの make ってのは何なのか? というと,ソースコードと一緒に怪しい Makefile を用意して,make を実行することで Visual Studio のウィンドウでビルドが実行されて,さらにその出力メッセージが Emacs のバッファに出力されるみたいな頭のおかしい 小細工を (たまに) しているので,そのための設定です.そんなものに需要はないと思うので詳しくは書きませんが,万一興味がある人がいれば,まあそのうち.

(そこまでするなら nmake 使えよ,って話なのですが,そうしてしまうと研究室のメンバと本格的に話が通じなくなるので)

;; sig

sig.el なるファイルを load していて,何だそれ? って話なのですが,15 年くらい前に自分で書いた,メールのシグネチャを対話的に切り替えて挿入するコードです.人様にお見せできるコードではありません….似たような機能のパッケージはいろいろとあると思うので,スルーしてください.

;; mhc

スケジュール管理は,ここ10年くらいずっと MHC を使っています.というか,その前は紙の手帳だったので,ソフトウェアとしては MHC しか使ったことがない.細かい設定は別ファイル .mhc.el に分かれていて,これも詳しくはまたそのうち.

;; comment

comment-region が C-c > に,uncomment-region が C-c < にバインドされているのは,YaTeX を使ってた頃の名残り.

;; time

M-& で「Tue Feb 14, 2012」みたいな文字列を,C-u M-& で「2012-02-14」みたいな文字列を挿入.地味に多用している.

;; latex

上にも書いた通り,以前は YaTeX を愛用していましたが,最近はもう syntax hilight さえしてくれれば後は何でもよくなったというか,あまりお節介を焼いてくれないものの方が好みになりました.latex-mode も verbatim とか super/subscript でフォントを変えられるのは嫌いなので,その手の機能は切っている.

(add-hook 'latex-mode-hook 
          '(lambda () 
             (setq tex-verbatim-face nil) 
             (defun tex-font-lock-suscript () nil)))
関連記事:
[2010-01-22-1] UNIX使いだった俺がWindowsに移行してみるよ
[ コメントを全部見る / コメントを書く] [ TrackBack ( )] [固定リンク]

* [Andrey.volfu] узнайте цену качественной отделки коттед... (2019-02-27 16:51:16)

* [AleksandrKex] Вечером серфил материалы сети интернет, ... (2019-02-27 06:12:41)

* [Filippnom] Прошлым вечером мониторил данные инет, н... (2019-02-27 05:28:28)

* [TihonBiP] [url=https... (2019-02-27 02:12:55)

* [Timofeycaupe] Минут десять серфил данные сети интернет... (2019-02-26 01:28:57)

* ...

最終更新時間: 2012-02-25 18:37


Shingo W. Kagami - swk(at)kagami.org