Commit 3a99bf64 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

Bug fix for finding coding system. New COPY-FUNCTION feature

for epa-decrypt-region.
parent 3ebec551
2011-08-16 Richard Stallman <>
* epa.el (epa-decrypt-region): New arg COPY-FUNCTION.
(epa--find-coding-system-for-mime-charset): Fix the non-xemacs case.
(epa-decrypt-armor-in-region): Make error message clearer.
2011-08-15 Stefan Monnier <>
* minibuffer.el (completion-pcm--merge-completions): Don't merge "a1b"
......@@ -803,10 +803,12 @@ If no one is selected, symmetric encryption will be performed. ")))
(file-name-nondirectory cipher))))
(defun epa-decrypt-region (start end)
(defun epa-decrypt-region (start end &optional copy-function)
"Decrypt the current region between START and END.
If COPY-FUNCTION is non-nil, call it to copy the current buffer
into some other buffer for the output; it should return that buffer.
Don't use this command in Lisp programs!
Be careful about using this command in Lisp programs!
Since this function operates on regions, it does some tricks such
as coding-system detection and unibyte/multibyte conversion. If
you are sure how the data in the region should be treated, you
......@@ -844,10 +846,17 @@ For example:
(delete-region start end)
(goto-char start)
(insert plain))
(with-output-to-temp-buffer "*Temp*"
(set-buffer standard-output)
(insert plain)
(if copy-function
(with-current-buffer (funcall copy-function)
(let ((inhibit-read-only t)
(delete-region start end)
(goto-char start)
(insert plain)))
(with-output-to-temp-buffer "*Temp*"
(set-buffer standard-output)
(insert plain)
(if (epg-context-result-for context 'verify)
(epa-display-info (epg-verify-result-to-string
(epg-context-result-for context 'verify)))))))
......@@ -856,12 +865,13 @@ For example:
(if (featurep 'xemacs)
(if (fboundp 'find-coding-system)
(find-coding-system mime-charset))
;; Find the first coding system which corresponds to MIME-CHARSET.
(let ((pointer (coding-system-list)))
(while (and pointer
(eq (coding-system-get (car pointer) 'mime-charset)
(not (eq (coding-system-get (car pointer) 'mime-charset)
(setq pointer (cdr pointer)))
(car pointer))))
(defun epa-decrypt-armor-in-region (start end)
......@@ -880,7 +890,7 @@ See the reason described in the `epa-decrypt-region' documentation."
armor-end (re-search-forward "^-----END PGP MESSAGE-----$"
nil t))
(unless armor-end
(error "No armor tail"))
(error "Encryption armor beginning has no matching end"))
(goto-char armor-start)
(let ((coding-system-for-read
(or coding-system-for-read
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment