(funcall (intern (format "pgg-make-scheme-%s"
,scheme)))))
+;;;###autoload
(defun pgg-encrypt-region (start end rcpts)
(interactive
(list (region-beginning)(region-end)
(insert-buffer-substring pgg-errors-buffer))))
status))
+;;;###autoload
(defun pgg-decrypt-region (start end)
(interactive "r")
(let* ((packet (cdr (assq 1 (pgg-parse-armor-region start end))))
(insert-buffer-substring pgg-errors-buffer))))
status))
-(defun pgg-sign-region (start end)
+;;;###autoload
+(defun pgg-sign-region (start end &optional cleartext)
(interactive "r")
(let* ((entity (pgg-make-scheme pgg-default-scheme))
(status (luna-send entity 'sign-region
- entity start end (interactive-p))))
+ entity start end
+ (or (interactive-p) cleartext))))
(when (interactive-p)
(if status
(progn
(insert-buffer-substring pgg-errors-buffer))))
status))
+;;;###autoload
(defun pgg-verify-region (start end &optional signature fetch)
(interactive "r")
(let* ((packet
status)
(and (stringp key)
(setq key (concat "0x" (pgg-truncate-key-identifier key)))
- (null (pgg-lookup-key-string key))
+ (null (let ((pgg-scheme scheme))
+ (pgg-lookup-key-string key)))
(or fetch (interactive-p))
(y-or-n-p (format "Key %s not found; attempt to fetch? " key))
(setq keyserver
(setq status (luna-send entity 'verify-region
entity start end signature))
(when (interactive-p)
- (if status
- (progn
- (delete-region start end)
- (insert-buffer-substring pgg-output-buffer))
- (with-output-to-temp-buffer pgg-echo-buffer
- (set-buffer standard-output)
- (insert-buffer-substring pgg-errors-buffer))))
+ (with-output-to-temp-buffer pgg-echo-buffer
+ (set-buffer standard-output)
+ (insert-buffer-substring
+ (if status pgg-output-buffer pgg-errors-buffer))
+ ))
status))
+;;;###autoload
(defun pgg-insert-key ()
+ (interactive)
(let ((entity (pgg-make-scheme (or pgg-scheme pgg-default-scheme))))
(luna-send entity 'insert-key entity)))
+;;;###autoload
(defun pgg-snarf-keys-region (start end)
- (let ((entity (pgg-make-scheme (or pgg-scheme pgg-default-scheme))))
- (luna-send entity 'snarf-keys-region entity start end)))
+ (interactive "r")
+ (let* ((entity (pgg-make-scheme (or pgg-scheme pgg-default-scheme)))
+ (status (luna-send entity 'snarf-keys-region entity start end)))
+ (when (interactive-p)
+ (with-output-to-temp-buffer pgg-echo-buffer
+ (set-buffer standard-output)
+ (insert-buffer-substring
+ (if status pgg-output-buffer pgg-errors-buffer))
+ ))
+ status))
(defun pgg-lookup-key-string (string &optional type)
(let ((entity (pgg-make-scheme (or pgg-scheme pgg-default-scheme))))
(defun pgg-remove-passphrase-cache (key)
(unintern key pgg-passphrase-cache))
+(defmacro pgg-convert-lbt-region (start end lbt)
+ `(let ((pgg-conversion-end (set-marker (make-marker) ,end)))
+ (goto-char ,start)
+ (case ,lbt
+ (CRLF
+ (while (progn
+ (end-of-line)
+ (> (marker-position pgg-conversion-end) (point)))
+ (insert "\r")
+ (forward-line 1)))
+ (LF
+ (while (re-search-forward "\r$" pgg-conversion-end t)
+ (replace-match ""))))
+ ))
+
+(put 'pgg-as-lbt 'lisp-indent-function 3)
+
+(defmacro pgg-as-lbt (start end lbt &rest body)
+ `(let ((inhibit-read-only t)
+ buffer-read-only
+ buffer-undo-list)
+ (pgg-convert-lbt-region ,start ,end ,lbt)
+ (let ((,end (point)))
+ ,@body)
+ (push nil buffer-undo-list)
+ (undo)))
+
;;; @ postprocess macros
;;;