bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1770: 23.0.60; (message-check 'illegible-text ...) fails on eight-bi


From: Reiner Steib
Subject: bug#1770: 23.0.60; (message-check 'illegible-text ...) fails on eight-bit chars
Date: Fri, 02 Jan 2009 23:09:41 +0100
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/22.1 (gnu/linux)

Package: emacs,gnus
Version: 23.0.60

When replying to an article with a bogus charset declaration
(e.g. charset="ISO 8859-15" produced by Knode; "ISO-8859-15" would be
correct. An example in gmane.test is
<address@hidden>) with Gnus, the buffer
contains eight-bit-control characters.

When sending the reply, Gnus asks: "Use ASCII as charset? " (see
`mml-parse-1').

Option 1: Answer `y'.

Result: The reply is sent with charset=us-ascii, but it contains 8bit
        characters.


Option 2: Answer `n'.  The Gnus asks a second time.  Answer `n' again.

Result: The same as above.
        See <address@hidden> in gmane.test


Expected behavior:

This following code from `message-fix-before-sending' should kick in:
(This is what happens in Emacs 22 with current Gnus CVS trunk,
i.e. the same Gnus code base as Emacs 23.)

  (message-check 'illegible-text
    (let (char found choice)
      (message-goto-body)
      (while (progn
               (skip-chars-forward mm-7bit-chars)
               (when (get-text-property (point) 'no-illegible-text)
                 ;; There is a signed or encrypted raw message part
                 ;; that is considered to be safe.
                 (goto-char (or (next-single-property-change
                                 (point) 'no-illegible-text)
                                (point-max))))
               (setq char (char-after)))
        (when (or (< (mm-char-int char) 128)
                  (and (mm-multibyte-p)
                       (memq (char-charset char)
                             '(eight-bit-control eight-bit-graphic
                                                 control-1))
                       (not (get-text-property
                             (point) 'untranslated-utf-8))))
          (message-overlay-put (message-make-overlay (point) (1+ (point)))
                               'face 'highlight)
          (setq found t))
        (forward-char))
      (when found
        (setq choice
              (gnus-multiple-choice
               "Non-printable characters found.  Continue sending?"
               `((?d "Remove non-printable characters and send")
                 (?r ,(format
                       "Replace non-printable characters with \"%s\" and send"
                       message-replacement-char))
                 (?i "Ignore non-printable characters and send")
                 (?e "Continue editing"))))
        (if (eq choice ?e)
          (error "Non-printable characters"))
        (message-goto-body)
        (skip-chars-forward mm-7bit-chars)
        (while (not (eobp))
          (when (let ((char (char-after)))
                  (or (< (mm-char-int char) 128)
                      (and (mm-multibyte-p)
                           ;; FIXME: Wrong for Emacs 23 (unicode) and for
                           ;; things like undecable utf-8.  Should at least
                           ;; use find-coding-systems-region.
                           (memq (char-charset char)
                                 '(eight-bit-control eight-bit-graphic
                                                     control-1))
                           (not (get-text-property
                                 (point) 'untranslated-utf-8)))))
            (if (eq choice ?i)
                (message-kill-all-overlays)
              (delete-char 1)
              (when (eq choice ?r)
                (insert message-replacement-char))))
          (forward-char)
          (skip-chars-forward mm-7bit-chars)))))

In Emacs 23, (char-charset char) returns `eight-bit'.  Is adding
eight-bit next to eight-bit-graphic sufficient?  The comment (by Dave
Love, CC-ed if I got X-Debbugs-CC right) seems to suggest that there's
more to be done.

Bye, Reiner.



In GNU Emacs 23.0.60.1 (i686-pc-linux-gnu, GTK+ Version 2.12.9)
 of 2009-01-01 on primula
Windowing system distributor `The X.Org Foundation', version 11.0.10400090
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/






reply via email to

[Prev in Thread] Current Thread [Next in Thread]