]> git.eshelyaron.com Git - emacs.git/commitdiff
* epa-file.el: Respect buffer-file-format when writing
authorDaiki Ueno <ueno@gnu.org>
Tue, 14 Jan 2014 08:41:09 +0000 (17:41 +0900)
committerDaiki Ueno <ueno@gnu.org>
Tue, 14 Jan 2014 08:41:09 +0000 (17:41 +0900)
* epa-file.el (epa-file-write-region): Encode the region according
to `buffer-file-format'.  Problem reported at:
<http://sourceforge.jp/ticket/browse.php?group_id=2267&tid=32917>.

lisp/ChangeLog
lisp/epa-file.el

index e45b0ba0574f81ba500302800eac0f35b955013c..243078ebad4283943cd0ceed5fe8dfe4b9b6170a 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-14  Daiki Ueno  <ueno@gnu.org>
+
+       * epa-file.el (epa-file-write-region): Encode the region according
+       to `buffer-file-format'.  Problem reported at:
+       <http://sourceforge.jp/ticket/browse.php?group_id=2267&tid=32917>.
+
 2014-01-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacs-lisp/edebug.el (edebug--display): Move protective let-binding
index eea458d200dda415b5a72a6f1ada6e3dcb32edd7..20d34f82223cb90480b2c89bb0e23cee32570ef3 100644 (file)
@@ -211,7 +211,8 @@ encryption is used."
         (recipients
          (cond
           ((listp epa-file-encrypt-to) epa-file-encrypt-to)
-          ((stringp epa-file-encrypt-to) (list epa-file-encrypt-to)))))
+          ((stringp epa-file-encrypt-to) (list epa-file-encrypt-to))))
+        buffer)
     (epg-context-set-passphrase-callback
      context
      (cons #'epa-file-passphrase-callback-function
@@ -230,8 +231,18 @@ encryption is used."
                 (unless start
                   (setq start (point-min)
                         end (point-max)))
-                (epa-file--encode-coding-string (buffer-substring start end)
-                                                coding-system))
+                (setq buffer (current-buffer))
+                (with-temp-buffer
+                  (insert-buffer-substring buffer start end)
+                  ;; Translate the region according to
+                  ;; `buffer-file-format', as `write-region' would.
+                  ;; We can't simply do `write-region' (into a
+                  ;; temporary file) here, since it writes out
+                  ;; decrypted contents.
+                  (format-encode-buffer (with-current-buffer buffer
+                                          buffer-file-format))
+                  (epa-file--encode-coding-string (buffer-string)
+                                                  coding-system)))
               (if (or (eq epa-file-select-keys t)
                       (and (null epa-file-select-keys)
                            (not (local-variable-p 'epa-file-encrypt-to