[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:01213] Re: 削除した予定の復活方法
From: KOIE Hidetaka (鯉江英隆) <hide@xxxxxxxx> さん曰く
Subject: [mhc:01212] 削除した予定の復活方法
Message-ID: <01Jan30.160654jst.29574@xxxxxxxxxxxxxxxxxx>
Date: Tue, 30 Jan 2001 16:06:53 +0900
鯉江> mhc-cvs.elをつかっているのですが
鯉江> C-c . d で削除した予定を復活させるにはどうしたらよいでしょうか。
鯉江> mhc-cvs.elをつかわない場合には+schedule/trashに溜め込まれるので
鯉江> 復活させるのは簡単でした。
鯉江> もし手動でCVSコマンドを叩くしか方法がないとすれば
鯉江> .mhc-db-logから仮想trashを生成できないものでしょうか。
現在は、online 環境で C-c . d しちゃうと、cvs コマンド打たないと
ダメみたいですね。
.mhc-db-log から仮想 trash を作るとなると、同じ file 名を何回も
add して remove したときに大変だと思います。(というか可能なので
すか?)
鯉江> あるいは、cvs removeする代りに X-SC-Category: dead を付加するというのは
鯉江> どんなもんでしょうか。
## これはもっと大変そう。
お手軽な方法として、
(defun mhc-cvs/remove (filename &optional offline)
"ファイルを削除する関数"
(let ((added (mhc-cvs/get-added-flag-file-name filename))
(removed (mhc-cvs/get-removed-file-name filename))
(new-path (expand-file-name
"trash"
(mhc-summary-folder-to-path mhc-base-folder))))
(or (file-directory-p new-path)
(make-directory new-path))
(if offline
(progn
(if (file-exists-p added)
(progn
(delete-file added)
(rename-file filename (mhc-misc-get-new-path new-path)))
(copy-file filename (mhc-misc-get-new-path new-path))
(rename-file filename removed t))
t) ;; return value
(if (file-exists-p added) (delete-file added))
(if (file-exists-p removed) (delete-file removed))
(if (file-exists-p filename)
(rename-file filename (mhc-misc-get-new-path new-path)))
(and (= 0 (mhc-cvs/backend (list "remove" (mhc-cvs/shrink-file-name filename))))
(mhc-cvs/modify filename)))))
として、CVS 使用時も trash に(なにも考えずに ^^;)入れていくのは
どうでしょうか? offline 状態のときの removed file と中身が重複
するのがちょっとだけもったいないですけども。
で、MUA の機能を使うなり、手動で copy するなりして、trash から
2001/01 などに refile すると、次に cvs update したときに cvs の
出力で
? 2001/01/14
と '?' がでますから、そいつを parse して mhc の schedule file な
らユーザに
"A)dd CVS repository, R)emove file immediately, M)ove to trash"
と質問して、その通りに処理をするといいと思います。
ちなみに、cvs update したときに '?' が行頭につくのって、
info> `? FILE'
info> 作業ディレクトリに FILE というファイルがあるが、リポジトリには対
info> 応するファイルが無く、CVS が無視するファイルの一覧にも入ってない
info> ことを示します (`-I' オプションの説明の参照と、*Note cvsignore::)。
info> 作業ディレクトリを削除すれば、このファイルは失なわれます。
のときだけですよね?
## 久しぶりに、現実逃避タイムが mhc モードになっている途中なので、
## 上記 elisp はすぐには commit 出来なかったりします。まだ、他の
## ところが中途半端なので。
--
白井秀行@鯉江さんや馬場さんが書いた CVS 本、早く買わないと。。。