Emacs Lisp最新カタログ
著者 松山智大
■■ TRAMP
http://www.gnu.org/software/tramp/
TRAMPはリモートサーバーのファイルをローカルのファイルと同じように扱うためのパッケージです.TRAMPを使うことによりリモートサーバーのファイルを編集するためにダウンロードしたりアップロードしたりする煩わしいことから解放されます.
■ インストール
Emacs 22標準なのでインストールする必要はありません.
■ 使い方
C-x C-fして以下の書式で編集したいファイルを指定することによりFTPサーバー上のファイルを編集することができます(リスト1).
------------------
<リスト1>
/ftp:<ftpアカウント名>@<ftpサーバー>:<編集するファイルのパス>
------------------
応答がない場合はange-ftp-try-passive-modeをtにしてから再度試してください(リスト2).
------------------
<リスト2> TRAMPの設定
; パッシブモードでの接続を試みる
; 必要なら.emacsに記述してください
:(setq ange-ftp-try-passive-mode t)
-----------------
ファイルを編集後,C-x C-s(save-buffer)で保存できます.これでリモートサーバーのファイルが変更されているはずです.
ファイルのパスにディレクトリのパスを指定することで,そのディレクトリをdiredで開くことができます.リモートサーバーかどうか気にせずファイルのコピーや削除ができるので大変便利です.
TRAMPはFTPのほかにSSHもサポートしています.上と同じようにC-x C-fして以下の書式で編集したいファイルを指定します(リスト3).
------------------
<リスト3>
/ssh:<ユーザー名>@<sshサーバー>:<編集するファイルのパス>
-----------------
SSHはFTPに比べて処理に時間がかかることが多いですが,通信がセキュアなので可能ならばSSHを使うほうがよいでしょう.
■■ Org
http://orgmode.org/
Orgはアウトライン構造の文書を書いたりTODOを管理するためのパッケージです.
■ インストール
Emacs 22標準なのでインストールする必要はありません.
.emacsにリスト5の設定を記述します.
------------------
<リスト5> Orgの設定
(require 'org-install)
(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
------------------
■ 使い方
Orgはとても豊富な機能を持っており,Excelのような表計算を行ったり,Orgの文書をTeXの文書に変換したりすることもできます.さまざまな使い方ができるOrgですが,ここではOrgによるTODO管理をやり方を紹介したいと思います.
まずC-x C-fしてtodo.orgというファイルを開きましょう.次に見出し記号(*)を使ってTODOを書きます(リスト6).
------------------
<リスト6>
* Emacsのソースを読む
* バグ#1234修正
* 記事執筆
------------------
TODOが書けたらそれぞれの見出しにカーソルを移動してC-c C-tします(リスト7).
------------------
<リスト7>
* TODO Emacsのソースを読む
* TODO バグ#1234修正
* TODO 記事執筆
------------------
これによりOrgがそれぞれの見出しをTODOの項目だと判断してくれます.
TODOが完了したらその見出しにカーソルを移動してC-c C-tします(リスト8).
------------------
<リスト8>
* TODO Emacsのソースを読む
* DONE バグ#1234修正
CLOSED: [2007-12-04 火 07:36]
* TODO 記事執筆
------------------
TODOに優先度を設定するには見出しにカーソルを移動して,S-upあるいはS-downで優先度を上げたり下げたりします(リスト9).
------------------
<リスト9>
* TODO Emacsのソースを読む
* DONE バグ#1234修正
CLOSED: [2007-12-04 火 07:36]
* TODO [#A] 記事執筆
------------------
未完了のTODOを優先度順に表示するには,todo.orgをC-c [でアジェンダファイルリストに登録して(二回目は必要ありません),C-c a tします.するとTODOのアジェンダが表示されます(リスト10).
------------------
<リスト10>
Global list of TODO items of type: ALL
Available with `N r': (0)ALL (1)TODO (2)DONE
todo: TODO [#A] 記事執筆
todo: TODO Emacsのソースを読む
------------------
以上のように,TODOを書いてアジェンダで確認,というのが基本的な流れになります.非常に簡単に管理できるので是非使ってみてください.
■■ Flymake
http://flymake.sourceforge.net/
Flymakeはソースコードを編集している時でも文法エラーを検出して知らせてくれるパッケージです.
■ インストール
Emacs 22標準なのでインストールする必要はありません.
.emacsにリスト11の設定を記述します.
------------------
<リスト11> Flymakeの設定
(require 'flymake)
(global-set-key "\C-cd" 'flymake-display-err-menu-for-current-line)
------------------
Windowsの場合はcygwinなどでmakeやgccをインストールして,パスを通しておく必要があります.
■ 使い方
Flymakeはさまざまな言語で使うことができますが,紙面の都合上,C言語での使い方だけを説明します.
まずsample.cを開いてリスト12の内容を記述しましょう.
------------------
<リスト12> sample.c
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello, %s\n" argv[0]);
return 0;
}
------------------
4行目のprintf関数にコンマがありませんが,通常このような文法エラーはコンパイルしなければ気付きません.そこでFlymakeを使ってソースコードを編集している時でも文法エラーを検出できるようにしてみます.
まずsample.cと同じディレクトリにMakefileというファイルを作ってリスト13の内容を記述します.
------------------
<リスト13> Makefile
check-syntax:
gcc test.c
------------------
続いてsample.cのバッファでM-x flymake-modeします.すると4行目がハイライトされるので文法エラーがあることがわかります(図1).文法エラーのある行でC-c dするとエラーの内容を見ることができます.
------------------
<図1> flymake.png
------------------
------------------
<表1> Flymakeが使える言語と参考リンク
| 言語 | 参考リンク |
|------------+---------------------------------------------------------------------------------|
| Java | http://dev.ariel-networks.com/Members/matsuyama/detect-syntax-errors-by-flymake |
| JavaScript | http://dev.ariel-networks.com/Members/matsuyama/flymake-for-javascript |
| Ruby | http://www.emacswiki.org/cgi-bin/wiki/FlymakeRuby |
| Haskell | http://www.emacswiki.org/cgi-bin/wiki/FlymakeHaskell |
| PHP | http://www.blik.it/2007/02/21/syntax-checking-for-php-in-emacs/ |
------------------
■■ Anything
http://www.emacswiki.org/cgi-bin/wiki/Anything
Anythingはひとつのインターフェースで何でもできることを目指したelispです.
Anythingのインターフェースが他のインターフェース(ファイルを開くインターフェースなど)と大きく違うのは,どのように行動するかを決定するのに必要な情報(以下,目的語)を先に入力することができるという点です.従来のインターフェースでは,具体的な行動をとるにはまずどのように行動するかを決定しなくてはなりません.一方Anythingでは目的語を入力してからどのような行動をとるか決定することができます.「昼食を」の次には「食べる」が続くことが多いように,目的語があれば次にとることができる行動を推測しやすくなります.Anythingの本質はユーザーがどのように行動するかを考える労力を肩代りするところにあります.
■ インストール
install-elispを使ってインストールすることができます(リスト13).
------------------
<リスト13>
(install-elisp-from-emacswiki "anything.el")
(install-elisp-from-emacswiki "anything-config.el")
------------------
.emacsにリスト14の設定を記述します.
------------------
<リスト14> Anythingの設定
(require 'anything-config)
(global-set-key "\C-xb" 'anything)
------------------
■ 使い方
C-x bでAnythingを実行することができます.パターンの入力を求められるのでscratchと入力してみましょう(図2).
------------------
<図2> anything1.png
------------------
Buffersソース(ソースは行動の候補を列挙する機能です)に*scratch*が候補として挙げられています.Buffersソースは,その候補のバッファを選択する機能を提供しているので,この状態でRETを押すと*scratch*バッファを選択することができます.
続いて.emacsを編集したくなったのでemacsと入力してみましょう(図2).
------------------
<図3> anything2.png
------------------
この時点では.emacsを開いていなかったのでBuffersソースには候補がありませんが,過去に.emacsを開いたことがあるのでFile Name Historyソースに候補を出てきました.File Name Historyソースはその候補のファイルを開く機能を提供しているので,この状態でRETを押すと.emacsを開くことができます.
Anythingは行動の候補を列挙するためにソースというものを使います.先ほど出てきたBuffersソースやFile Name Historyソースはanything-config.elにあらかじめ定義してあります.ユーザーはどのソースを使うかを設定することができます(リスト15).
------------------
<リスト15> Anythingの設定
; 必要なら.emacsに記述してください
(setq anything-sources
(list anything-c-source-buffers
anything-c-source-file-name-history
anything-c-source-info-pages
anything-c-source-man-pages
anything-c-source-locate
anything-c-source-emacs-commands))
------------------
定義済みソースとその機能の簡単な説明を表2に示したので,これを参考にして自分好みに設定してみてください.
------------------
<表2> 定義済みソース
| ソース | 機能 |
|----------------------------------------+------------------------------------------|
| anything-c-source-buffers | バッファを選択する |
| anything-c-source-file-name-histroy | ファイル名履歴からファイルを開く |
| anything-c-source-files-in-current-dir | カレントディレクトリにあるファイルを開く |
| anything-c-source-info-pages | Infoを開く |
| anything-c-source-emacs-commands | Emacsのコマンドを実行する |
| anything-c-source-bookmarks | ブックマークを開く |
| anything-c-source-locate | locateプログラムを使ってファイルを開く |
| anything-c-source-calculation-result | 入力された式を計算して表示する |
------------------
■■ doc-view
http://www.tsdh.de/cgi-bin/wiki.pl/doc-view.el
doc-viewはPDFファイルやPSファイルをEmacsで閲覧するためのパッケージです.
■ インストール
install-elispを使ってインストールすることができます(リスト16).
------------------
<リスト16>
(install-elisp-from-emacswiki "doc-view.el")
------------------
.emacsにリスト17の設定を記述します.
------------------
<リスト17>
(require 'doc-view)
------------------
現在のところWindowsでは正しく動作しないようです.
■ 使い方
M-x doc-viewして閲覧したいファイルを指定します.しばらくすると最初のページが表示されます.nで次のページ,pで前のページを読むことができます.
■■ linum
linumはバッファの行番号を表示するためのパッケージです.setnuなどと比べて巨大なファイルでも高速に行番号を表示できるのが特徴です.
■ インストール
install-elispを使ってインストールすることができます(リスト18).
------------------
<リスト18>
(install-elisp "http://stud4.tuwien.ac.at/~e0225855/linum/linum.el")
------------------
.emacsにリスト19の設定を記述します.
------------------
<リスト19> linumの設定
(require 'linum)
(global-linum-mode)
------------------
これで全てのバッファに行番号を表示されるようになります.