"Regexp which matches filenames to be encrypted with GnuPG."
:type 'regexp
:group 'epa-file)
+
+(defvar epa-file-handler
+ (cons epa-file-name-regexp 'epa-file-handler))
(defvar epa-file-passphrase-alist nil)
-(defun epa-file-passphrase-callback-function (key-id file)
- (if (eq key-id 'SYM)
+(defun epa-file-passphrase-callback-function (file)
+ (if (eq epg-key-id 'SYM)
(let ((entry (assoc file epa-file-passphrase-alist))
passphrase)
(or (copy-sequence (cdr entry))
(setq entry (list file)
epa-file-passphrase-alist (cons entry
epa-file-passphrase-alist)))
- (setq passphrase (epg-passphrase-callback-function key-id nil))
+ (setq passphrase (epg-passphrase-callback-function nil))
(setcdr entry (copy-sequence passphrase))
passphrase)))
- (epg-passphrase-callback-function key-id nil)))
+ (epg-passphrase-callback-function nil)))
(defun epa-file-handler (operation &rest args)
(save-match-data
(setq string
(epg-encrypt-string
context
- (encode-coding-string (buffer-string) coding-system)
+ (if (stringp start)
+ (encode-coding-string start coding-system)
+ (encode-coding-string (buffer-substring start end)
+ coding-system))
(mapcar (lambda (key)
(epg-sub-key-id (car (epg-key-sub-key-list key))))
(unless (assoc file epa-file-passphrase-alist)
(message "Wrote %s" buffer-file-name))))
(put 'write-region 'epa-file 'epa-file-write-region)
+;;;###autoload
+(defun epa-file-enable ()
+ (interactive)
+ (if (memq epa-file-handler file-name-handler-alist)
+ (message "`epa-file' already enabled")
+ (setq file-name-handler-alist
+ (cons epa-file-handler file-name-handler-alist))
+ (message "`epa-file' enabled")))
+
+;;;###autoload
+(defun epa-file-disable ()
+ (interactive)
+ (if (memq epa-file-handler file-name-handler-alist)
+ (progn
+ (setq file-name-handler-alist
+ (delq epa-file-handler file-name-handler-alist))
+ (message "`epa-file' disabled"))
+ (message "`epa-file' already disabled")))
+
(provide 'epa-file)
;;; epa-file.el ends here