(defvar gpg-work-directory (expand-file-name "~/.gpg.work")
"*Work directory of GPG.")
(defalias 'gpg-make-temp-file1
(if (fboundp 'make-temp-file) 'make-temp-file 'make-temp-name))
(defun gpg-make-temp-file (file)
(cond
((and (file-exists-p gpg-work-directory)
(file-directory-p gpg-work-directory))
(set-file-modes gpg-work-directory ?\700))
((not (file-exists-p gpg-work-directory))
(make-directory gpg-work-directory)
(set-file-modes gpg-work-directory ?\700))
((and (file-exists-p gpg-work-directory)
(file-writable-p gpg-work-directory)
(y-or-n-p (format "%s is not directory. Remove it? " gpg-work-directory)))
(delete-file gpg-work-directory)
(make-directory gpg-work-directory)
(set-file-modes gpg-work-directory ?\700))
(t
(error (format "%s has something error" gpg-work-directory))))
(gpg-make-temp-file1 (expand-file-name (file-name-nondirectory file)
gpg-work-directory)))
こんなことをやりつつ、他のリモートファイルもケアして、gpg.el の機能や gpg for Dired が tramp 経由でも動くようにしてみたけど、もうちょっといろいろやらないと公開できないなぁ。
一時ファイルを作るのが切ないので、find-fileしてバッファをgpgに投げつけるようなコードをスクラッチから書こうとしてみたんですが、んー、どうもうまくいかない。
stdin/out を使うのですよね。そっちの方がおしゃれだからぼくもやってみます。
簡単な試験コード書いて実験したんですけど、ローカルのファイルだとうまくいく。でも、リモートだとgpgに投げるところで刺さるんだなあ。なぞ… というわけで、白井さんのコードに期待(他力本願
うーむ、最初 default-directory かな?と思ったのですが、違うみたいですね。がんばります。