* lpath.el: Fbind string-as-multibyte for XEmacs.
authorKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 27 Apr 2006 07:00:49 +0000 (07:00 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Thu, 27 Apr 2006 07:00:49 +0000 (07:00 +0000)
* mml1991.el (mml1991-pgg-sign): No need to load pgg.el, which is always loaded
 by way of gnus-art.el -> mm-uu.el -> mml2015.el.
(mml1991-pgg-encrypt): Ditto.

* pgg-gpg.el (pgg-string-to-multibyte): New function.
(pgg-gpg-process-sentinel): Make sure pgg-output-buffer is always a multibyte
 buffer.

* pgg-pgp.el (pgg-pgp-process-region): Ditto.
(pgg-pgp-lookup-key): Ditto.

* pgg-pgp5.el (pgg-pgp5-process-region): Ditto.
(pgg-pgp5-lookup-key): Ditto.

* pgg.el (pgg-fetch-key): Ditto.

lisp/ChangeLog
lisp/lpath.el
lisp/mml1991.el
lisp/pgg-gpg.el
lisp/pgg-pgp.el
lisp/pgg-pgp5.el
lisp/pgg.el

index 5b0b17a..dac0ed2 100644 (file)
@@ -1,3 +1,23 @@
+2006-04-27  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * lpath.el: Fbind string-as-multibyte for XEmacs.
+
+       * mml1991.el (mml1991-pgg-sign): No need to load pgg.el, which is
+       always loaded by way of gnus-art.el -> mm-uu.el -> mml2015.el.
+       (mml1991-pgg-encrypt): Ditto.
+
+       * pgg-gpg.el (pgg-string-to-multibyte): New function.
+       (pgg-gpg-process-sentinel): Make sure pgg-output-buffer is always
+       a multibyte buffer.
+
+       * pgg-pgp.el (pgg-pgp-process-region): Ditto.
+       (pgg-pgp-lookup-key): Ditto.
+
+       * pgg-pgp5.el (pgg-pgp5-process-region): Ditto.
+       (pgg-pgp5-lookup-key): Ditto.
+
+       * pgg.el (pgg-fetch-key): Ditto.
+
 2006-04-26  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * message.el (message-user-organization-file): Check several
index d8d880f..1299b68 100644 (file)
@@ -35,8 +35,9 @@
                     find-coding-systems-region find-coding-systems-string
                     mail-abbrevs-setup mouse-minibuffer-check mouse-movement-p
                     mouse-scroll-subr overlay-lists posn-point posn-window
-                    read-event set-buffer-multibyte
-                    select-frame-set-input-focus track-mouse window-edges))
+                    read-event select-frame-set-input-focus
+                    set-buffer-multibyte string-as-multibyte track-mouse
+                    window-edges))
       (maybe-bind '(adaptive-fill-first-line-regexp
                    buffer-display-table buffer-file-coding-system
                    current-language-environment cursor-in-non-selected-windows
index 23953cd..4db3540 100644 (file)
   (defvar pgg-output-buffer))
 
 (defun mml1991-pgg-sign (cont)
-  ;; Make sure to load pgg.el before binding pgg-* variables.
-  (require 'pgg)
   (let ((pgg-text-mode t)
        (pgg-default-user-id (or (message-options-get 'mml-sender)
                                 pgg-default-user-id))
       (delete-region (point-min) (point))
       (when cte
        (mm-decode-content-transfer-encoding (intern (downcase cte))))))
-  (unless (progn
-           ;; Make sure to load pgg.el before binding `pgg-text-mode'.
-           (require 'pgg)
-           (let ((pgg-text-mode t))
-             (pgg-encrypt-region
-              (point-min) (point-max)
-              (split-string
-               (or
-                (message-options-get 'message-recipients)
-                (message-options-set 'message-recipients
-                                     (read-string "Recipients: ")))
-               "[ \f\t\n\r\v,]+")
-              sign)))
+  (unless (let ((pgg-text-mode t))
+           (pgg-encrypt-region
+            (point-min) (point-max)
+            (split-string
+             (or
+              (message-options-get 'message-recipients)
+              (message-options-set 'message-recipients
+                                   (read-string "Recipients: ")))
+             "[ \f\t\n\r\v,]+")
+            sign))
     (pop-to-buffer pgg-errors-buffer)
     (error "Encrypt error"))
   (delete-region (point-min) (point-max))
index 5cc48c5..d63c8bd 100644 (file)
          (forward-line))
        (setq pgg-gpg-read-point (point)))))
 
+(eval-and-compile
+  (cond ((and (fboundp 'string-to-multibyte)
+             (subrp (symbol-function 'string-to-multibyte)))
+        (defalias 'pgg-string-to-multibyte 'string-to-multibyte))
+       ((and (fboundp 'string-as-multibyte)
+             (subrp (symbol-function 'string-as-multibyte)))
+        (defun pgg-string-to-multibyte (string) "\
+Return a multibyte string with the same individual chars as string."
+          (mapconcat
+           (lambda (ch) (string-as-multibyte (char-to-string ch)))
+           string "")))
+       (t
+        (defalias 'pgg-string-to-multibyte 'identity))))
+
 (defun pgg-gpg-process-sentinel (process status)
   (if (buffer-live-p (process-buffer process))
       (save-excursion
        (erase-buffer)
        (insert-buffer-substring (process-buffer process))
        ;; Read the contents of the output file to pgg-output-buffer.
-       (set-buffer (get-buffer-create pgg-output-buffer))
+       (set-buffer (let ((default-enable-multibyte-characters t))
+                     (get-buffer-create pgg-output-buffer)))
        (buffer-disable-undo)
        (erase-buffer)
        (if (equal status "finished\n")
                   (with-current-buffer (process-buffer process)
                     pgg-gpg-output-file-name)))
              (when (file-exists-p output-file-name)
+               ;; Buffer's multibyteness might be turned off after
+               ;; inserting file's contents, as the case may be.
                (let ((coding-system-for-read (if pgg-text-mode
                                                  'raw-text
                                                'binary)))
                  (insert-file-contents output-file-name))
+               (when (and (fboundp 'set-buffer-multibyte)
+                          (subrp (symbol-function 'set-buffer-multibyte))
+                          (not enable-multibyte-characters))
+                 (if (zerop (buffer-size))
+                     (set-buffer-multibyte t)
+                   (insert (pgg-string-to-multibyte
+                            (prog1
+                                (buffer-string)
+                              (erase-buffer)
+                              (set-buffer-multibyte t))))))
                (delete-file output-file-name))))
        (kill-buffer (process-buffer process)))))
 
index d4bfb7b..df58a86 100644 (file)
@@ -73,7 +73,8 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
         (errors-buffer pgg-errors-buffer)
         (process-connection-type nil)
         process status exit-status)
-    (with-current-buffer (get-buffer-create output-buffer)
+    (with-current-buffer (let ((default-enable-multibyte-characters t))
+                          (get-buffer-create output-buffer))
       (buffer-disable-undo)
       (erase-buffer))
     (when passphrase
@@ -117,7 +118,8 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
 (defun pgg-pgp-lookup-key (string &optional type)
   "Search keys associated with STRING."
   (let ((args (list "+batchmode" "+language=en" "-kv" string)))
-    (with-current-buffer (get-buffer-create pgg-output-buffer)
+    (with-current-buffer (let ((default-enable-multibyte-characters t))
+                          (get-buffer-create pgg-output-buffer))
       (buffer-disable-undo)
       (erase-buffer)
       (apply #'call-process pgg-pgp-program nil t nil args)
index 75c96e5..a21e244 100644 (file)
@@ -88,7 +88,8 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
         (errors-buffer pgg-errors-buffer)
         (process-connection-type nil)
         process status exit-status)
-    (with-current-buffer (get-buffer-create output-buffer)
+    (with-current-buffer (let ((default-enable-multibyte-characters t))
+                          (get-buffer-create output-buffer))
       (buffer-disable-undo)
       (erase-buffer))
     (when passphrase
@@ -132,7 +133,8 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"."
 (defun pgg-pgp5-lookup-key (string &optional type)
   "Search keys associated with STRING."
   (let ((args (list "+language=en" "-l" string)))
-    (with-current-buffer (get-buffer-create pgg-output-buffer)
+    (with-current-buffer (let ((default-enable-multibyte-characters t))
+                          (get-buffer-create pgg-output-buffer))
       (buffer-disable-undo)
       (erase-buffer)
       (apply #'call-process pgg-pgp5-pgpk-program nil t nil args)
index 468fbc6..e76d04e 100644 (file)
@@ -452,7 +452,8 @@ within the region."
 
 (defun pgg-fetch-key (keyserver key)
   "Attempt to fetch a KEY from KEYSERVER for addition to PGP or GnuPG keyring."
-  (with-current-buffer (get-buffer-create pgg-output-buffer)
+  (with-current-buffer (let ((default-enable-multibyte-characters t))
+                        (get-buffer-create pgg-output-buffer))
     (buffer-disable-undo)
     (erase-buffer)
     (let ((proto (if (string-match "^[a-zA-Z\\+\\.\\\\-]+:" keyserver)