[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33205: 26.1; unibyte/multibyte missing in rx.el
From: |
Eli Zaretskii |
Subject: |
bug#33205: 26.1; unibyte/multibyte missing in rx.el |
Date: |
Sat, 29 Dec 2018 11:23:18 +0200 |
> From: Mattias Engdegård <mattiase@acm.org>
> Date: Mon, 19 Nov 2018 21:07:39 +0100
> Cc: 33205@debbugs.gnu.org
>
> Perhaps you want me to open a new bug for the above? I'm attaching a patch
> all the same, but you may prefer doing it differently.
Thanks, I have some comments.
First, please provide a ChangeLog-style commit log message describing
the changes. See CONTRIBUTE for more details.
> + "Turn a string argument to `any' into a list of characters and,
> representing
> +ranges, dotted pairs of characters. The original order is not preserved."
The first line of a doc string should be a single full sentence, and
it should mention the arguments of the function. Also, the first
sentence confused me: what do you mean by this part:
"... and, representing ranges, dotted pairs of characters"
Finally, please use the US English convention of leaving 2 spaces
between sentences in the documentation.
> + (let ((decode-char
> + ;; Make sure raw bytes are decoded as such, to avoid confusion with
> + ;; U+0080..U+00FF.
> + (if (multibyte-string-p str)
> + #'identity
> + (lambda (c) (if (and (>= c #x80) (<= c #xff))
> + (+ c #x3fff00)
> + c))))
> + (len (length str))
> + (i 0)
> + (ret nil))
> + (while (< i len)
> + (cond ((and (< i (- len 2))
> + (= (aref str (+ i 1)) ?-))
> + ;; Range.
> + (let ((start (funcall decode-char (aref str i)))
> + (end (funcall decode-char (aref str (+ i 2)))))
> + (cond ((< start end) (push (cons start end) ret))
> + ((= start end) (push start ret)))
> + (setq i (+ i 3))))
> + (t
> + ;; Single character.
> + (push (funcall decode-char (aref str i)) ret)
> + (setq i (+ i 1)))))
> + ret))
This seems to have dropped the validity check which signaled an error
in the original code? Any reason for that?
Thanks.