+;;; @ PGP
+;;;
+
+(defvar pgp-function-alist
+ '(
+ ;; for tm-pgp
+ (verify mc-verify "mc-toplev")
+ (decrypt mc-decrypt "mc-toplev")
+ (fetch-key mc-pgp-fetch-key "mc-pgp")
+ (snarf-keys mc-snarf-keys "mc-toplev")
+ ;; for tm-edit
+ (mime-sign tm:mc-pgp-sign-region "tm-edit-mc")
+ (traditional-sign mc-pgp-sign-region "mc-pgp")
+ (encrypt tm:mc-pgp-encrypt-region "tm-edit-mc")
+ (insert-key mc-insert-public-key "mc-toplev")
+ )
+ "Alist of service names vs. corresponding functions and its filenames.
+Each element looks like (SERVICE FUNCTION FILE).
+
+SERVICE is a symbol of PGP processing. It allows `verify', `decrypt',
+`fetch-key', `snarf-keys', `mime-sign', `traditional-sign', `encrypt'
+or `insert-key'.
+
+Function is a symbol of function to do specified SERVICE.
+
+FILE is string of filename which has definition of corresponding
+FUNCTION.")
+
+(defmacro pgp-function (method)
+ "Return function to do service METHOD."
+ (` (car (cdr (assq (, method) (symbol-value 'pgp-function-alist)))))
+ )
+
+(mapcar (function
+ (lambda (method)
+ (autoload (second method)(third method))
+ ))
+ pgp-function-alist)
+
+