+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
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
(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))
(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)))))
(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
(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)
(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
(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)
(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)