■リージョンを右方向にシフトする
■ファイルをグラフィカルに比較・マージする
■テンプレート付きの日付自動入力
■インクリメンタルサーチ(I-search)関連
■現在行を分かりやすく
■起動時に.emacs以外のファイルを読み込んで開始する
■emacs20ベース(UNIX)の.emacs
■指定ディレクトリ以下の複数の拡張子を持つファイルに対してサブディレクトリまでgrepする
■TAGSファイルによるソース解析
■日本語manを見る
■Wanderlust
■関連ツール
■ifdefブロックをジャンプする
■OR検索
■M-x grep で日本語入力
■CVSでバージョン管理
■文字の表示色を変更
■mcompleteの表示色を変更
■diredで拡張子ソート
■ftp上のファイルを直接編集する
■邪魔な条件コンパイルを見えなくする
■私の.emacs
■リージョンを右方向にシフトする
- まず、普通にリージョンを選択します。
- 次に、C-x r t、と入力
- ミニバッファにスペースなり、タブコードなりを入力
ちなみに、私の設定だと、タブコードは、M-i、です。
- C-x r o : 矩形領域だけスペースを確保する (open-rectangle)
- C-x r c : 矩形領域を消去する.スペースは確保. (clear-rectangle)
- C-x r d : 矩形領域を消去する.スペースも消す. (delete-rectangle)
- C-x r t : 矩形領域を文字で置き変える (string-rectangle)
■ファイルをグラフィカルに比較・マージする
Meadowなら、ファイルをグラフィカルに比較・マージするのも簡単です。
但し、動作には、Cygwinに含まれるdiffコマンドが必要になりますので、予めインストールしておいてください。
勿論、プレーンなUNIX環境でEmacsをお使いの場合は、そのままで使用できます。(diffが入ってないなんて事は、まずないでしょう。)
準備ができたら、以下のようにします。
- ファイルを比較する
M-x ediff-files
一つ目のファイル名を入力
二つ目のファイル名を入力
で、nで次の相違位置、pで前の相違位置に移動できます。終了は、qです。 - ファイルをマージする
M-x emerge-files
相違位置の移動はediffと同じです。
aを押すとbufferAの内容が、Bを押すとbufferBの内容が、Mergeバッファに挿入されます。
終了はqで、MergeバッファをリネームすることでMerge完了です。
また、ediffに関してのみですが、三つのファイルを比較できます。ediff-buffers3,ediff-files3というコマンドがコレです。
複数人で開発作業を行っていると、ひとつのソースを3人で編集していることもあるでしょうから、何かと役に立ちます。
あと、若干の設定をすると便利なのですが、標準だと、emergeのウィンドウが別フレームで起動してしまうため、使いにくいと思います。そこで、以下の設定を追加しておくと、同じフレームにコマンド受付入力部が表示されるので、使いやすくなります。また、ついでに、現在のバッファと次のバッファを比較するcompare-bufferコマンドの設定も載せておきます。必要に応じて変更してください。
余談ですが、管理者の人って、開発の現場を理想的な形でしか理解していないので(というか、現場の経験がない場合が多い)、こういうこと(複数人で同じソースを編集すること-多くても二人とか、と考えているようですが実際はそうはいかない場合が多い)を想定していないケースが多いんですね。で、結局は、しわ寄せが全部開発者の負担になっちゃうんですね。
結局は、手動マージが多発するワケで、中途半端なソースコードバージョン管理ツールを導入するなら、一般でよく使われているCVSやRCS(ロック式なので個人的には却下ですが...)を採用してくれれば、問題ないケースが殆どなんです。
せっかく、UNIXの開発環境なのに、なんで、Windowsのクライアントソフトが必要なシステム作りなんかするんでしょうかね。プログラマはコマンド入力なんてすぐに慣れるのに...
■テンプレート付きの日付自動入力
ソースコードを書いていて、変更箇所にコメントを入れるとき、マニュアル入力で
/* 04.06.06 add name */
なんて感じで入力している方が多いと思います。
この日付部分は毎日変わるものなので、自動入力は難しいと思われるかもしれませんが、emacsに装備されているlispを使えば簡単にできます。
nameのところを自分の名前に書き換えればOKです。
また、コメントにあるようにformat-time-stringを書き換えれば時間の表示形式やタイムゾーン、曜日を表示したりすることも可能ですので、お好みに合わせて設定してください。
設定方法は、M-x describe-function format-time-string
と入力すれば表示されます。
といった感じで、まさに自由自在に設定できます。
■インクリメンタルサーチ(I-search)関連
Meadow/Emacsで検索といえば、インクリメンタルサーチ(I-search)ですね。
ただ、使いこなせていない方が多いようなので、ちょっと紹介します。
- 単語単位で検索候補を入力する
検索時に文字入力を楽にするには、I-searchを使わなければ、C-yでペーストしてしまえば、よいのですが、I-searchの場合、これは、使えません。
I-searchモードに入ったら、C-wを押してみてください。単語単位で入力されます。
C-wする毎に、単語を拡張してくれます。 - 文字単位で追加、削除する
1.の方法は便利なのですが、文字単位で追加、削除ができないのが難点です。
そこで、以下の設定を追加すると、I-search中に、C-f,C-bで文字単位での追加、削除が可能になります。 - I-search中に、occur(バッファ内検索)する
まず、occurってご存知でしょうか。
これは、現在のバッファ内を検索して一覧として表示してくれるelispです。
使い出すと、便利で手放せなくなるのですが、何故か愛用者が少ないのです。
以下の設定を追加すると、I-searchで検索中の語句で、occurできます。
上の設定があると、あまり使い道がないかもしれませんが、カーソルの近くにある単語で、occurをかけるには、以下の設定を追加すればOKです。
■現在行を分かりやすく
hl-line.elを入手します。
以下の設定を.emacsに追加します。
;;; ; アンダーラインを設定 (load "hl-line") ;(setq hl-line-face 'underline) (setq hl-line-face 'bold) (hl-line-mode) (copy-face 'highlight 'my-hl-line) (set-face-background 'my-hl-line "cornsilk2") (setq hl-line-face 'my-hl-line)
経験的には、背景色に近い色を設定したほうが見やすくなります。
私の場合、lemonchiffonを指定しているので、それにあった設定になっています。
使用可能な色は、M-x list-colors-displayで確認してください。
また、M-x customize-groupとし、hl-lineを指定することで、CUIで設定することも可能です。
余談ですが、faceをアンダーラインにすると、アンダースコアが見にくくなる(文字色と同じにするとまったく見えない)ので、止めたほうがよいでしょう。
06年7月29日更新
Meadow 2.10 (ASAGAO)では仕様変更されたようで、以下のようにすればOK
(load "hl-line") (copy-face 'highlight 'my-hl-line) (set-face-background 'my-hl-line "#e0e0c0") (setq hl-line-face 'my-hl-line) (global-hl-line-mode)色は自分の環境に合わせて調節してください。
■起動時に.emacs以外のファイルを読み込んで開始する
以下のように起動すればOKです。
emacs -q -l file
fileに起動時に読み込みたいファイルを指定するだけです。
■emacs20ベース(UNIX)の.emacs
.emacsです。.emacsにリネームしてお使いください。
標準で用意されているLISPのみを使用していますので、UNIXでEmacsを利用されている方には便利にお使いいただけるかと思います。
なお、起動時の配置位置や背景色はコメントにしていますので、お気に召すようであればコメントアウトしてお使いください。
各機能についてはコメントしてあるので分かると思います。
ちなみに常用している.emacsは、標準以外のLISPを多数利用している関係で3倍以上になっています。目指せ、100KB。なんてね。
主なものは、ce-scroll,skk,woman,mode-info,abbrev-complete,browse-kill-ring,dabbrev-highlight,edict,gnuserve(Windows only),hl-line,html-helper-mode,japanese-holidays,keisen-mule,navi,session,といったところです。他のものも試してみたのですが、Fri Dec 26 19:07:01 2003現在、このあたりで落ち着いています。
■指定ディレクトリ以下の複数の拡張子を持つファイルに対してサブディレクトリまでgrepする
以下の設定を.emacsに追加してください。
但し、Bashの関数を使用していますので、他のシェルでは変更する必要があります。
拡張子がasm,txt,h,cの場合の例です。
(setq grep-command "for i in *.asm *.txt *.[hc];
do find path -name \"$i\" -print;done|xargs grep -n -i ")
使い方:M-x grep
とすると、上記文字列が表示されますので、 pathを探索開始ディレクトリに書き換え、最終位置までカーソルを移動し、探索文字列を入力すればOKです。
最近のfindを使用している場合は-orを使用すればそれで済むのですが、古めのfindだと、or検索ができないので、こんなことをする必要があります。
正規表現に明るい方は、上記拡張子にマッチする記述をすればそれで済むかもしれません。知っていたら教えてください。
■TAGSファイルによるソース解析
emacs/Meadowでは、タグファイルによるソース解析がサポートされています。
ここでは、その方法をみていきます。
TAGSファイルの考え方そのものはなにもemacsだけでなく、viでも同様なことは可能です。
私の場合、emacsしか使用しないので、というだけです。
- できること
関数、マクロ、型などの定義位置に一発でジャンプできる。
もちろん、元の位置に戻ることも可能。
これが、意味するところは・・・そう、仮想的なステップ実行が可能になります。
変数の状態までは分かりませんが、処理の流れを追えるだけでも解析にはとても重宝します。
いちいち、この関数の定義位置は、...とgrepするのが苦痛と感じている方にお勧め。
TAGSファイル管理下のファイル群からの検索、置換が可能。
- 必要なもの
Meadowなどのemacs系のエディタ
ctags/etagsなどのタグファイル生成ソフトウェア
- タグファイルの作り方
emacsでは、標準でTAGSというファイル名で作成するのが一般的です。
ctagsを使う場合、多くの場合、-eというオプションを指定すると、TAGSというファイル名で作成してくれます。
基本的には、対象ディレクトリに移動し、etags -t ファイル名
とするだけです。
ただ、サブディレクトリの検索はできないので、find,xargsと組み合わせる必要があります。
find トップディレクトリ -name ワイルドカード -print | xargs etags -t
とかでしょうか。
findが-orをサポートしていない場合などで複数のワイルドカードを指定したい場合、ShellのLOOP機能であるfor文などを使用する必要があります。ここでは、触れませんが簡単なので、man forやWebで調べてみてください。
この場合、ディレクトリは相対になるので、注意が必要です。やってみて、TAGSファイルを開いてみれば分かります。
- 使い方
- TAGSファイルを指定する
最初にfind-tag(M-.)すると場所を聞いてきますので、場所を指定するだけです。
場所を変更したい場合は、visit-tags-tableを実行すると、指定できます。
- 定義位置にジャンプする
飛びたい関数へカーソルを移動して、find-tag(M-.)でジャンプできます。
- ジャンプする前の位置に戻る
pop-tag-mark(M-*)
ただし、emacs19ベースのmuleでは実装されていません。
- TAGSファイル管理化のファイルから検索
tags-search
検索対象ファイルが予め決まっている場合は、grepでなく、こちらが便利。
正規表現での指定も可能です。
次候補へ進むには、C-u M-,
- TAGSファイル管理化のファイルを一括置換
tags-query-replace
- 主なキーバインド
機能 キーバインド コマンド名 M-. find-tag 定義位置へジャンプ M-* pop-tag-mark ジャンプ前の場所へ戻る M-, tags-loop-continue 他の候補へジャンプ ESC C-. find-tag-regexp 正規表現でジャンプ指定 C-x 4 . find-tag-other-window C-x 5 . find-tag-other-frame
- TAGSファイルを指定する
このツールは、DOSだけでなくUNIXでも動作するコマンドラインタイプのツールなので、emacs/Meadowとの相性がバッチリです。ShellモードでもShellCommandでも使えますので、便利です。
■日本語manを見る
Cygwinに付属のmanは、英語で記述されています。英語の得意な人にはこれでもよいのですが、日本語で読めたほうがより、ベターですね。
ということで、ここでは、Meadowで、日本語manが見えるようになるまでを紹介します。
Cygwinに直接、日本語環境を構築してもよいのですが、Meadow+WOMANの方が、はるかに楽に目標を達成できます。
余裕のある方は、Cygwin環境でのインストールにもチャレンジしてみてください。
- rpmをインストールできる環境を用意する
ftpサイトから、rpm-3.0.6.bin.tar.gz をDLして、'/'で展開して、
$ rpm --initdb
$ mkdir /etc/mtab
を実行すれば、rpm のインストールと DB の初期化とディレクトリの準備が完了です。
この作業で rpm パッケージをインストールする準備が整いました。
- 日本語manをインストールします
JM Projectにあるrpmファイルをダウンロードし、
$ rpm -i --nodeps --force --ignoreos ファイル名
として、インストールします。
エラーが表示されますが、気にしなくてOKです。
- MeadowにWOMANを組み込む
Francis Wright's Emacs Packagesから、WOMAN.ELをダウンロードし、lispパスの通った場所へ配置します。
次の内容を.emacsに追加します。
インストールパスを変更した場合は、適宜読み替えてください。
Meadowを再起動もしくは、各lisp文の最終行でC-xC-eとします。
- 日本語manを見る
M-x woman
と入力し、ミニバッファから、確認したいコマンド名を入力します。
TABキーで補完が利きますので、どんなコマンドがあるか確認してみるだけでもしばらくは遊べるでしょう。
勿論、日本語manに用意されていないコマンドは、英語での表示になります。
同じコマンド名が存在する場合は、パスを選択するウィンドウが表示されますので、希望位置にカーソルを合わせ、Enterキーで確定すればOKです。
-
まずは、日本語manをインストールします。
ソースレベルでインストールできる方は、以下の作業は不要です。JM Projectにあるtar.gzファイルをダウンロードし、インストールすればOKです。
■Wanderlust
- キーバインド
メールを書く (フォルダモード or サマリモードで) w 引用せずに返信する (サマリモードで) a 引用してに返信する (サマリモードで) A フォワードする (サマリモードで) f 編集中のドラフトを破棄する (ドラフトバッファで) Ctrl-c Ctrl-k メールを送信する(ドラフトバッファ消去) (ドラフトバッファで) Ctrl-c Ctrl-c メールを送信する(ドラフトバッファを残す) (ドラフトバッファで) Ctrl-c Ctrl-s ファイルを添付する (ドラフトバッファで) Ctrl-c Ctrl-x Tab 署名の挿入 (ドラフトバッファで) Ctrl-c Ctrl-w アドレス帳を編集する Ctrl-c Ctrl-a
a : アドレス追加
e : アドレス編集
d : アドレス削除
q : アドレス編集から出る
x : ドラフトバッファに反映
Summaryモード
@ : アドレス追加
■関連ツール
- gnuserv
Meadowを普通に関連付けし、ファイルをダブルクリック後、Meadowが起動中の場合は別フレームにそのファイルが表示されます。
これでは、ちょっと不便なので、こんな時は、gnuserv というツールを使えば万事解決です。
■ifdefブロックをジャンプする
以下のようにすると、ifdefブロックをジャンプできます
- endifへジャンプ
ifdefの行にカーソルをあわせてから、
C-c C-n
- ifdefへジャンプ
endifの次の行にカーソルをあわせてから、
C-c C-p
■OR検索
バッファをOR検索するには、以下のようにすればOKです。
後ろへ向かって検索するなら、M-x isearch-forward-regexp
前へ向かって検索するなら、M-x isearch-backward-regexp
とし、ミニバッファから、キーワード1\|キーワード2\|キーワード3
で、検索できます。後は、普通のインクリメンタルサーチなので、C-s,C-rでOKです。
これは正規表現の一つなのですが、これだけで書籍になる位の内容になるものなので、ここでは、省略します。興味のある方は、上記リンク先の書籍や正規表現をキーワードに検索してみてください。
■M-x grep で日本語入力
Meadow(1.15以下)に限らず、Emacs20.2では、標準状態では、M-x grep で日本語検索できません。
shellモードではできるのに、何でだろう?という方も多いかと思います。
そこで、以下を.emacsに追加すると、日本語検索可能になります。
勿論、grepは日本語対応版を使用してください。
■CVSでバージョン管理
一般にバージョン管理に使用されているCVS.Emacs/Meadowでは、予めアクセスがしやすいようになっています。ここでは、Windowsのローカル環境での導入から運用方法まで説明します。
RCS/VSSは、ロック式なので、一人の人が作業中だと、check inするまで何もできなくなる可能性があります。CVSでもロックを使えるのですが、優れたマージ機能が搭載されていますので、一般的には、ロック式で使うことは少ないようです。初期状態でも非ロック式です。
- 導入
- CygwinのCVSパッケージをインストール
- CVSROOTの置き場所を決める
c:/home/CVSROOT を置き場所にする場合は、
環境変数CVSROOTに:local:/cygdrive/c/home/CVSROOT
と設定しておきます。Win9xならAUTOEXEC.BAT,
NT系ならマイコンピュータ右クリック→詳細タブ→環境変数
から設定すればOKです。
※UNIXで利用の場合は、:local:は不要で、普通にパスを指定するだけでOKです。
- CVSを初期化する
cvs init
とすると、c:/home/CVSROOTとその直下にCVSROOTが作成されます。
- 使用開始
- プロジェクトファイルの準備
c:/home/sample/hello/hello.cをサンプルとして準備します。 - プロジェクトファイルをCVSに登録
cvs import -m "start" sample/hello vendor_tag hello_01_00
とすれば、~/sample/hello以下のファイルが登録されます。
CVSROOTで登録したディレクトリ以下にsample以下ができている筈です。
- プロジェクトファイルの準備
- 運用方法
- チェックアウト
CVS管理下のファイルをローカル環境で使用可能にすることをいいます。
チェックアウトしたいディレクトリに移動し、
cvs checkout sample/hello
とすると、sampleディレクトリ以下が作成されます。
ここまででコマンドラインの作業は終了です。勿論、以下の作業をコマンドで行うことも可能ですが、せっかくEmacs/Meadowが使用できるのですから、使わない手はありませんね。 - 現在のファイルとCVS管理化のファイルの比較
C-x v = とすると、別バッファにCVS管理下のファイルが表示され、異なる場所が、簡単に確認できます。
ファイルを変更中に、あれ?どこ変えたっけ?といったときに、重宝します。
余談ですが、SunOSだと、tkDiffというX用のツールがさらに見易いです。 - チェックイン(commit)・・・最新ファイルをCVSに反映
チェックアウトしたファイルをオープンすると、モードラインにCVS管理下のバージョン番号が表示されます。
チェックアウトしたファイルを変更します。
VSSと異なり、Commit中以外は、ロックされませんので、 チェックイン前にC-x v = で旧バージョンと比較しておきましょう。
確認が終わったら、
C-x v v とすると、チェックインできます。
コメント入力用のウィンドウが開きますので、入力したら
C-c C-c とすると、更新されます。
モードラインのバージョン番号も変更された筈ですので、確認しておきましょう。
ちなみに、チェックインのコマンド名は、commit です。 - 履歴の表示
C-x v l とすると、別バッファに履歴が表示されます。
必要なくなったら、C-x 0 で消せばよいでしょう。 - 旧バージョンの取得
作業中に、一つ前の状態に戻したい場合、
C-x v u と入力すると、ファイルが変更されている場合は、確認がありますので、同意すると、一つ前の状態に戻ります。 - 旧バージョンの表示
C-x v ~ とし、ミニバッファにバージョン番号を入力すると、別バッファにそのバージョンのファイルが表示されます。
M-x compare-windows で比較すればよいでしょう。 - スナップショットを作成
正式には、TAG打ち、とよばれる作業になります。
C-x v s とし、タグ名を入力すればOKです。
指定したスナップショットを復元するには、C-x v r です。
- チェックアウト
- ドキュメント
- info
infoのvcにドキュメントが用意されています。 - 日本語info
ftp.ascii.co.jpにEmacs20の日本語infoがあります。
texiなので、emacs.texiを読み込んでM-x texinfo-format-buffer とすれば、infoにできます。
なお、ack.texiはパッケージに含まれないので、予め用意しておく必要があります。
- info
- キーバインド一覧
キーバインド コマンド名 機能 C-x v ~ vc-version-other-window コマンドをタイプした後、バージョン番号をミニバッファに入力すると、対象バージョンのファイルが別ファイルに表示されます。
ここで、M-x ediff-buffersでバッファ名を指定(通常は、リターンキー2回でOK)すれば、カラフルな画面で比較できるので、分かりやすいでしょう。C-x v = vc-diff CVSに格納されているファイルと現在編集中のファイルを比較します。 C-x v v vc-next-action commit(check in)。これがなければ、何もできませんね。 C-x v u vc-revert-buffer 現在編集中のバッファを破棄し、CVSで管理しているファイルを再ロードします。
ま、やり直しです。C-x v s vc-create-snapshot タグ打ちです。
私は、コマンドラインからcvs tagを使っています。C-x v r vc-retrieve-snapshot スナップショットの復元です。 C-x v m vc-merge cvs merge
編集中ファイルとCVSで管理しているファイルに違いがあれば、比較した上で、矛盾点を教えてくれます。
commit前にやっておきましょうC-x v l vc-print-log cvs log C-x v i vc-register cvs import
コマンドラインから普通にcvs importしたほうが良いでしょう。
-Iオプションを併用すれば除外ファイル指定で一気にimportできますし。C-x v h vc-insert-headers C-x v g vc-annotate 誰がいつどこを変更したかを表示してくれます。 C-x v d vc-directory カレントディレクトリにcommitやマージしていないファイルがあれば、dired画面として表示してくれます。 C-x v c vc-cancel-version C-x v a vc-update-change-log - CVSコマンドで便利な技
- 今までにコミットされたファイルの一覧を見る
cvs history -cl -z +0900
historyには、沢山のオプションがあるので、色々と試してみると面白いでしょう。
- ローカル環境にまだコミットされていないファイルを確認
cvs diff|grep 'RCS file'
変更ファイルが見つかったら、
cvs diff ファイル名
でそのファイルの変更点を確認すればよいでしょう。
変更ファイルが少ない場合は、最初から、cvs diff だけでOKです。
- 今までにコミットされたファイルの一覧を見る
皆さん、食わず嫌いは止めて、Emacs/Meadowを使い倒しましょう。
■文字の表示色を変更
mcompleteの表示色を変更では、直接ELファイルを書き換える方法を説明しましたが、実は、フェイスを変更することでも可能です。
- M-x list-faces-display でフェイス一覧を表示
- mcomplete-何たら、がmcomplete関連のフェイス名です。ここで表示されたフェイスのうち、見づらいものを変更すればよいでしょう。
- *scratch*バッファで、
(set-face-foreground 'フェイス名 ("色の名前"|"rgb:rr/gg/bb"))C-x C-e
とすれば、反映されます。
気に入ったら、.emacsの最後に追加しておけばOKです。(ELファイルロード前に書いても意味がありませんので、念のため)
font-lock-modeの色が見づらいと感じている方は、ぜひお試しを。
■おまけ、Cソースの色を変更する方法
例えば、font-lockを使って色付けをしているc-modeでCソースの編集をしている場合(多分、殆どの人がこれに該当します)は、
font-lock-で始まるフェイス名の該当する部分を見つけ出して、上述したset-face-foregroundを使用して上書きしてあげればOKです。
コメントの色なら、font-lock-comment-face
定数の色なら、font-lock-constant-face
関数名の色なら、font-lock-function-name-face
キーワード(ifとかforとか)の色なら、font-lock-keyword-face
文字列の色なら、font-lock-string-face(これがデフォルトでみにくいんですよね)
変数名の色なら、font-lock-variable-name-face
って具合に対応するわけです。
■mcompleteの表示色を変更
mcomplete,mcomplete-historyは、icompleteと並び、ないと不便ですね。
ただ、デフォルト状態では、背景色によっては見にくいです。
そこで、表示色を変更してみましょう。
- 対象ELファイルを開きます
- foreground を検索します
- ダブルコーテーションで囲まれた部分を見やすい色に変更します
なお、色見本を表示するには、M-x list-colors-display とします。
■diredで拡張子ソート
diredを起動したら、以下のようにします。
- C-u s
- オプションが表示されるので、X(ラージX)を追加する
もちろん、lsが-Xをサポートしていない場合は(SunOSなど)、使えません。
■ftp上のファイルを直接編集する
C-x C-f /ユーザ名@サーバ名:ファイル名
とするだけです。あとは、ローカルファイルと同じように編集できます。
■邪魔な条件コンパイルを見えなくする
大きいプロジェクトのソースは仕向け別に#ifdefや#ifで条件コンパイルするようになっている場合が殆どです。そのままでは、とても見れたものではないので、Meadowで不要な個所は非表示にしてしまいましょう。
- hide-ifdef-modeを使う
- hide-ifdef-modeに入る
M-x hide-ifdef-mode として、hide-ifdef-modeに入ります。モードラインにその旨が表示されます。 - 不要なブロックを削除する
まず、不要なブロックのどこかにカーソルを移動し、M-x hide-ifdef-block とすると、そのブロックが削除されます。削除されるといってもソースから消えるわけではなく、見えなくなるだけですので、ご安心を。
- 削除したブロックを復活する
ブロックのどこかにカーソルを移動し、M-x show-ifdef-block とすると、対象ブロックを復活できます。
M-x show-ifdefs とすると、今まで削除したブロックが全部見えるようになります。 - 自動的に隠す
.emacsに
(setq hide-ifdef-define-alist ( append (list '(シンボル名 シンボル名) )))
のように登録しておき、M-x hide-ifdef-use-define-alist とすると、自動的に隠せます。
但し、#ifの処理が上手く行かない様なので、私は手動でやっています。(Meadow1.55)
- hide-ifdef-modeに入る
- マクロ展開機能を使う
Meadow/Emacsでは、プリプロセッサと連動して必要な部分だけを展開可能です。
但し、プリプロセッサなので、#defineで定義されたマクロまで展開します。
Meadow+Cygwinの場合は、.emacsに
(setq c-macro-preprocessor "cpp -C -E -Iインクルードパス -Iインクルードパス")
と設定しておき、リージョンで必要個所を選択した後、
M-x c-macro-expand とすると、別ウィンドウに結果が表示されます。
こちらは、プリプロセッサを使用しているため、#ifでも#ifdefでも正しく表示されます。
Cygwinをインストールされているなら、こちらをお勧めします。
但し、ファイルがディレクトリ構成になっていたり、ファイルごとにインクルードパスが異なる場合には、この方法だと、ちょっと面倒です。
ソフトウェア解析術で紹介している、makefileとプリプロセッサを組み合わせる方法を使ったほうが早いかもしれません。
■Emacsに関連する書籍

入門 GNU Emacs 第3版(半田 剣一,オライリー・ジャパン)
¥ 3,990 通常24時間以内に発送
Amazonポイント:¥ 39
レビュー数:2
●GNU Emacs/Mule
Muleは、GNU EmacsのMULtilingual Enhancement(多言語拡張)です。●チュートリアル以後
翻訳の監修をMuleのメンバが行っているので、本格的な翻訳になっていると思われます。
コンピュータ科学者、例えば日本語語彙体系を作った白井諭さんもLisperだそうなので、Muleを普及することとLispを普及することを合わせて推進することが、大学の情報処理教育の一つの核かもしれない。
emacsのチュートリアルで操作を覚えてあとはeclipseなんかをemas風キーバインドにして使っていたのですが、
この本を読んでemacsを使いこなせるようになってくるとなんかIDEに戻れなくなっていました。(笑
ただ、この本はほんとに入門と言った感じで拡張機能などはあまりふれていないので、なれてきたら
自分でいろいろ探して付け足していくといいと思います。wb-line-numberやspeedbarなんかおすすめです。

便利なツール Emacsらくらく入門(,技術評論社)
¥ 2,499 通常24時間以内に発送
Amazonポイント:¥ 24
レビュー数:3
●でかすぎるエディタ
emacsというエディタ自体がエディタを超えた総合環境とも言える巨大なソフトウェアなので、仕方がないことだが、この本の内容は全体的にその諸機能をざっと概観するだけで食い足りないものがある。●Emacs始めの一歩に
とはいえ、わたし自身はこの本ではじめて、emacsの総合環境としての機能の使いかたを知ったのは事実なので、入門書としていいと思う。
しかしながら、日本人の物書きとしては、viせよemacsせよ、unix起源のいわゆる伝統的なエディタが日本語文章の作成ツールとして適当なのかは全く疑問(例えば単語登録の仕方を参照せよ)で、普通はもっと軽快で直感的な操作が可能なエディタを選ぶはずである。
入門書とはいっても、この本はエディタで文章を書くのではなく、emacsというソフトウェアをハッキングすること自体を目的としている人のための入門書と言えるだろう。
本書はタイトル通りのEmacs入門書です。Emacs特有のキー操作から始まり、Emacs-lispに終わります。実際の動作も図を交えて上手く説明してあります。広く浅く書かれているので、普段は上下前後移動、保存のキーしか使っていない人が、そろそろEmacsというものを使ってみるかと言うときに参照する程度の内容です。Wnnによる日本語入力の説明もありますが、現時点(2006年1月)では、Wnnより遥かに使い勝手の良い入力システムがありますので、無理にWnnを入れることもないでしょう。いずれにせよ、Emacsを使うには熟練を必要とすると思いますので、この本を買ったからと言って一気に作業効率があがるというわけではありません。ただ、特に使い始めではWebでHowtoを読むより実際に書物を手元において必要なことを索引から見つける方が効率の良いことも確かです。この意味で、本書はとても有用です。●Emacs入門に最適。
LinuxやBSD,MacOSXの各々の場合についてEmacsのインストールから日本語の使用、各コマンドの説明があります。とくにMacOSXなどは日本語化が特殊なので結構重宝しました。
C-やM-のコマンドも丁寧に解説してあり、高機能ながら操作性が特殊なEmacsを使うはじめの一歩を提供してくれます。

Emacs 辞典 (DESKTOP REFERENCE)(,翔泳社)
¥ 3,129 通常24時間以内に発送
Amazonポイント:¥ 31
レビュー数:2
●索引がないのが致命的
Emacsの基本的な使い方からあまり普段は使わないので使い方をよく●Emacs自由自在(への第一歩)
覚えていないような事例まで網羅されていて、そこそこ頼りになります。
elispやカスタマイゼーションについてもコンパクトなリファレンスとして
よくまとまっていると思います。Emacs本体で提供されている機能の解説のみに
抑えてあって、外部パッケージについての記述はばっさり落としてある点は、
私には好感が持てました。
しかし、目的別インデックスと用語インデックスはあるのに、
コマンド・関数・変数名別インデックスはありません。
なので、このコマンドの使い方は・・・なんてときには目次から調べていくか、
目的や用語を類推して引くことが中心となります。はっきりいって使いにくいです。
内容は星4つ以上ですが、辞典と銘打っていながら辞典として使えない作りは
非常に残念です。
とりあえず設定はできた。
メール、Webブラウズ、プログラミング。
でも、思い通りに動かすにはどこをどういじったらいいんだろう?
Emacs使いなら誰もが通る道だと思います。設定ファイルを眺めても、
括弧の嵐で訳が分からない。そんな時はきっとこの本が役に立ちます。
内容はEmacsの基本機能からelispの基礎まで。ざっと一通り眺めただけ
でもカスタマイズができるようになると思います。・・・少なくとも、
やりたいことを実現するための足がかりを与えてくれます。
Emacsを使うのが楽しくなること請け合いですよ!

Emacs Lispプログラミング入門(,アスキー)
¥ 2,940 通常24時間以内に発送
Amazonポイント:¥ 29
レビュー数:3
●Emacs Lispの基本文法入門に最適
本書はオンラインで無料で読めるが、携帯して学習でき、初版から10年経っても経年劣化がほとんどない上質紙を使っており、内容も極上であるのでお勧めします。Lisp系ではCommon LispやSchemeとelispでは変数のスコープに違いがありますが、その説明もちゃんとあります。●Emacs Lispを書く人の登竜門的本
惜しむらくは続編ともいえる日本語版の「GNU Emacs拡張ガイド(Writing GNU Emacs Extensions)」及び「GNU Emacs Lispリファレンスマニュアル」が絶版になっていることです。前者はelispのマクロの説明も含んだ好著だったので残念です。代わりに「On Lisp」などで学習すれば良いと思います。
LispでEmacsの機能を拡張して効率の良い開発環境を手に入れ、マクロでLisp/Schemeの言語機能を拡張して短いコードで豊かな表現力を手に入れる。Lisperの魔法がこういうところにあるということを実感できるでしょう。
Emacs Lispを書く人はなかなかいないと思いますが、ちょっとカスタマイズしたいときに、どうしてもEmacs Lispを書かないといけないことがあるかもしれません。そのような方が、最初に読む本ではないでしょうか。でも、いつも思うのだけれど、Emacs Lispって、プログラムを書くというよりも、構造的に数式を書いている感覚にとらわれてしまうのは、私だけでしょうか?●Emacs Lisp
Emacs Lispのマクロについて特に実践的に書かれており、
emacsユーザにとっては一度は読んでおきたいリファレンス本です。

やさしいEmacs‐Lisp講座(,カットシステム)
¥ 2,520 通常24時間以内に発送
Amazonポイント:¥ 25
レビュー数:1
●実践的な本
この本は、Emacsを拡張することに重点をおいています。つまり、Emacs-Lispの文法や関数をだらだら説明してはいません。拡張する上で重要になるLisp文法、関数やEmacsの機能を上手にピックアップしています。また、この本は、はじめてEmacsの拡張する人に適した構成になっています。私自身、EmacsやLispについてほとんど知りませんでしたが、難なくEmacsを拡張することができました。非常にお勧めの本です。

入門Meadow/Emacs(,オーム社)
¥ 2,940 通常24時間以内に発送
Amazonポイント:¥ 29
レビュー数:4
●15年ぶりの Emacs
15年ぶりに Emacs を使ってみた。普段 Windows を使う人間を、久しぶりに Emacs に回帰させたのは Cygwin の普及。Cygwin を導入して、シェルコマンドが自在に使える環境を構築すれば、文字編集環境に Emacs を導入したくなるのは必然のようにも思える。●出てよかった本書の内容に関しては、著者も言うように、操作解説などの点で他の Emacs ファミリーと同様な点が多い。その意味で言えば既に Emacs を熟知している人に本書は不要だろう。ウィンドウズに Cygwin を導入し、初めて Emacs に触れるという人に向いている。
あるいは Gnus や中途半端な CVS の説明は一気に省き、基本操作と、本体に付属する Emacs Lisp パッケージの説明により注力した方が対象が広がったかもしれない。細かな操作方法や外部コマンドとの連携についてはいずれにせよウェブなどで調べることになるからだ。
尚、Emacs を使う以上、本書でも各種シェルコマンドとの連携について触れている。そしてその多くは Cygwin を前提としている。そもそも Emacs は Unix シェル環境があってこそ活きてくるものなので、その方針には賛成。「素」のウィンドウズに Meadow を導入する人は、Meadow(ないし Emacs)の能力の半分も実感することができないだろう。
著者の小関さんが作成されたMeadowの入門サイトでこのソフトの存在を知り、サイトを頼りに使ってきました。●初心者向け
使い始めたのは2年以上前だと思いますが技術の発達は恐ろしく早く、Meadow/Emacsを取り巻く状況はどんどん変わってきてサイトを覗くたびに新しい情報が増えて混乱していました。小関さんはたしか手間のかかるMeadowのインストールを、Cygwinのネットインストールと同じように簡単な方法で行えるツールを作られたかただと思います。
Windows上でCygwinを使っている、または使おうとしているのであれば Meadowは非常に便利な道具であります(ほとんどどんなことでもできる)。が、使い始めは設定に苦労が伴います。小関さんの努力でインストールも簡単になりました。その功労者が書かれた書籍でMeadow/Emacsを導入してみてはいかがでしょうか。Meadow/Emacsでは本当に多くのことが実現できるのですが、多くの方はその一部の恩恵にあずかっているだけだと思われます。なぜなら販売されているソフトと違って、多くの機能を理解し取り入れるには時間がどうしてもかかってしまうのです。
一つ一つの機能が多くの有志の方に作られた結果でありますが、この書籍のように時々は機能をまとめた書籍が出版されるとユーザーにとっては大変ありがたいです。
星が4つなのはもっと薄くしてリファレンス的に使えると良かったという個人的な希望と表紙のヌー(?)の写真がぶれ気味な理由が良く分からないところです。
またこのサイズなら逆にもっといろんな使い方を盛り込めたかな、とも思います。
この本を読んで、やっとEmacsが使えるようになりました。●硬派なパソコン使い中級者ならば! しかし…?
Emacsに関する本はたいてい初心者お断りといった内容なのですが、この本はそのお断りされた初心者むけの本でしょう。
仕事先や大学でemacsを使っていて,なおかつ自分のWindowsでもemacsと同じ感覚で使いたい.かといってもう一台Linuxマシンを置く余裕も無いし,デュアルブートもしたくない…Meadow及び,この本のターゲットはそういう人だと思います.内容としては上級者には物足りないかと思われますが入門としては充実していますし,入門だけあってなかなか解りやすく,「完璧とは言えないが誰にも文句は言われないレベル」までは面倒見てくれるといった感じです.また,単純にemacsのリファレンスとしても結構便利です.
先にも書いたようにターゲットは非常に絞られてくると思いますが,該当する方は持っておいて損は無いかと思います.また,パソコンで何かをガンガン書くという方もこの本でMeadow/Emacsに挑戦してみてはいかがでしょうか.ただし既にWindowsでMeadow以外を用いたTeXの環境を構築している方はわざわざMeadowに乗り換えることも無いと思われますので,この本もあまり必要ないことになります(YaTeXに関する記述もほとんど無いので).興味本位で読んでみるのにはなかなか面白い本だと思います.
微妙な書き方をしてしまい申し訳ありませんが,Meadowを扱った本は投稿時点では他にありませんし,内容も悪くはありません.しかしMeadowがフリーであるにもかかわらず,この値段でCD-ROMが付属しない,つまり本を読んでもネットに接続できる環境が無いとMeadowを使うことができないというのはいかがなものかと.
また,フォルダ名や設定の文字列に筆者の個人的な具体例を用いる箇所が多くうざったいどころか余計な読み替えが必要な(中級者じゃないと厳しいかもしれない)ところもマイナスです.
その点を考慮して星は3つに降格です.

GNU Emacsデスクトップリファレンス (UNIX text processing)(Debra Cameron,オライリー・ジャパン)
レビュー数:3
●紙のリファレンスの必要性
EmacsというエディタはWondowsの一般的なエディタと違って独特のコマンドが使いこなせないと真価を発揮●オンラインドキュメントがあれば十分
できない。私も始めの頃はEmacsが理解できず困ったのだが、使い方がわかってくると非常に強力な
ソフトウエアであることが理解できた。今ではWindows上でもEmacsクローンのエディタを使っている。
そこでEmacsかなめのコマンドであるが、そのコマンドがなかなか覚えられない。コピー・ペーストの
コマンドくらいなら頻繁に使うので覚えられるが、たまにしか使わないものはやはり無理だ。そこで
リファレンスを参照しながら使うことになる。では、そのリファレンスはどうやって参照するか?
たいていの人はオンラインドキュメントだと考えるだろう。ところがここに落とし穴がある。オンライン
ドキュメントが使いにくいと感じる人がいる。実は私がそうなのだ。その場合は紙の媒体に頼る必要がある。
そこに本書のような手頃なリファレンスの存在意義がある。
リファレンスとしての本書の出来はいまいち。もうちょっとうまく記述できなかっただろうか?
あと、大きさは出来れば文庫サイズにして欲しかった。
この本は,GNU Emacsを使ううえでの基本的なコマンドから,簡単な(ほんとにかんたんな)カスタマイズ方法までを各項目1~2行程度の説明を添えて50ページ弱にまとめてあります.サイズも小さめで,その名の通り机の上に置いておき必要に応じて参照するような使い方を想定しているものと思われます.●GNU EmacsコマンドリファレンスGNU Emacsがまったくはじめてという人には,この本は分厚くないし値段も手ごろなので一見良さそうに見えるのですが(わたしがそうでした),実際のところ,この本の世話になる機会は一度もありませんでした.なぜなら,GNU Emacsには,高機能なヘルプが標準で装備されており(例えば, apropos-commandと呼ばれるコマンドで名前から機能を検索することができるなど),各コマンドごとに詳細なドキュメントが付属しています.またインターネットで自由にマニュアルを見ることもできます(日本語訳も見られます).つまり,いちいち本のページをめくって目で項目を探すような苦労をせずとも,キーボードをちょっと叩いて,オンラインヘルプで調べるほうがよっぽど手間がかからないのです.
これからGNU Emacsを使い始める人は,まず "C-ht"とコマンドを叩いてチュートリアルモードで練習をすることをお勧めします.ヘルプの見かたを含めて一通りの基本的な知識が身に付いているでしょう.それで十分です.
UNIX系OSでは代表的なエディターのEmacsのコマンドリファレンスある。余計なことは書いてないので、純粋にコマンドが分からないときに参照するといった用途で威力を発揮する。ある程度Emacsを使いこなせる人には非常に便利であろう。そうでない人はまずEmacsを使えるようになってからのほうが本書は有効である。

入門GNU Emacs (UNIX text processing)(Debra Cameron,オライリー・ジャパン)
レビュー数:2
●明快な語り口調で・・・
長年のWindowsユーザーであった私が、Linuxの魅力にとり憑かれて買った本です。UNIXの世界は文書作成・プログラミングには何はともあれエディタから、ということらしいので近寄りがたいViは避け、Emacsを選びました。 この本は、そんな私にとって結構衝撃的で、●明快な語り口調で・・・エディタのみで繰り広げられる世界に圧倒されるものがありました。テキストファイルの扱いかたにここまでこだわるか!という感じで、コンピュータの基本はテキストファイルなんだと考えさせられました。個人的には、MacのActというアウトラインプロセッサを気に入って使用していたので、8章のアウトラインモードの使用が参考になりました。
この本が気に入った理由はさらに語り口調が非常に親しみやすいことです。著者にあのEric.Reymond氏も含まれていて(後で気が付いた)、その説得力がありかつ明快で非常に好感がもてました。
長年のWindowsユーザーであった私が、Linuxの魅力にとり憑かれて買った本です。UNIXの世界は文書作成・プログラミングには何はともあれエディタから、ということらしいので近寄りがたいViは避け、Emacsを選びました。 この本は、そんな私にとって結構衝撃的で、エディタのみで繰り広げられる世界に圧倒されるものがありました。テキストファイルの扱いかたにここまでこだわるか!という感じで、コンピュータの基本はテキストファイルなんだと考えさせられました。個人的には、MacのActというアウトラインプロセッサを気に入って使用していたので、8章のアウトラインモードの使用が参考になりました。
この本が気に入った理由はさらに語り口調が非常に親しみやすいことです。著者にあのEric.Reymond氏も含まれていて(後で気が付いた)、その説得力がありかつ明快で非常に好感がもてました。

リスト遊び―Emacsで学ぶLispの世界 (ASCII SOFTWARE SCIENCE Language)(,アスキー)
¥ 1,260 通常24時間以内に発送
Amazonポイント:¥ 12
レビュー数:3
●Lispを初めて知る人向け
著者自身が、かつて知りたかったこと、という観点で、●Lispの美しき世界への入門書
Lispのエッセンスを短いページにまとめている。これまで
LispやSchemeなどのプログラミング言語に全くふれたことの
ない読者にとっては、短時間で読めるので便利かもしれない。
また、Lispの zerop の 'p' の由来などの豆知識がコラムに
あり、なじみやすくしてくれる。
しかし、これらの言語を少しでも(webなどで)かじった
ことのある読者にとっては、かなり物足りなく感じるだろう。
途中のページに、あたかも、鑑賞用と言わんばかりに
挟まっている Java のコードも無駄に感じる。
値段も、情報量に比して高めだ(この3倍の金額で、
「プログラミング言語 Scheme」など、はるかに充実した
入門書が購入できる)。ただし、Lispの仕様書というのではなく、
リストで遊ぼう、という姿勢は理解できる。プログラムって
なんやろ?というような、高校生ぐらいの読者には、
楽しく読めるかもしれない。
何故プログラミング言語 Lisp が歴史的に残ってこられたのか。●絶妙なlisp入門書
何故プログラマーはLispを勉強することを勧められるのか。本書を読めば、再帰処理、操作の抽象化の例を通じて
リスト処理言語Lispの美しさの一端に触れることができる。
ここで示される Lisp とその奥にある考えかたは、
他の言語でのプログラミングにも影響を与えるだろう。ほんの少しの前提知識--.emacs の編集経験程度--は要求されるが、
良書である。
本書はEmacs Lispを使用していますが、Emacs Lispの入門書ではありません。
Lispという言語で、現在もっとも入手しやすい処理系としてEmacs Lispを選択し
ているに過ぎません。Lispというよりは、リストと再起処理の基本を学ぶための入門書です。Lisp自体
を学ぶことに今日それほど意義があるとは思えませんが、こういった概念はJava
などでの実装時にも役立ちますし、こういった処理系があることを知るというこ
ともスキルの幅を広げるにはよいきっかけではないかと思います。また、Emacs Lispでプログラミングはしないが、.emacsのカスタマイズはする
という程度の利用者にもほどよい内容で、いままで意味もわからず呪文のように
書いていた内容が何となく理解できるようになると思います。これが私にとって
はもっとも価値がありました。

Meadow/Emacsスーパーチュートリアル (Front Programmer Series)(,秀和システム)
レビュー数:1
●初心者に最適
私は、以前からMeadowを使っているのですが、
使い始めのころ、設定に四苦八苦した覚えがあります。
(そこから学ぶことも多かったですが…)Meadowの本は今のところ小関さんのものと2冊出版されていますが、
その点この本は設定済みのMeadowがついているので、
Emacs等を使ったことがないのであればこちらの方をお勧めします。
MUAの記述はあまり載っていないので、
その辺は小関さんの本を参照されるとよいのではないかと思います。ただ、Meadowのよさは自分の思い通りの環境を構築できることにあり、
この本を読み終えたら、設定済みを使いつづけるのではなく、
ぜひ自分自身の環境を構築していってほしいと思います。
■


