architect

GNU arch/tla を Emacs と仲良く使うための拙作 elisp、architect のページ。

architect について

GNU arch のページに書き散らしているように、GNU arch/tla を最近気に入って使っています。

architect は、この GNU arch/tla を Emacs 上から使うための elisp です。といっても、Emacs から使えると便利だと思う機能限定です。Emacs 21.3/21.3.50 で動作確認しています。現バージョンは 0.2 です。

architect は elisp 初心者の手によるもので、開発は elisp 独習を兼ねています。全くの無保証であり、自己責任のもとお使いください。

インストール

まず architect.el をダウンロードします。サーバの都合がつかず、GNU arch/tla での配布はしていません。

最低限の設定は、architect.el を load-path 上に置いて、.emacs に以下のように書くだけです。

(load "architect")

あるディレクトリが GNU arch のプロジェクトツリーかどうか、また revision は何か、を自動判定させるには、

(add-to-list 'find-file-hooks 'act-check-and-prepare)
(add-to-list 'dired-after-readin-hook 'act-check-and-prepare)

を追加します。なお、この機能は XEmacs では使えません。

代替 my-id

GNU arch/tla を使っていると、プロジェクトツリーによってはデフォルトと異なる my-id を使いたくなります。architect では、単に commit の前後で切り替えるという乱暴な方法でこれを実現します。

(setq act-alt-my-id "Your Name <foo@bar.baz>")

を .emacs に追加し、切り替えたいプロジェクトツリーに変数 act-alt-my-id-file で設定したファイル名 (既定値 ++alt-id) を持つファイルを置いてください。内容は空でかまいません。

キーバインド

後述するキーバインドにおける prefix の既定値は `C-c v' です。これは変数 act-prefix-key で変更できます。

使い方

以下の説明のキーバインドはデフォルトの prefix key (C-c v) を前提にしています。

act-history (C-c v h)

プロジェクトツリーの revision 一覧を表示します。さらにこのバッファ内では、次のコマンドが使えます。

scroll-up/down (space/shift + space)

一覧をスクロールする。

beginning/end-of-buffer (g/G, </>)

一覧の先頭/最後にカーソルを移動する。

act-history-prev/next (k/j, p/n)

カーソルを revision 名 (Fully Qualified Revision Name, FQRN, 無省略リビジョン名) に沿って移動させる。

act-history-toggle-missing (m)

プロジェクトツリーの取得済 revision 一覧と未取得の revision 一覧の表示を切り替える。

act-history-toggle-verbosity (t)

FQRN に加え、commit 日時なども revision 一覧に表示するかどうかを切り替える。

act-history-toggle-viewport (v)

プロジェクトツリーの revision 一覧バッファを、最大と二分割 (他方は dired や log) のいずれかに切り替える。

act-view-log (o, return)

カーソルのある revision の log を表示する。

scroll-other-window/-down (l/h, N/P)

log が表示されているバッファをスクロールする。

act-history-copy-fqrn (r/R)

  • r: カーソルのある revision 名をコピーする。
  • R (C-u r): カーソルのある無省略 revision 名 (FQRN) をコピーする。

act-history-copy-log (c/C)

  • c: カーソルのある revision の log を表示し、ヘッダ以外の本文をコピーする。
  • C (C-u c): カーソルのある revision の log を表示し、Summary, Keywords ヘッダと本文をコピーする。

act-history-copy-summary (s/S)

  • s: カーソルのある revision の summary をコピーする。
  • S (C-u s): カーソルのある revision の summary の先頭に "Summary: " を付加してコピーする。

act-diff (C-c v =)

バッファに表示されたファイルと指定された revision との diff を表示する。

  • 単に実行すれば、アーカイブにある最新 revision と比較する
  • Prefix (C-u) をつけると、つけた分だけ最新からさかのぼった revision と比較する

    (例) C-u C-u C-c v = とすると、最新より 2 つ古い revision との diff を表示

  • Prefix (C-u) のあと数字を入力して実行すると、数字で指定した revision と比較する

    (例) C-u 21 C-c v = とすると、patch-21 との diff を表示

act-diff-dir (C-c v -)

バッファに表示されたファイルを含むプロジェクトツリーと指定された revision のツリーとの diff を表示する。

デフォルトの動作、revision の指定方法は act-diff に準ずる。

act-make-log (C-c v m)

log を書くためのバッファを用意する。merge があれば、対応する log が自動でとりこまれる。

Prefix (C-u) をつけなければ、ツリー内の修正されたファイルを全て commit する。act-diff(-dir) などを適宜参考にして、修正点についての log を書く。

Prefix (C-u) をつけて実行すると、ファイル選択 commit のための dired バッファが開く。commit するファイルを m でマークする。C-c C-c でファイル選択用バッファを閉じ、log を書くバッファに移る。ファイル選択 commit 機能はテスト不足のため注意。

act-commit (C-c C-c)

log を書き終えたら、そのバッファで C-c C-c を入力して commit (act-commit) する。実際に commit されるのは最終確認の後である。選択 commit の場合は commit されるファイル名が最終確認時に表示される。

プロジェクトツリーに異常があれば commit は中止される。

act-tree-lint (C-c v t)

プロジェクトツリーの検査を行う。

act-import

一応実装されていますが、テスト不足です。

[...]

ダウンロード

GNU arch/tla で配布したいのに...。

謝辞

Mark Triggs 氏

architect.el の一部は氏の開発した mst-arch.el を元にしています。

Milan Zamazal 氏

architect.el の関数 `act-history', `act-view-log' は、氏の開発した tla.el の関数を元にしています。

既知のバグ

  • dired で revert-buffer を実行すると、act-check-and-prepare が 2 度呼ばれてしまう。実害はない。
    • dired 側で dired-after-readin-hook が計 2 回 run-hooks されるため。別の方法を考えた方がよさそうだ。

Todo

これ以外にも問題はいくらでもあります。特に window や process の取り扱いは杜撰です。

  • ユーザの破格な操作への対応; (例) 未 import ツリーにおける act-diff の実行
  • elscreen との共存
  • 任意の revision 間の act-diff
  • GNU arch changelog の font-lock
  • act-run-command の非同期実行
  • custom 対応
  • history バッファを閉じるときに、current-window-configuration を利用
  • shell-command 使用の是非検討
  • 適切な抽象化

このページについて

リンク元

ttm on the web

うつろい

Last modified: 2004-11-13 10:49:01

176a177
> - elscreen との共存
179d179
< - ==elscreen との共存==

さがしもの

Google search: