Package: emacs;
Reported by: Konstantin Kharlamov <hi-angel <at> yandex.ru>
Date: Tue, 11 Jun 2019 12:00:02 UTC
Severity: wishlist
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36167 in the body.
You can then email your comments to 36167 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 12:00:03 GMT) Full text and rfc822 format available.Konstantin Kharlamov <hi-angel <at> yandex.ru>
:bug-gnu-emacs <at> gnu.org
.
(Tue, 11 Jun 2019 12:00:03 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: bug-gnu-emacs <at> gnu.org Subject: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 14:59:46 +0300
Hopefully, this is more readable compared to older "[0-9a-fA-F]", because the intention is immediately obvious. Fun fact: initially I started it because on my older Emacs this resulted in better performance; the difference was about 10x times. But I can't reproduce this on the current master anymore, i.e. the performance matches. Oh, well. I'm thus not sending the patch replacing [0-9] with [[:digit:]] because in terms of readability the intention is clear there, however replacing the hex regexes should still make code more readable. P.S.: I'm not sure if the commit message looks okay, comments are welcome.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 12:04:01 GMT) Full text and rfc822 format available.Message #8 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: 36167 <at> debbugs.gnu.org Subject: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) Date: Tue, 11 Jun 2019 15:03:39 +0300
Eh, sorry, git send-email is broken, complains on something about perl SSL. This may take some time.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 12:30:02 GMT) Full text and rfc822 format available.Message #11 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> To: 36167 <at> debbugs.gnu.org Subject: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 15:29:25 +0300
* etc/schema/od-schema-v1.2-os.rnc: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/calc/calc-aent.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/calc/calc-ext.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/calc/calc-lang.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/cedet/semantic/java.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/cedet/semantic/lex.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/emulation/cua-rect.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/gnus/gnus-art.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/gnus/mml-sec.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/gnus/nneething.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/international/mule-cmds.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/net/shr-color.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/nxml/rng-cmpct.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/nxml/rng-uri.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/nxml/rng-xsd.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/nxml/xmltok.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/org/org-mobile.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/ada-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/cc-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/cperl-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/ebnf-dtd.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/hideif.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/progmodes/prolog.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/textmodes/css-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/textmodes/sgml-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/version.el: replace [0-9a-fA-F] with [[:xdigit:]] * lisp/xml.el: replace [0-9a-fA-F] with [[:xdigit:]] * test/src/emacs-module-tests.el: replace [0-9a-fA-F] with [[:xdigit:]] --- etc/schema/od-schema-v1.2-os.rnc | 2 +- lisp/calc/calc-aent.el | 2 +- lisp/calc/calc-ext.el | 4 ++-- lisp/calc/calc-lang.el | 2 +- lisp/cedet/semantic/java.el | 4 ++-- lisp/cedet/semantic/lex.el | 4 ++-- lisp/emulation/cua-rect.el | 2 +- lisp/gnus/gnus-art.el | 8 ++++---- lisp/gnus/mml-sec.el | 2 +- lisp/gnus/nneething.el | 2 +- lisp/international/mule-cmds.el | 2 +- lisp/net/shr-color.el | 2 +- lisp/nxml/rng-cmpct.el | 2 +- lisp/nxml/rng-uri.el | 10 +++++----- lisp/nxml/rng-xsd.el | 2 +- lisp/nxml/xmltok.el | 2 +- lisp/org/org-mobile.el | 2 +- lisp/progmodes/ada-mode.el | 2 +- lisp/progmodes/cc-mode.el | 16 ++++++++-------- lisp/progmodes/cperl-mode.el | 8 ++++---- lisp/progmodes/ebnf-dtd.el | 14 +++++++------- lisp/progmodes/hideif.el | 4 ++-- lisp/progmodes/prolog.el | 2 +- lisp/textmodes/css-mode.el | 6 +++--- lisp/textmodes/sgml-mode.el | 2 +- lisp/version.el | 2 +- lisp/xml.el | 8 ++++---- test/src/emacs-module-tests.el | 2 +- 28 files changed, 60 insertions(+), 60 deletions(-) diff --git a/etc/schema/od-schema-v1.2-os.rnc b/etc/schema/od-schema-v1.2-os.rnc index 8d679d62e4e..36e4645d7ee 100644 --- a/etc/schema/od-schema-v1.2-os.rnc +++ b/etc/schema/od-schema-v1.2-os.rnc @@ -6233,7 +6233,7 @@ signedZeroToHundredPercent = relativeLength = xsd:string { pattern = "[0-9]+\*" } coordinate = length distance = length -color = xsd:string { pattern = "#[0-9a-fA-F]{6}" } +color = xsd:string { pattern = "#[[:xdigit:]]{6}" } angle = xsd:string CURIE = xsd:string { pattern = "(([\i-[:]][\c-[:]]*)?:)?.+" minLength = "1" } diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index f16e665fc34..f1ef5c170bc 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el @@ -728,7 +728,7 @@ math-read-token math-exp-str (1- math-exp-pos)) (1- math-exp-pos)))))) (or (and (memq calc-language calc-lang-c-type-hex) - (eq (string-match "0[xX][0-9a-fA-F]+" math-exp-str + (eq (string-match "0[xX][[:xdigit:]]+" math-exp-str math-exp-pos) math-exp-pos)) (string-match "_?\\([0-9]+.?0*@ *\\)?\\([0-9]+.?0*' *\\)?\\(0*\\([2-9]\\|1[0-4]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-dA-D.]+[eE][-+_]?[0-9]+\\|0*\\([2-9]\\|[0-2][0-9]\\|3[0-6]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-zA-Zα-ωΑ-Ω:.]+\\|[0-9]+:[0-9:]+\\|[0-9.]+\\([eE][-+_]?[0-9]+\\)?\"?\\)?" diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 1456fb28570..c7b4c3b091d 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el @@ -3019,13 +3019,13 @@ math-read-number-fancy ;; C language hexadecimal notation ((and (eq calc-language 'c) - (string-match "^0[xX]\\([0-9a-fA-F]+\\)$" s)) + (string-match "^0[xX]\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) ;; Pascal language hexadecimal notation ((and (eq calc-language 'pascal) - (string-match "^\\$\\([0-9a-fA-F]+\\)$" s)) + (string-match "^\\$\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el index ee107df39c1..4a9771d7438 100644 --- a/lisp/calc/calc-lang.el +++ b/lisp/calc/calc-lang.el @@ -243,7 +243,7 @@ calc-pascal-language (put 'pascal 'math-lang-read-symbol '((?\$ (eq (string-match - "\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" + "\\(\\$[[:xdigit:]]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" math-exp-str math-exp-pos) math-exp-pos) (setq math-exp-token 'number diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el index 54cce965459..7f9c93b906f 100644 --- a/lisp/cedet/semantic/java.el +++ b/lisp/cedet/semantic/java.el @@ -51,7 +51,7 @@ semantic-java-number-regexp "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -63,7 +63,7 @@ semantic-java-number-regexp [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el index 2690122f067..f1c6b014182 100644 --- a/lisp/cedet/semantic/lex.el +++ b/lisp/cedet/semantic/lex.el @@ -596,7 +596,7 @@ semantic-lex-number-expression "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -609,7 +609,7 @@ semantic-lex-number-expression [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el index 706634a5017..1a19cc2910e 100644 --- a/lisp/emulation/cua-rect.el +++ b/lisp/emulation/cua-rect.el @@ -1127,7 +1127,7 @@ cua-incr-rectangle (cua--rectangle-operation 'keep nil t 1 nil (lambda (_s e _l _r) (cond - ((re-search-forward "0x\\([0-9a-fA-F]+\\)" e t) + ((re-search-forward "0x\\([[:xdigit:]]+\\)" e t) (let* ((txt (cua--filter-buffer-noprops (match-beginning 1) (match-end 1))) (n (string-to-number txt 16)) (fmt (format "0x%%0%dx" (length txt)))) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index d826faca5bd..e6a75660fe8 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -7426,10 +7426,10 @@ gnus-button-mid-or-mail-heuristic-alist (-2.0 . "^[0-9]") (-1.0 . "^[0-9][0-9]") ;; - ;; -3.0 /^[0-9][0-9a-fA-F]{2,2}/; - (-3.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") - ;; -5.0 /^[0-9][0-9a-fA-F]{3,3}/; - (-5.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") + ;; -3.0 /^[0-9][[:xdigit:]]{2,2}/; + (-3.0 . "^[0-9][[:xdigit:]][[:xdigit:]][^0-9a-fA-F]") + ;; -5.0 /^[0-9][[:xdigit:]]{3,3}/; + (-5.0 . "^[0-9][[:xdigit:]][[:xdigit:]][[:xdigit:]][^0-9a-fA-F]") ;; (-3.0 . "[0-9][0-9][0-9][0-9][0-9][^0-9].*@") ;; "[0-9]{5,}.*\@" (-3.0 . "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9].*@") diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el index db7489fbf1c..02a27b367cd 100644 --- a/lisp/gnus/mml-sec.el +++ b/lisp/gnus/mml-sec.el @@ -725,7 +725,7 @@ mml-secure-find-usable-keys is expired or revoked. If optional JUSTONE is not nil, return the first key instead of a list." (let* ((keys (epg-list-keys context name)) - (iskeyid (string-match "\\(0x\\)?\\([0-9a-fA-F]\\{8,\\}\\)" name)) + (iskeyid (string-match "\\(0x\\)?\\([[:xdigit:]]\\{8,\\}\\)" name)) (fingerprint (match-string 2 name)) result) (when (and iskeyid (>= (length keys) 2)) diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el index f64007aaf79..c3d511bc6e0 100644 --- a/lisp/gnus/nneething.el +++ b/lisp/gnus/nneething.el @@ -297,7 +297,7 @@ nneething-encode-file-name (defun nneething-decode-file-name (file &optional coding-system) "Decode the name of the FILE is encoded in CODING-SYSTEM." (let ((pos 0) buf) - (while (string-match "%\\([0-9a-fA-F][0-9a-fA-F]\\)" file pos) + (while (string-match "%\\([[:xdigit:]][[:xdigit:]]\\)" file pos) (setq buf (cons (string (string-to-number (match-string 1 file) 16)) (cons (substring file pos (match-beginning 0)) buf)) pos (match-end 0))) diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 47b07479c3c..1edf80d14c8 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -3079,7 +3079,7 @@ read-char-by-name (char (cond ((char-from-name input t)) - ((string-match-p "\\`[0-9a-fA-F]+\\'" input) + ((string-match-p "\\`[[:xdigit:]]+\\'" input) (ignore-errors (string-to-number input 16))) ((string-match-p "\\`#\\([bBoOxX]\\|[0-9]+[rR]\\)[0-9a-zA-Z]+\\'" input) diff --git a/lisp/net/shr-color.el b/lisp/net/shr-color.el index 2d6cf68d8ff..af0b99c76f4 100644 --- a/lisp/net/shr-color.el +++ b/lisp/net/shr-color.el @@ -235,7 +235,7 @@ shr-color->hexadecimal (cond ;; Hexadecimal color: #abc or #aabbcc ((string-match - "\\(#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?\\)" + "\\(#[[:xdigit:]]\\{3\\}[[:xdigit:]]\\{3\\}?\\)" color) (match-string 1 color)) ;; rgb() or rgba() colors diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el index d36f9d92f26..60c871990e1 100644 --- a/lisp/nxml/rng-cmpct.el +++ b/lisp/nxml/rng-cmpct.el @@ -369,7 +369,7 @@ rng-c-process-escapes (and pos (rng-c-error "Nul character found (binary file?)"))) (let ((offset 0)) - (while (re-search-forward "\\\\x+{\\([0-9a-fA-F]+\\)}" + (while (re-search-forward "\\\\x+{\\([[:xdigit:]]+\\)}" (point-max) t) (let* ((ch (decode-char 'ucs (string-to-number (match-string 1) 16)))) diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el index 798475bbc3d..5a67cc7f145 100644 --- a/lisp/nxml/rng-uri.el +++ b/lisp/nxml/rng-uri.el @@ -68,7 +68,7 @@ rng-uri-pattern-file-name-replace-match ;; pattern is either nil or match or replace (defun rng-uri-file-name-1 (uri pattern) - (unless (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F]{2}\\)*\\'" uri) + (unless (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]]{2}\\)*\\'" uri) (rng-uri-error "Bad escapes in URI `%s'" uri)) (setq uri (rng-uri-unescape-multibyte uri)) (let* ((components @@ -299,7 +299,7 @@ rng-join-path (mapconcat 'identity segments "/"))) (defun rng-uri-unescape-multibyte (str) - (replace-regexp-in-string "\\(?:%[89a-fA-F][0-9a-fA-F]\\)+" + (replace-regexp-in-string "\\(?:%[89a-fA-F][[:xdigit:]]\\)+" 'rng-multibyte-percent-decode str)) @@ -310,7 +310,7 @@ rng-multibyte-percent-decode 'utf-8)) (defun rng-uri-unescape-unibyte (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]" (lambda (h) (string-to-number (substring h 1) 16)) str @@ -318,7 +318,7 @@ rng-uri-unescape-unibyte t)) (defun rng-uri-unescape-unibyte-match (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]\\|[^%]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") "\\([^/]*\\)" @@ -333,7 +333,7 @@ rng-uri-unescape-unibyte-match (defun rng-uri-unescape-unibyte-replace (str next-match-index) (replace-regexp-in-string - "%[0-7][0-9a-fA-F]\\|[^%]" + "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") (let ((n next-match-index)) diff --git a/lisp/nxml/rng-xsd.el b/lisp/nxml/rng-xsd.el index f308b049f3b..c0c679532ac 100644 --- a/lisp/nxml/rng-xsd.el +++ b/lisp/nxml/rng-xsd.el @@ -360,7 +360,7 @@ rng-xsd-base64-binary-length n))) (defun rng-xsd-convert-any-uri (string) - (and (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F][0-9a-fA-F]\\)*\\'" string) + (and (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]][[:xdigit:]]\\)*\\'" string) (string-match "\\`[^#]*\\(?:#[^#]*\\)?\\'" string) (string-match "\\`\\(?:[a-zA-Z][-+.A-Za-z0-9]*:.+\\|[^:]*\\(?:[#/?].*\\)?\\)\\'" string) string)) diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el index afa33e064f3..3cab5ed9b7b 100644 --- a/lisp/nxml/xmltok.el +++ b/lisp/nxml/xmltok.el @@ -413,7 +413,7 @@ xmltok-forward (xmltok-g decimal-ref-close ";") opt)) (hex-ref (xmltok+ "x" open - (xmltok-g hex "[0-9a-fA-F]" +) + (xmltok-g hex "[[:xdigit:]]" +) (xmltok-g hex-ref-close ";") opt close opt)) (char-ref diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index 8b4e8953889..e24ee8ed7c5 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -761,7 +761,7 @@ org-mobile-update-checksum-for-capture-file (buffer (find-file-noselect file))) (when buffer (with-current-buffer buffer - (when (re-search-forward (concat "\\([0-9a-fA-F]\\{30,\\}\\).*?" + (when (re-search-forward (concat "\\([[:xdigit:]]\\{30,\\}\\).*?" (regexp-quote org-mobile-capture-file) "[ \t]*$") nil t) (goto-char (match-beginning 1)) diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el index 77c1e5e2d87..ded9a08d0ee 100644 --- a/lisp/progmodes/ada-mode.el +++ b/lisp/progmodes/ada-mode.el @@ -909,7 +909,7 @@ ada-mode-symbol-syntax-table change)) (replace-match "'A'")) (goto-char from) - (while (re-search-forward "\\(#[0-9a-fA-F]*#\\)" to t) + (while (re-search-forward "\\(#[[:xdigit:]]*#\\)" to t) (setq change (cons (list (match-beginning 1) (length (match-string 1)) (match-string 1)) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 6afcb08a7ca..6feb326cf16 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1415,7 +1415,7 @@ c-after-change-mark-abnormal-strings (defconst c-maybe-quoted-number-head (concat "\\(0\\(" - "\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)" + "\\([Xx]\\([[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*'?\\)?\\)" "\\|" "\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)" "\\|" @@ -1449,7 +1449,7 @@ c-quoted-number-head-before-point (defconst c-maybe-quoted-number-tail (concat "\\(" - "\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([xX']?[[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([bB']?[01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1469,7 +1469,7 @@ c-quoted-number-tail-after-point (defconst c-maybe-quoted-number (concat "\\(0\\(" - "\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([Xx][[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([Bb][01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1530,7 +1530,7 @@ c-parse-quotes-before-change (if (>= (point) c-new-BEG) (setq c-new-BEG (match-beginning 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-BEG) (setq c-new-BEG (1- (match-beginning 0))))) @@ -1559,7 +1559,7 @@ c-parse-quotes-before-change (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) @@ -1579,8 +1579,8 @@ c-parse-quotes-before-change ((c-quoted-number-tail-after-point) (setq c-new-END (match-end 0))) ((looking-at - "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\|.\\)?\ -\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)\\)*'") + "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\|.\\)?\ +\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)\\)*'") (setq c-new-END (match-end 0)))) ;; Remove the '(1) syntax-table property from any "'"s within (c-new-BEG @@ -1632,7 +1632,7 @@ c-parse-quotes-after-change 'c-digit-separator t ?') (goto-char num-end)) ((looking-at - "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\ + "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\ \\)'") ; balanced quoted expression. (goto-char (match-end 0))) ((looking-at "\\\\'") ; Anomalous construct. diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index ba007d67c0d..c58acf0c2ff 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -3507,18 +3507,18 @@ cperl-look-at-leading-count (defsubst cperl-highlight-charclass (endbracket dashface bsface onec-space) (let ((l '(1 5 7)) ll lle lll ;; 2 groups, the first takes the whole match (include \[trnfabe]) - (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) + (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) (while ; look for unescaped - between non-classes (re-search-forward ;; On 19.33, certain simplifications lead ;; to bugs (as in [^a-z] \\| [trnfabe] ) (concat ; 1: SingleChar (include \[trnfabe]) singleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\(" ; 3: DASH SingleChar (match optionally) "\\(-\\)" ; 4: DASH singleChar ; 5: SingleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\)?" "\\|" "\\(" ; 7: other escapes @@ -4420,7 +4420,7 @@ cperl-find-pods-heres "\\=[0123456789]*" (1- e) 'to-end)) (and (eq qtag ?x) (re-search-forward - "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" + "\\=[[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}" (1- e) 'to-end)) (and (memq qtag (append "pPN" nil)) (re-search-forward "\\={[^{}]+}\\|." diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el index 94d96432614..17c7aebf2a9 100644 --- a/lisp/progmodes/ebnf-dtd.el +++ b/lisp/progmodes/ebnf-dtd.el @@ -324,7 +324,7 @@ ;; /* Character Reference */ ;; ;; CharRef ::= '&#' [0-9]+ ';' -;; | '&#x' [0-9a-fA-F]+ ';' +;; | '&#x' [[:xdigit:]]+ ';' ;; [WFC: Legal Character] ;; ;; @@ -915,9 +915,9 @@ ebnf-dtd-operators ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" +;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" (defun ebnf-dtd-attlistdecl () @@ -945,7 +945,7 @@ ebnf-dtd-attlistdecl (setq token (ebnf-dtd-lex))) (or (and (eq token 'string) (string-match - "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" + "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" ebnf-dtd-lex)) (error "Invalid default value in ATTLIST declaration")))) (or (eq token 'end-decl) @@ -986,9 +986,9 @@ ebnf-dtd-namelist ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" +;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" (defun ebnf-dtd-entitydecl () @@ -1001,7 +1001,7 @@ ebnf-dtd-entitydecl (setq token (ebnf-dtd-lex)) (if (eq token 'string) (if (string-match - "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" + "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" ebnf-dtd-lex) (setq token (ebnf-dtd-lex)) (error "Invalid ENTITY definition")) diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 32b0b7551f9..1b06077005c 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -540,7 +540,7 @@ hif-valid-token-list (defconst hif-token-regexp (concat (regexp-opt (mapcar 'car hif-token-alist)) - "\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*" + "\\|0x[[:xdigit:]]+\\.?[[:xdigit:]]*" "\\|[0-9]+\\.?[0-9]*" ;; decimal/octal "\\|\\w+")) @@ -595,7 +595,7 @@ hif-tokenize ;; 1. postfix 'l', 'll', 'ul' and 'ull' ;; 2. floating number formats (like 1.23e4) ;; 3. 098 is interpreted as octal conversion error - (if (string-match "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" + (if (string-match "0x\\([[:xdigit:]]+\\.?[[:xdigit:]]*\\)" token) (hif-string-to-number (match-string 1 token) 16)) ;; hex (if (string-match "\\`0[0-9]+\\(\\.[0-9]+\\)?\\'" token) diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 296a7ac3c95..780eff2d8a0 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -1071,7 +1071,7 @@ prolog-syntax-propertize-function ;; Supposedly, ISO-Prolog wants \NNN\ for octal and \xNNN\ for hexadecimal ;; escape sequences in atoms, so be careful not to let the terminating \ ;; escape a subsequent quote. - ("\\\\[x0-7][0-9a-fA-F]*\\(\\\\\\)" (1 "_")) + ("\\\\[x0-7][[:xdigit:]]*\\(\\\\\\)" (1 "_")) ))) (defun prolog-mode-variables () diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 5d5d787945d..b0653bce81c 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -873,7 +873,7 @@ css-syntax-propertize-function (css--uri-re (1 "|") (2 "|")))) (defconst css-escapes-re - "\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)") + "\\\\\\(?:[^\000-\037\177]\\|[[:xdigit:]]+[ \n\t\r\f]?\\)") (defconst css-nmchar-re (concat "\\(?:[-[:alnum:]]\\|" css-escapes-re "\\)")) (defconst css-nmstart-re (concat "\\(?:[[:alpha:]]\\|" css-escapes-re "\\)")) (defconst css-ident-re ;; (concat css-nmstart-re css-nmchar-re "*") @@ -1079,10 +1079,10 @@ css--colors-regexp (regexp-opt (mapcar #'car css--color-map) 'symbols) "\\|" ;; Short hex. css-color-4 adds alpha. - "\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)" + "\\(#[[:xdigit:]]\\{3,4\\}\\b\\)" "\\|" ;; Long hex. css-color-4 adds alpha. - "\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)" + "\\(#\\(?:[[:xdigit:]][[:xdigit:]]\\)\\{3,4\\}\\b\\)" "\\|" ;; RGB. "\\(\\_<rgba?(\\)" diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 0c5d5e56a69..602effe9afa 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1293,7 +1293,7 @@ sgml-quote (if unquotep ;; FIXME: We should unquote other named character references as well. (while (re-search-forward - "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][0-9a-fA-F]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" + "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][[:xdigit:]]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" nil t) (replace-match (string diff --git a/lisp/version.el b/lisp/version.el index d13d8c31e80..b9e2e50d1f7 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -120,7 +120,7 @@ emacs-repository-version-git (with-demoted-errors "Error running git rev-parse: %S" (call-process "git" nil '(t nil) nil "rev-parse" "HEAD"))) (progn (goto-char (point-min)) - (looking-at "[0-9a-fA-F]\\{40\\}")) + (looking-at "[[:xdigit:]]\\{40\\}")) (match-string 0))))) (defun emacs-repository-get-version (&optional dir external) diff --git a/lisp/xml.el b/lisp/xml.el index 09ec72f792f..833eb8aced2 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -194,13 +194,13 @@ xml-nmtoken-re ;; [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)* (defconst xml-nmtokens-re (concat xml-nmtoken-re "\\(?: " xml-name-re "\\)*")) -;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' -(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)") +;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [[:xdigit:]]+ ';' +(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[[:xdigit:]]+;\\)") ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([[:xdigit:]]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' @@ -889,7 +889,7 @@ xml--entity-replacement-text The replacement text is obtained by replacing character references and parameter-entity references." (let ((ref-re (eval-when-compile - (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([0-9a-fA-F]+\\)\\|%\\(" + (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([[:xdigit:]]+\\)\\|%\\(" xml-name-re "\\)\\);"))) children) (while (string-match ref-re string) diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index 5349de055ed..96a604f9824 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -60,7 +60,7 @@ mod-test-sum-test (should (eq 0 (string-match (concat "#<module function " - "\\(at \\(0x\\)?[0-9a-fA-F]+\\( from .*\\)?" + "\\(at \\(0x\\)?[[:xdigit:]]+\\( from .*\\)?" "\\|Fmod_test_sum from .*\\)>") (prin1-to-string (nth 1 descr))))) (should (= (nth 2 descr) 3))) -- 2.22.0
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 13:04:02 GMT) Full text and rfc822 format available.Message #14 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Robert Pluim <rpluim <at> gmail.com> To: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 15:03:04 +0200
>>>>> On Tue, 11 Jun 2019 15:29:25 +0300, Konstantin Kharlamov <Hi-Angel <at> yandex.ru> said: If this is fixing a bug, then please put '(Bug#36167)' somewhere in the commit message (I normally put it as the last thing in the preamble, before the detailed list of changes). See 'Commit messages' in CONTRIBUTE for extensive documentation. Konstantin> * etc/schema/od-schema-v1.2-os.rnc: replace Konstantin> [0-9a-fA-F] with [[:xdigit:]] This is the org schema file for OpenDocument export, not emacs lisp. Does that support :xdigit: syntax? Konstantin> * lisp/calc/calc-aent.el: replace [0-9a-fA-F] with Konstantin> [[:xdigit:]] Normally, you'd mention the containing function in the ChangeLog entry. Using 'C-x 4 a' (ie 'add-change-log-entry-other-window') with point on the code youʼre changing does that for you. Konstantin> * lisp/calc/calc-ext.el: replace [0-9a-fA-F] with Konstantin> [[:xdigit:]] And then on subsequent similar changes you can say 'Likewise.' (whilst still mentioning the enclosing function) Konstantin> * lisp/calc/calc-lang.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/cedet/semantic/java.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/cedet/semantic/lex.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/emulation/cua-rect.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/gnus/gnus-art.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/gnus/mml-sec.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/gnus/nneething.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/international/mule-cmds.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/net/shr-color.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/nxml/rng-cmpct.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/nxml/rng-uri.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/nxml/rng-xsd.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/nxml/xmltok.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/org/org-mobile.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/ada-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/cc-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/cperl-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/ebnf-dtd.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/hideif.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/progmodes/prolog.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/textmodes/css-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/textmodes/sgml-mode.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/version.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * lisp/xml.el: replace [0-9a-fA-F] with [[:xdigit:]] Konstantin> * test/src/emacs-module-tests.el: replace [0-9a-fA-F] with [[:xdigit:]] Robert
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 13:18:02 GMT) Full text and rfc822 format available.Message #17 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Robert Pluim <rpluim <at> gmail.com> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 16:17:10 +0300
On Вт, июн 11, 2019 at 15:03, Robert Pluim <rpluim <at> gmail.com> wrote: >>>>>> On Tue, 11 Jun 2019 15:29:25 +0300, Konstantin Kharlamov >>>>>> <Hi-Angel <at> yandex.ru> said: > > If this is fixing a bug, then please put '(Bug#36167)' somewhere in > the commit message (I normally put it as the last thing in the > preamble, before the detailed list of changes). See 'Commit messages' > in CONTRIBUTE for extensive documentation. > > Konstantin> * etc/schema/od-schema-v1.2-os.rnc: replace > Konstantin> [0-9a-fA-F] with [[:xdigit:]] > > This is the org schema file for OpenDocument export, not emacs > lisp. Does that support :xdigit: syntax? Oh, okay, thanks, I couldn't figure out what it is because Wikipedia says that .rnc is just a variation of XML, and README just says it's something to map some xml schemas to documents. So I deemed these regexps are too used by ELisp. Can I test it somehow? Either way, not a big deal, I can just drop that one. > Konstantin> * lisp/calc/calc-aent.el: replace [0-9a-fA-F] with > Konstantin> [[:xdigit:]] > > Normally, you'd mention the containing function in the ChangeLog > entry. Using 'C-x 4 a' (ie 'add-change-log-entry-other-window') with > point on the code youʼre changing does that for you. Ah, thanks. At this point I'll probably ask on emacs-devel about adding to prepare-commit-msg a code to pre-format the changes, because clearly that's a lot of manual work for something that should be automated. > Konstantin> * lisp/calc/calc-ext.el: replace [0-9a-fA-F] with > Konstantin> [[:xdigit:]] > > And then on subsequent similar changes you can say 'Likewise.' (whilst > still mentioning the enclosing function) > > Konstantin> * lisp/calc/calc-lang.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/cedet/semantic/java.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/cedet/semantic/lex.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/emulation/cua-rect.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/gnus/gnus-art.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/gnus/mml-sec.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/gnus/nneething.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/international/mule-cmds.el: replace > [0-9a-fA-F] with [[:xdigit:]] > Konstantin> * lisp/net/shr-color.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/nxml/rng-cmpct.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/nxml/rng-uri.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/nxml/rng-xsd.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/nxml/xmltok.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/org/org-mobile.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/progmodes/ada-mode.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/progmodes/cc-mode.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/progmodes/cperl-mode.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/progmodes/ebnf-dtd.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/progmodes/hideif.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/progmodes/prolog.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/textmodes/css-mode.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/textmodes/sgml-mode.el: replace [0-9a-fA-F] > with [[:xdigit:]] > Konstantin> * lisp/version.el: replace [0-9a-fA-F] with > [[:xdigit:]] > Konstantin> * lisp/xml.el: replace [0-9a-fA-F] with [[:xdigit:]] > Konstantin> * test/src/emacs-module-tests.el: replace [0-9a-fA-F] > with [[:xdigit:]] > > Robert
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 13:32:02 GMT) Full text and rfc822 format available.Message #20 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Robert Pluim <rpluim <at> gmail.com> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 15:30:48 +0200
>>>>> On Tue, 11 Jun 2019 16:17:10 +0300, Konstantin Kharlamov <hi-angel <at> yandex.ru> said: Konstantin> * etc/schema/od-schema-v1.2-os.rnc: replace Konstantin> [0-9a-fA-F] with [[:xdigit:]] >> >> This is the org schema file for OpenDocument export, not emacs >> lisp. Does that support :xdigit: syntax? Konstantin> Oh, okay, thanks, I couldn't figure out what it is because Wikipedia Konstantin> says that .rnc is just a variation of XML, and README just says it's Konstantin> something to map some xml schemas to documents. So I deemed these Konstantin> regexps are too used by ELisp. Konstantin> Can I test it somehow? Either way, not a big deal, I can just drop Konstantin> that one. If I remember correctly, the schema is copied into the resulting OpenDocument file, so itʼs probably safest not to touch it. Konstantin> * lisp/calc/calc-aent.el: replace [0-9a-fA-F] with Konstantin> [[:xdigit:]] >> >> Normally, you'd mention the containing function in the ChangeLog >> entry. Using 'C-x 4 a' (ie 'add-change-log-entry-other-window') with >> point on the code youʼre changing does that for you. Konstantin> Ah, thanks. At this point I'll probably ask on emacs-devel about Konstantin> adding to prepare-commit-msg a code to pre-format the changes, because Konstantin> clearly that's a lot of manual work for something that should be Konstantin> automated. Itʼs pretty automated: - Do M-x vc-dir in your emacs repository to see which files are changed - Do C-x 4 a to prepare the ChangeLog entries - Mark the files you want you commit - Commit from the vc-dir buffer. This will copy the earlier ChangeLog entries into the commit message buffer Unless you meant completely automatically generating the ChangeLog entries, which is a wholly different can of worms. Robert
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 13:33:02 GMT) Full text and rfc822 format available.Message #23 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: npostavs <at> gmail.com To: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 09:32:23 -0400
Robert Pluim <rpluim <at> gmail.com> writes: > And then on subsequent similar changes you can say 'Likewise.' (whilst > still mentioning the enclosing function) There's no need to say 'Likewise', just leave all but the last entry without a message, see CONTRIBUTE: - Preferred form for several entries with the same content: * lisp/menu-bar.el (clipboard-yank, clipboard-kill-ring-save) (clipboard-kill-region): * lisp/eshell/esh-io.el (eshell-virtual-targets) (eshell-clipboard-append): Replace option gui-select-enable-clipboard with select-enable-clipboard; renamed October 2014. (Bug#25145) (Rather than anything involving "ditto" and suchlike.)
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 14:27:01 GMT) Full text and rfc822 format available.Message #26 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Paul Eggert <eggert <at> cs.ucla.edu> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: Mattias Engdegård <mattiase <at> acm.org>, 36167 <at> debbugs.gnu.org Subject: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 07:26:00 -0700
If we're going to make such a change we should be systematic about it. Unfortunately the currently-proposed patches don't handle examples like these: [A-Fa-f0-9] (in dnd.el) [0-9a-fA-F.] (in org/org-table.el) [0-9a-fA-FxXzZ_] (in progmodes/vera-mode.el) (skip-chars-backward "0-9a-fA-F'") (in progmodes/cc-mode.el) I will cc this message to Mattias Engdegård, as he has a good scanner for regular expressions and patterns. Mattias, the bug-report thread is here: https://debbugs.gnu.org/36167
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 14:38:02 GMT) Full text and rfc822 format available.Message #29 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: npostavs <at> gmail.com Cc: 36167 <at> debbugs.gnu.org, Hi-Angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Tue, 11 Jun 2019 17:36:46 +0300
> From: npostavs <at> gmail.com > Date: Tue, 11 Jun 2019 09:32:23 -0400 > Cc: 36167 <at> debbugs.gnu.org > > Robert Pluim <rpluim <at> gmail.com> writes: > > > And then on subsequent similar changes you can say 'Likewise.' (whilst > > still mentioning the enclosing function) > > There's no need to say 'Likewise', just leave all but the last entry > without a message, see CONTRIBUTE: > > - Preferred form for several entries with the same content: > > * lisp/menu-bar.el (clipboard-yank, clipboard-kill-ring-save) > (clipboard-kill-region): > * lisp/eshell/esh-io.el (eshell-virtual-targets) > (eshell-clipboard-append): > Replace option gui-select-enable-clipboard with > select-enable-clipboard; renamed October 2014. (Bug#25145) > > (Rather than anything involving "ditto" and suchlike.) Yes, the above is the preferred format. "Likewise", "ditto", etc. are just useless noise, since you have to go to the first entry anyway to understand what was done. Also, please note that typing "C-x 4 a" in several functions without adding any text after the colon will automatically extend the list of names in parentheses, so all you have to do is write the description of the change once after you type "C-x 4 a" in all the functions where you made the same change.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 14:39:01 GMT) Full text and rfc822 format available.Message #32 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Paul Eggert <eggert <at> cs.ucla.edu> Cc: Mattias Engdegård <mattiase <at> acm.org>, 36167 <at> debbugs.gnu.org Subject: Re: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 17:37:54 +0300
On Вт, июн 11, 2019 at 07:26, Paul Eggert <eggert <at> cs.ucla.edu> wrote: > If we're going to make such a change we should be systematic about > it. Unfortunately the currently-proposed patches don't handle > examples like these: > > [A-Fa-f0-9] (in dnd.el) > > [0-9a-fA-F.] (in org/org-table.el) > > [0-9a-fA-FxXzZ_] (in progmodes/vera-mode.el) This one doesn't look like hex. At least :xdigit: sure doesn't match X and Z. Although this probably could be replaced with [[[:digit:]]xXzZ] (didn't test this one). But I imagine such change may better be a separate patch, as it's somewhat different from all the other changes. > (skip-chars-backward "0-9a-fA-F'") (in progmodes/cc-mode.el) Same here. > I will cc this message to Mattias Engdegård, as he has a good > scanner for regular expressions and patterns. Mattias, the bug-report > thread is here: > > https://debbugs.gnu.org/36167 Either way, thanks, I already figured too that there are some regexes in a different order. I'm using ack to find them, this should work: ack "\[[-09afAF]{9}\]" I'll post an updated patch later.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 15:38:01 GMT) Full text and rfc822 format available.Message #35 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Paul Eggert <eggert <at> cs.ucla.edu> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: Mattias Engdegård <mattiase <at> acm.org>, 36167 <at> debbugs.gnu.org Subject: Re: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 08:37:42 -0700
On 6/11/19 7:37 AM, Konstantin Kharlamov wrote: > this probably could be replaced with [[[:digit:]]xXzZ] (didn't test > this one). That's right, though it should be [[:xdigit:]xXzZ]. > But I imagine such change may better be a separate patch, as it's > somewhat different from all the other changes. No, it's basically the same thing; we're looking for any place that [:xdigit:] would be useful in clarifying patterns intended to max hexadecimal digits (and perhaps some other things). Also, the skip-chars arguments are also the same thing. Let's do all these.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 16:32:01 GMT) Full text and rfc822 format available.Message #38 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Mattias Engdegård <mattiase <at> acm.org> To: Paul Eggert <eggert <at> cs.ucla.edu> Cc: 36167 <at> debbugs.gnu.org, Konstantin Kharlamov <hi-angel <at> yandex.ru> Subject: Re: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 18:31:38 +0200
[Message part 1 (text/plain, inline)]
11 juni 2019 kl. 17.37 skrev Paul Eggert <eggert <at> cs.ucla.edu>: > > No, it's basically the same thing; we're looking for any place that [:xdigit:] would be useful in clarifying patterns intended to max hexadecimal digits (and perhaps some other things). Also, the skip-chars arguments are also the same thing. Let's do all these. Since you asked, I've attached a relint run with xr modified to find parts of character alternatives and skip-sets that could be replaced with [:xdigit:], on Emacs .el files in master; it was quick work. However, I'm not really convinced that the risks of making mistakes in the translation would outweigh the benefits. We could make an automatic verification, but [0-9A-Fa-f] still has one advantage: the reader, and the writer, know exactly which characters are included without looking it up. For example: - whether upper case, lower case, or both are accepted - whether non-ascii digits are accepted (included in [:digit:] on many platforms) But it's not up to me; should your judgement tell you otherwise, go ahead! I don't mind the use of [:xdigit:] at all, it's just the wholesale replacement.
[xdigit.log (application/octet-stream, attachment)]
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 16:51:01 GMT) Full text and rfc822 format available.Message #41 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Drew Adams <drew.adams <at> oracle.com> To: Mattias Engdegård <mattiase <at> acm.org>, Paul Eggert <eggert <at> cs.ucla.edu> Cc: 36167 <at> debbugs.gnu.org, Konstantin Kharlamov <hi-angel <at> yandex.ru> Subject: RE: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 09:50:24 -0700 (PDT)
> [0-9A-Fa-f] still has one advantage: the reader, and the > writer, know exactly which characters are included without looking it up. For > example: > > - whether upper case, lower case, or both are accepted > - whether non-ascii digits are accepted (included in [:digit:] on many > platforms) +1. At least the doc for [:digit:] should say exactly what it matches. Then it'll be clear for readers and writers.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:06:01 GMT) Full text and rfc822 format available.Message #44 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Drew Adams <drew.adams <at> oracle.com> Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 20:04:38 +0300
> Date: Tue, 11 Jun 2019 09:50:24 -0700 (PDT) > From: Drew Adams <drew.adams <at> oracle.com> > Cc: 36167 <at> debbugs.gnu.org, Konstantin Kharlamov <hi-angel <at> yandex.ru> > > > [0-9A-Fa-f] still has one advantage: the reader, and the > > writer, know exactly which characters are included without looking it up. For > > example: > > > > - whether upper case, lower case, or both are accepted > > - whether non-ascii digits are accepted (included in [:digit:] on many > > platforms) > > +1. At least the doc for [:digit:] should say exactly > what it matches. Then it'll be clear for readers and > writers. Isn't it clear already? Here's what the documentation says now: ‘[:digit:]’ This matches ‘0’ through ‘9’. Thus, ‘[-+[:digit:]]’ matches any digit, as well as ‘+’ and ‘-’. Is anything missing here? Where did the question about non-ASCII digits come from, given this text?
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:19:02 GMT) Full text and rfc822 format available.Message #47 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Paul Eggert <eggert <at> cs.ucla.edu> To: Eli Zaretskii <eliz <at> gnu.org>, Drew Adams <drew.adams <at> oracle.com> Cc: mattiase <at> acm.org, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 10:18:44 -0700
On 6/11/19 10:04 AM, Eli Zaretskii wrote: > Where did the question about non-ASCII > digits come from, given this text? It came from POSIX, where [:xdigit:] and [:digit:] might match other characters. Similarly, in POSIX [a-f] might match characters other than 'a', 'b', 'c', 'd', 'e', 'f'. We don't need to worry about this in Emacs, since Emacs regexps don't have that particular misfeature of POSIX. I'm on the fence about replacing 0-9A-Fa-f with [:xdigit:], as I can see both sides of the argument. If Mattias is dubious, then perhaps we should leave the regexps alone - he's had more experience than the rest of us when it comes to scanning for dubious regexp constructions.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:20:02 GMT) Full text and rfc822 format available.Message #50 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Drew Adams <drew.adams <at> oracle.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: RE: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 10:19:17 -0700 (PDT)
> > > [0-9A-Fa-f] still has one advantage: the reader, and the > > > writer, know exactly which characters are included without looking it up. > For > > > example: > > > > > > - whether upper case, lower case, or both are accepted > > > - whether non-ascii digits are accepted (included in [:digit:] on many > > > platforms) > > > > +1. At least the doc for [:digit:] should say exactly > > what it matches. Then it'll be clear for readers and > > writers. > > Isn't it clear already? I meant [:xdigit:], not [:digit:], in my reply. Sorry for the typo.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:34:01 GMT) Full text and rfc822 format available.Message #53 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Paul Eggert <eggert <at> cs.ucla.edu> Cc: mattiase <at> acm.org, 36167 <at> debbugs.gnu.org, drew.adams <at> oracle.com, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 20:32:38 +0300
> Cc: mattiase <at> acm.org, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru > From: Paul Eggert <eggert <at> cs.ucla.edu> > Date: Tue, 11 Jun 2019 10:18:44 -0700 > > On 6/11/19 10:04 AM, Eli Zaretskii wrote: > > Where did the question about non-ASCII > > digits come from, given this text? > > It came from POSIX, where [:xdigit:] and [:digit:] might match other > characters. Yes, but when using Emacs and coding for Emacs, one must read the Emacs documentation, which clearly says what these do in Emacs.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:35:02 GMT) Full text and rfc822 format available.Message #56 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Drew Adams <drew.adams <at> oracle.com> Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 20:34:44 +0300
> Date: Tue, 11 Jun 2019 10:19:17 -0700 (PDT) > From: Drew Adams <drew.adams <at> oracle.com> > Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, > hi-angel <at> yandex.ru > > > Isn't it clear already? > > I meant [:xdigit:], not [:digit:], in my reply. Sorry for > the typo. :xdigit: is also clearly documented: ‘[:xdigit:]’ This matches the hexadecimal digits: ‘0’ through ‘9’, ‘a’ through ‘f’ and ‘A’ through ‘F’.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:51:01 GMT) Full text and rfc822 format available.Message #59 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: npostavs <at> gmail.com To: Eli Zaretskii <eliz <at> gnu.org> Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, Drew Adams <drew.adams <at> oracle.com>, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 13:50:49 -0400
Eli Zaretskii <eliz <at> gnu.org> writes: >> > [0-9A-Fa-f] still has one advantage: the reader, and the >> > writer, know exactly which characters are included without looking it up. ^^^^^^^^^^^^^^^^^^^^^ >> > - whether non-ascii digits are accepted > ‘[:digit:]’ > This matches ‘0’ through ‘9’. Thus, ‘[-+[:digit:]]’ matches any > digit, as well as ‘+’ and ‘-’. > Is anything missing here? Where did the question about non-ASCII > digits come from, given this text? It came from (a hypothetical) user who doesn't remember (or hasn't read) the documentation. The advantage of [0-9A-Fa-f] vs [[:xdigit:]] here is similar to explicit comparison against (point-min) vs (bobp) that you pointed out in #35967.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 17:55:02 GMT) Full text and rfc822 format available.Message #62 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: npostavs <at> gmail.com Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, drew.adams <at> oracle.com, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 20:53:44 +0300
> From: npostavs <at> gmail.com > Cc: Drew Adams <drew.adams <at> oracle.com>, mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru > Date: Tue, 11 Jun 2019 13:50:49 -0400 > > The advantage of [0-9A-Fa-f] vs [[:xdigit:]] here is similar to > explicit comparison against (point-min) vs (bobp) that you pointed > out in #35967. I'm not against the replacement, I responded to the request to have a clear documentation of these character classes. Which we do have, so I was puzzled why people pretend we don't.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 18:16:02 GMT) Full text and rfc822 format available.Message #65 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: npostavs <at> gmail.com, mattiase <at> acm.org, eggert <at> cs.ucla.edu Cc: 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 21:14:49 +0300
> From: Eli Zaretskii <eliz <at> gnu.org> > Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, > hi-angel <at> yandex.ru > > I'm not against the replacement, I responded to the request to have a > clear documentation of these character classes. Specifically, this: > > [0-9A-Fa-f] still has one advantage: the reader, and the > > writer, know exactly which characters are included without looking it up. For > > example: > > > > - whether upper case, lower case, or both are accepted > > - whether non-ascii digits are accepted (included in [:digit:] on many > > platforms) > > +1. At least the doc for [:digit:] should say exactly > what it matches. Then it'll be clear for readers and > writers. The last part says "the doc should say" as if the doc doesn't already say.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 19:03:01 GMT) Full text and rfc822 format available.Message #68 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Drew Adams <drew.adams <at> oracle.com> To: Eli Zaretskii <eliz <at> gnu.org>, npostavs <at> gmail.com, mattiase <at> acm.org, eggert <at> cs.ucla.edu Cc: 36167 <at> debbugs.gnu.org, hi-angel <at> yandex.ru Subject: RE: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 12:01:45 -0700 (PDT)
> > +1. At least the doc for [:digit:] should say exactly > > what it matches. Then it'll be clear for readers and > > writers. > > The last part says "the doc should say" as if the doc doesn't already > say. Yes, my bad. Forgot that it exists, and misread the proposal as including its creation.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Tue, 11 Jun 2019 19:57:03 GMT) Full text and rfc822 format available.Message #71 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Andy Moreton <andrewjmoreton <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Tue, 11 Jun 2019 20:56:09 +0100
On Tue 11 Jun 2019, Eli Zaretskii wrote: >> Date: Tue, 11 Jun 2019 10:19:17 -0700 (PDT) >> From: Drew Adams <drew.adams <at> oracle.com> >> Cc: mattiase <at> acm.org, eggert <at> cs.ucla.edu, 36167 <at> debbugs.gnu.org, >> hi-angel <at> yandex.ru >> >> > Isn't it clear already? >> >> I meant [:xdigit:], not [:digit:], in my reply. Sorry for >> the typo. > > :xdigit: is also clearly documented: > > ‘[:xdigit:]’ > This matches the hexadecimal digits: ‘0’ through ‘9’, ‘a’ through > ‘f’ and ‘A’ through ‘F’. The docs for [:digit:] and [:xdigit:] seem clear enough, but there is one other minor point that could be clarified. The [:alnum:] and [:alpha:] are based on (unspecified values of) the Unicode general-category property, but [:digit:] is not. Thus [:alnum:] includes other numeric characters that are not matched by [:digit:]. AndyM
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 00:33:02 GMT) Full text and rfc822 format available.Message #74 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Robert Pluim <rpluim <at> gmail.com> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 03:29:29 +0300
В Вт, июн 11, 2019 at 15:30, Robert Pluim <rpluim <at> gmail.com> написал: >>>>>> On Tue, 11 Jun 2019 16:17:10 +0300, Konstantin Kharlamov >>>>>> <hi-angel <at> yandex.ru> said: > > Konstantin> * etc/schema/od-schema-v1.2-os.rnc: replace > Konstantin> [0-9a-fA-F] with [[:xdigit:]] > >> > >> This is the org schema file for OpenDocument export, not emacs > >> lisp. Does that support :xdigit: syntax? > > Konstantin> Oh, okay, thanks, I couldn't figure out what it is > because Wikipedia > Konstantin> says that .rnc is just a variation of XML, and README > just says it's > Konstantin> something to map some xml schemas to documents. So I > deemed these > Konstantin> regexps are too used by ELisp. > > Konstantin> Can I test it somehow? Either way, not a big deal, I > can just drop > Konstantin> that one. > > If I remember correctly, the schema is copied into the resulting > OpenDocument file, so itʼs probably safest not to touch it. > > Konstantin> * lisp/calc/calc-aent.el: replace [0-9a-fA-F] with > Konstantin> [[:xdigit:]] > >> > >> Normally, you'd mention the containing function in the > ChangeLog > >> entry. Using 'C-x 4 a' (ie > 'add-change-log-entry-other-window') with > >> point on the code youʼre changing does that for you. > > Konstantin> Ah, thanks. At this point I'll probably ask on > emacs-devel about > Konstantin> adding to prepare-commit-msg a code to pre-format the > changes, because > Konstantin> clearly that's a lot of manual work for something > that should be > Konstantin> automated. > > Itʼs pretty automated: > > - Do M-x vc-dir in your emacs repository to see which files are > changed > - Do C-x 4 a to prepare the ChangeLog entries > - Mark the files you want you commit > - Commit from the vc-dir buffer. This will copy the earlier ChangeLog > entries into the commit message buffer Okay, so, after I do the first 2 points, I end up in a buffer with the following content > 2019-06-12 <constantine <at> constantine-N61Ja> > > * (Stash): I am not sure what to do next, because I guess this buffer supposed to have changed function names? I also tried first marking files in vc-dir with "m" key, and then doing the 2nd point, to no avail. > Unless you meant completely automatically generating the ChangeLog > entries, which is a wholly different can of worms. Yeah. It would be very useful, because had you not write that this could be automated, I'd never guessed. And even now that you wrote about it, I still don't understand how to make it work. I guess I'm not an unique contributor in such position. But I think possibility of such change may be better to discuss in a separate thread.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 02:31:02 GMT) Full text and rfc822 format available.Message #77 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Andy Moreton <andrewjmoreton <at> gmail.com> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Wed, 12 Jun 2019 05:30:08 +0300
> From: Andy Moreton <andrewjmoreton <at> gmail.com> > Date: Tue, 11 Jun 2019 20:56:09 +0100 > > The docs for [:digit:] and [:xdigit:] seem clear enough, but there is > one other minor point that could be clarified. > > The [:alnum:] and [:alpha:] are based on (unspecified values of) the Unicode > general-category property, but [:digit:] is not. Thus [:alnum:] includes > other numeric characters that are not matched by [:digit:]. It's true that [:alnum:] includes more numerical characters that [:digit:], but what exactly needs to be clarified here? Assuming you mean clarified in the manual, that is.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 02:43:02 GMT) Full text and rfc822 format available.Message #80 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 05:42:04 +0300
> Date: Wed, 12 Jun 2019 03:29:29 +0300 > From: Konstantin Kharlamov <hi-angel <at> yandex.ru> > Cc: 36167 <at> debbugs.gnu.org > > > Unless you meant completely automatically generating the ChangeLog > > entries, which is a wholly different can of worms. > > Yeah. It would be very useful, because had you not write that this > could be automated, I'd never guessed. It's in CONTRIBUTE, btw. > And even now that you wrote about it, I still don't understand how > to make it work. I guess I'm not an unique contributor in such > position. If you have never used "C-x 4 a", you should indeed learn how to use it efficiently. > But I think possibility of such change may be better to discuss in a > separate thread. I very much doubt that log-message creation could be automated. For starters, there's a human decision how to group the entries and what to write as the description of the changes themselves.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 08:22:02 GMT) Full text and rfc822 format available.Message #83 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Robert Pluim <rpluim <at> gmail.com> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 10:21:41 +0200
>>>>> On Wed, 12 Jun 2019 03:29:29 +0300, Konstantin Kharlamov <hi-angel <at> yandex.ru> said: >> - Do M-x vc-dir in your emacs repository to see which files are >> changed >> - Do C-x 4 a to prepare the ChangeLog entries >> - Mark the files you want you commit >> - Commit from the vc-dir buffer. This will copy the earlier ChangeLog >> entries into the commit message buffer Konstantin> Okay, so, after I do the first 2 points, I end up in a buffer with the Konstantin> following content >> 2019-06-12 <constantine <at> constantine-N61Ja> >> >> * (Stash): Konstantin> I am not sure what to do next, because I guess this buffer supposed to Konstantin> have changed function names? I also tried first marking files in Konstantin> vc-dir with "m" key, and then doing the 2nd point, to no avail. Sorry, I forgot a step: you have to visit the file you changed, and make sure point is near where you made changes (C-x v = will show you a *vc-diff* buffer containing the changes), and then do C-x 4 a (possibly multiple times if you changed multiple things). Robert
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 11:20:02 GMT) Full text and rfc822 format available.Message #86 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Robert Pluim <rpluim <at> gmail.com> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 14:19:04 +0300
В Ср, июн 12, 2019 at 10:21, Robert Pluim <rpluim <at> gmail.com> написал: >>>>>> On Wed, 12 Jun 2019 03:29:29 +0300, Konstantin Kharlamov >>>>>> <hi-angel <at> yandex.ru> said: > >> - Do M-x vc-dir in your emacs repository to see which files are > >> changed > >> - Do C-x 4 a to prepare the ChangeLog entries > >> - Mark the files you want you commit > >> - Commit from the vc-dir buffer. This will copy the earlier > ChangeLog > >> entries into the commit message buffer > > Konstantin> Okay, so, after I do the first 2 points, I end up in > a buffer with the > Konstantin> following content > > >> 2019-06-12 <constantine <at> constantine-N61Ja> > >> > >> * (Stash): > > Konstantin> I am not sure what to do next, because I guess this > buffer supposed to > Konstantin> have changed function names? I also tried first > marking files in > Konstantin> vc-dir with "m" key, and then doing the 2nd point, to > no avail. > > Sorry, I forgot a step: you have to visit the file you changed, and > make sure point is near where you made changes (C-x v = will show you > a *vc-diff* buffer containing the changes), and then do C-x 4 a > (possibly multiple times if you changed multiple things). Oh, that doesn't sound automated, it's a lot of work. I had 28 files in the outdated patch, and there will be more, as noted Paul. And in the other patch, which I did not send as it turned out to be obsolete (which was replacing [0-9] with [[:digit:]]) I had around 4xx changed files. No way one could manually go through 400 files, stop by each change, and press a hotkey.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 11:45:02 GMT) Full text and rfc822 format available.Message #89 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Andy Moreton <andrewjmoreton <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Wed, 12 Jun 2019 12:44:12 +0100
On Wed 12 Jun 2019, Eli Zaretskii wrote: >> From: Andy Moreton <andrewjmoreton <at> gmail.com> >> Date: Tue, 11 Jun 2019 20:56:09 +0100 >> >> The docs for [:digit:] and [:xdigit:] seem clear enough, but there is >> one other minor point that could be clarified. >> >> The [:alnum:] and [:alpha:] are based on (unspecified values of) the Unicode >> general-category property, but [:digit:] is not. Thus [:alnum:] includes >> other numeric characters that are not matched by [:digit:]. > > It's true that [:alnum:] includes more numerical characters that > [:digit:], but what exactly needs to be clarified here? Assuming you > mean clarified in the manual, that is. As noted by Paul Eggert, the POSIX behaviour is different. It may be worth a note in the manual to draw attention to this difference. AndyM
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 14:56:02 GMT) Full text and rfc822 format available.Message #92 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 17:55:45 +0300
> Date: Wed, 12 Jun 2019 14:19:04 +0300 > From: Konstantin Kharlamov <hi-angel <at> yandex.ru> > Cc: 36167 <at> debbugs.gnu.org > > > Sorry, I forgot a step: you have to visit the file you changed, and > > make sure point is near where you made changes (C-x v = will show you > > a *vc-diff* buffer containing the changes), and then do C-x 4 a > > (possibly multiple times if you changed multiple things). > > Oh, that doesn't sound automated, it's a lot of work. I had 28 files in > the outdated patch, and there will be more, as noted Paul. The idea is to type "C-x 4 a" right after making each change, or set up a keyboard macro that does this for you. > And in the other patch, which I did not send as it turned out to be > obsolete (which was replacing [0-9] with [[:digit:]]) I had around > 4xx changed files. No way one could manually go through 400 files, > stop by each change, and press a hotkey. When you change 400 files, no one will expect you to mention each instance, it's enough to describe the change itself and say "in all files" or somesuch.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 16:08:02 GMT) Full text and rfc822 format available.Message #95 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Andy Moreton <andrewjmoreton <at> gmail.com> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Date: Wed, 12 Jun 2019 19:07:29 +0300
> From: Andy Moreton <andrewjmoreton <at> gmail.com> > Date: Wed, 12 Jun 2019 12:44:12 +0100 > > >> The [:alnum:] and [:alpha:] are based on (unspecified values of) the Unicode > >> general-category property, but [:digit:] is not. Thus [:alnum:] includes > >> other numeric characters that are not matched by [:digit:]. > > > > It's true that [:alnum:] includes more numerical characters that > > [:digit:], but what exactly needs to be clarified here? Assuming you > > mean clarified in the manual, that is. > > As noted by Paul Eggert, the POSIX behaviour is different. It may be > worth a note in the manual to draw attention to this difference. It's strange to say in the manual what we do NOT do. The current text says: ‘[:digit:]’ This matches ‘0’ through ‘9’. Thus, ‘[-+[:digit:]]’ matches any digit, as well as ‘+’ and ‘-’. I believe you suggest to add to this something like "Note that Posix interpretation of '[:digit:]' is different"? Given the crystal clarity of the current text, wouldn't such addition confuse the reader? Btw, where's the reference for a different interpretation by Posix? I cannot find anything to that effect; even the Unicode UTS18 (http://www.unicode.org/reports/tr18/) says, while describing the Posix equivalent of the Unicode regexp notations: "Non-decimal numbers (like Roman numerals) are normally excluded". What am I missing?
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 16:46:02 GMT) Full text and rfc822 format available.Message #98 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Eli Zaretskii <eliz <at> gnu.org> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 19:39:26 +0300
В Ср, июн 12, 2019 at 17:55, Eli Zaretskii <eliz <at> gnu.org> написал: >> Date: Wed, 12 Jun 2019 14:19:04 +0300 >> From: Konstantin Kharlamov <hi-angel <at> yandex.ru> >> Cc: 36167 <at> debbugs.gnu.org >> >> > Sorry, I forgot a step: you have to visit the file you changed, >> and >> > make sure point is near where you made changes (C-x v = will show >> you >> > a *vc-diff* buffer containing the changes), and then do C-x 4 a >> > (possibly multiple times if you changed multiple things). >> >> Oh, that doesn't sound automated, it's a lot of work. I had 28 >> files in >> the outdated patch, and there will be more, as noted Paul. > > The idea is to type "C-x 4 a" right after making each change, or set > up a keyboard macro that does this for you. This indeed sounds somewhat easier, have I been making each xdigit replacement manually. But I'm a fan of automation, this reduces a "human factor" and is faster. So the original xdigit patch was a matter of a single command: sp "\[0-9a-fA-F\]" "[[:xdigit:]]" where "sp" is a "sed" replacement in perl¹. (okay, maybe then also to review and "git checkout" irrelevant files, like changelogs) Having to do all 20 files manually would be a lot of work. >> And in the other patch, which I did not send as it turned out to be >> obsolete (which was replacing [0-9] with [[:digit:]]) I had around >> 4xx changed files. No way one could manually go through 400 files, >> stop by each change, and press a hotkey. > > When you change 400 files, no one will expect you to mention each > instance, it's enough to describe the change itself and say "in all > files" or somesuch. Can I do that for 20 files? 1: https://github.com/Hi-Angel/dotfiles/blob/33eab4cc99ad06dbfa71fa0cf9c2822e5d824f24/.zshrc#L122
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 16:52:02 GMT) Full text and rfc822 format available.Message #101 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 19:51:29 +0300
> Date: Wed, 12 Jun 2019 19:39:26 +0300 > From: Konstantin Kharlamov <hi-angel <at> yandex.ru> > Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org > > > When you change 400 files, no one will expect you to mention each > > instance, it's enough to describe the change itself and say "in all > > files" or somesuch. > > Can I do that for 20 files? Borderline, IMO. Can't the command you use output the list of functions or at least files where it made the changes? Then you could massage that list into a log message.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 17:10:02 GMT) Full text and rfc822 format available.Message #104 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Eli Zaretskii <eliz <at> gnu.org> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 20:09:09 +0300
В Ср, июн 12, 2019 at 19:51, Eli Zaretskii <eliz <at> gnu.org> написал: >> Date: Wed, 12 Jun 2019 19:39:26 +0300 >> From: Konstantin Kharlamov <hi-angel <at> yandex.ru> >> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org >> >> > When you change 400 files, no one will expect you to mention each >> > instance, it's enough to describe the change itself and say "in >> all >> > files" or somesuch. >> >> Can I do that for 20 files? > > Borderline, IMO. > > Can't the command you use output the list of functions or at least > files where it made the changes? Then you could massage that list > into a log message. Getting the list of files is trivial, I can just copy them from a `git diff --name-only` or some such. Getting the list of modified functions in code is harder. Anyway, I'll try making some function later to apply recursively the (add-change-log-entry-other-window), that sounds good to have in general.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 21:34:01 GMT) Full text and rfc822 format available.Message #107 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: Eli Zaretskii <eliz <at> gnu.org>, rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 23:33:16 +0200
Konstantin Kharlamov <hi-angel <at> yandex.ru> writes: > Anyway, I'll try making some function later to apply recursively the > (add-change-log-entry-other-window), that sounds good to have in > general. If it helps, I've got this that emulates hitting `C-x 4 a' on all changes in a diff-mode (in probably the least efficient way possible) which is handy if you're doing a lot of semi-automatic changes to many functions. (defun lars-gather-changelog () (interactive) (let* ((buf-file-name (funcall add-log-buffer-file-name-function)) (buffer-file (if buf-file-name (expand-file-name buf-file-name))) (change-buffer (add-log-find-changelog-buffer (expand-file-name (find-change-log nil buffer-file))))) (with-current-buffer change-buffer (erase-buffer)) (save-excursion (goto-char (point-min)) (while (re-search-forward "^[-+] " nil t) (save-window-excursion (diff-goto-source) (add-change-log-entry-other-window)))) (switch-to-buffer-other-window change-buffer))) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 21:41:01 GMT) Full text and rfc822 format available.Message #110 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Wed, 12 Jun 2019 23:39:55 +0200
Lars Ingebrigtsen <larsi <at> gnus.org> writes: > (while (re-search-forward "^[-+] " nil t) Should be (while (re-search-forward "^[-+][ \t]" nil t) I think. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 22:18:01 GMT) Full text and rfc822 format available.Message #113 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Andreas Schwab <schwab <at> linux-m68k.org> To: Lars Ingebrigtsen <larsi <at> gnus.org> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org, Konstantin Kharlamov <hi-angel <at> yandex.ru> Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Thu, 13 Jun 2019 00:17:20 +0200
On Jun 12 2019, Lars Ingebrigtsen <larsi <at> gnus.org> wrote: > Konstantin Kharlamov <hi-angel <at> yandex.ru> writes: > >> Anyway, I'll try making some function later to apply recursively the >> (add-change-log-entry-other-window), that sounds good to have in >> general. > > If it helps, I've got this that emulates hitting `C-x 4 a' on all > changes in a diff-mode Isn't that what C-x 4 A (diff-add-change-log-entries-other-window) does? Andreas. -- Andreas Schwab, schwab <at> linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 22:23:02 GMT) Full text and rfc822 format available.Message #116 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Lars Ingebrigtsen <larsi <at> gnus.org> To: Andreas Schwab <schwab <at> linux-m68k.org> Cc: rpluim <at> gmail.com, 36167 <at> debbugs.gnu.org, Konstantin Kharlamov <hi-angel <at> yandex.ru> Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Thu, 13 Jun 2019 00:22:23 +0200
Andreas Schwab <schwab <at> linux-m68k.org> writes: > Isn't that what C-x 4 A (diff-add-change-log-entries-other-window) does? Indeed it is -- I wasn't aware of that command. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Wed, 12 Jun 2019 22:49:01 GMT) Full text and rfc822 format available.Message #119 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: Lars Ingebrigtsen <larsi <at> gnus.org> Cc: rpluim <at> gmail.com, Andreas Schwab <schwab <at> linux-m68k.org>, 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Date: Thu, 13 Jun 2019 01:48:45 +0300
This is great, thanks everyone! В Чт, июн 13, 2019 at 00:22, Lars Ingebrigtsen <larsi <at> gnus.org> написал: > Andreas Schwab <schwab <at> linux-m68k.org> writes: > >> Isn't that what C-x 4 A (diff-add-change-log-entries-other-window) >> does? > > Indeed it is -- I wasn't aware of that command. > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Thu, 13 Jun 2019 00:20:01 GMT) Full text and rfc822 format available.Message #122 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> To: 36167 <at> debbugs.gnu.org Subject: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Date: Thu, 13 Jun 2019 03:18:43 +0300
* admin/charsets/mapconv: * build-aux/gitlog-to-changelog (parse_amend_file) (git_dir_option): * lisp/progmodes/verilog-mode.el (verilog-delay-re): (verilog-type-font-keywords) (verilog-read-always-signals-recurse): (verilog-is-number): * lisp/progmodes/vera-mode.el (vera-font-lock-keywords): * test/src/emacs-module-tests.el (mod-test-sum-test): * lisp/xml.el: (xml--entity-replacement-text): * lisp/version.el (emacs-repository-version-git): * lisp/textmodes/sgml-mode.el (sgml-quote): * lisp/textmodes/css-mode.el (css-escapes-re) (css--colors-regexp): * lisp/progmodes/prolog.el (prolog-syntax-propertize-function): * lisp/progmodes/hideif.el (hif-token-regexp) (hif-tokenize): * lisp/progmodes/ebnf-dtd.el: (ebnf-dtd-attlistdecl) (ebnf-dtd-entitydecl) (ebnf-dtd-lex) * lisp/progmodes/ebnf-ebx.el (ebnf-ebx-hex-character): * lisp/progmodes/ebnf-abn.el (ebnf-abn-character): * lisp/progmodes/cperl-mode.el (cperl-highlight-charclass) (cperl-find-pods-heres): * lisp/progmodes/cc-mode.el (c-maybe-quoted-number-head) (c-maybe-quoted-number) (c-parse-quotes-before-change) (c-parse-quotes-after-change) (c-quoted-number-head-before-point) (c-quoted-number-straddling-point) * lisp/progmodes/ada-mode.el (featurep) (ada-in-numeric-literal-p) (ada-font-lock-keywords): * lisp/org/org-mobile.el (org-mobile-copy-agenda-files) * lisp/org/org-table.el (org-table-number-regexp): (org-mobile-update-checksum-for-capture-file): * lisp/nxml/xsd-regexp.el (xsdre-gen-categories): * lisp/nxml/xmltok.el (let*): * lisp/nxml/rng-xsd.el (rng-xsd-convert-hex-binary) (rng-xsd-convert-any-uri): * lisp/nxml/rng-uri.el (rng-uri-file-name-1) (rng-uri-unescape-multibyte) (rng-uri-unescape-unibyte) (rng-uri-unescape-unibyte-match) (rng-uri-unescape-unibyte-replace): * lisp/nxml/rng-cmpct.el (rng-c-process-escapes): * lisp/nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set): * lisp/net/shr-color.el (shr-color->hexadecimal): * lisp/mail/rfc2231.el (rfc2231-decode-encoded-string): * lisp/international/mule-cmds.el (read-char-by-name): * lisp/htmlfontify.el (hfy-hex-regex): * lisp/gnus/nneething.el (nneething-decode-file-name): * lisp/gnus/mml-sec.el (mml-secure-find-usable-keys): * lisp/gnus/gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): * lisp/faces.el (read-color): * lisp/epg.el (epg--status-ERRSIG) (epg--status-VALIDSIG) (epg--status-SIG_CREATED) (epg--decode-percent-escape) (epg--decode-hexstring) (epg--decode-quotedstring) (epg-dn-from-string): * lisp/emulation/cua-rect.el (cua-incr-rectangle): * lisp/dnd.el (dnd-unescape-uri): * lisp/cedet/semantic/lex.el (semantic-lex-number-expression): * lisp/cedet/semantic/java.el (semantic-java-number-regexp): * lisp/calc/calc-lang.el (pascal): * lisp/calc/calc-ext.el (math-read-number-fancy): * lisp/calc/calc-aent.el (math-read-token): replace various combinations of [0-9a-fA-F] with [[:xdigit:]] (Bug#36167) --- v2: * add changed function names. * more files changed. I'm changing here 2 non-lisp files: 1. mapconv — here I change "sed", sed supports xdigit 2. gitlog-to-changelog: this one is perl. Perl supports xdigit too. I compared whether I changed all files from Mattias's log, and turned out I changed even more of them :) A regex I noted that logger didn't catch was the change in lisp/progmodes/ebnf-abn.el file: the regex was assigned there through let before being used with (skip-chars-forward) admin/charsets/mapconv | 2 +- build-aux/gitlog-to-changelog | 6 +++--- lisp/calc/calc-aent.el | 2 +- lisp/calc/calc-ext.el | 4 ++-- lisp/calc/calc-lang.el | 2 +- lisp/cedet/semantic/java.el | 4 ++-- lisp/cedet/semantic/lex.el | 4 ++-- lisp/dnd.el | 2 +- lisp/emulation/cua-rect.el | 2 +- lisp/epg.el | 14 +++++++------- lisp/faces.el | 2 +- lisp/gnus/gnus-art.el | 8 ++++---- lisp/gnus/mml-sec.el | 2 +- lisp/gnus/nneething.el | 2 +- lisp/htmlfontify.el | 2 +- lisp/international/mule-cmds.el | 2 +- lisp/mail/rfc2231.el | 2 +- lisp/net/shr-color.el | 2 +- lisp/nxml/nxml-maint.el | 4 ++-- lisp/nxml/rng-cmpct.el | 2 +- lisp/nxml/rng-uri.el | 10 +++++----- lisp/nxml/rng-xsd.el | 4 ++-- lisp/nxml/xmltok.el | 2 +- lisp/nxml/xsd-regexp.el | 2 +- lisp/org/org-mobile.el | 4 ++-- lisp/org/org-table.el | 6 +++--- lisp/progmodes/ada-mode.el | 6 +++--- lisp/progmodes/cc-mode.el | 22 +++++++++++----------- lisp/progmodes/cperl-mode.el | 8 ++++---- lisp/progmodes/ebnf-abn.el | 2 +- lisp/progmodes/ebnf-dtd.el | 16 ++++++++-------- lisp/progmodes/ebnf-ebx.el | 2 +- lisp/progmodes/hideif.el | 4 ++-- lisp/progmodes/prolog.el | 2 +- lisp/progmodes/vera-mode.el | 2 +- lisp/progmodes/verilog-mode.el | 8 ++++---- lisp/textmodes/css-mode.el | 6 +++--- lisp/textmodes/sgml-mode.el | 2 +- lisp/version.el | 2 +- lisp/xml.el | 8 ++++---- test/src/emacs-module-tests.el | 2 +- 41 files changed, 95 insertions(+), 95 deletions(-) diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index 8e19972f3d..2696b13a52 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -118,7 +118,7 @@ AWK= # Source format is: # 0xXX 0xYYYY sed -n -e "${2}p" < $1 \ - | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ + | sed -e 's/\(0x[[:xdigit:]]*\)[^0]*\(0x[[:xdigit:]]*\).*/\1 \2/' \ | sort | ${AWKPROG} elif [ "$3" = "UNICODE" ] ; then # Source format is: diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index deddef2446..ebbcb522e8 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -174,7 +174,7 @@ sub parse_amend_file($) if (!$in_code) { - $line =~ /^([0-9a-fA-F]{40})$/ + $line =~ /^([[:xdigit:]]{40})$/ or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"), $fail = 1, next; $sha = lc $1; @@ -288,7 +288,7 @@ sub git_dir_option($) my ($sha, $rest) = split ':', $log, 2; defined $sha or die "$ME:$.: malformed log entry\n"; - $sha =~ /^[0-9a-fA-F]{40}$/ + $sha =~ /^[[:xdigit:]]{40}$/ or die "$ME:$.: invalid SHA1: $sha\n"; my $skipflag = 0; @@ -376,7 +376,7 @@ sub git_dir_option($) @skipshas = (); next; } - if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/) + if ($found && $_ =~ /^([[:xdigit:]]{7,}) [^ ]/) { push ( @skipshas, $1 ); } diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index f16e665fc3..f1ef5c170b 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el @@ -728,7 +728,7 @@ math-read-token math-exp-str (1- math-exp-pos)) (1- math-exp-pos)))))) (or (and (memq calc-language calc-lang-c-type-hex) - (eq (string-match "0[xX][0-9a-fA-F]+" math-exp-str + (eq (string-match "0[xX][[:xdigit:]]+" math-exp-str math-exp-pos) math-exp-pos)) (string-match "_?\\([0-9]+.?0*@ *\\)?\\([0-9]+.?0*' *\\)?\\(0*\\([2-9]\\|1[0-4]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-dA-D.]+[eE][-+_]?[0-9]+\\|0*\\([2-9]\\|[0-2][0-9]\\|3[0-6]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-zA-Zα-ωΑ-Ω:.]+\\|[0-9]+:[0-9:]+\\|[0-9.]+\\([eE][-+_]?[0-9]+\\)?\"?\\)?" diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 1456fb2857..c7b4c3b091 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el @@ -3019,13 +3019,13 @@ math-read-number-fancy ;; C language hexadecimal notation ((and (eq calc-language 'c) - (string-match "^0[xX]\\([0-9a-fA-F]+\\)$" s)) + (string-match "^0[xX]\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) ;; Pascal language hexadecimal notation ((and (eq calc-language 'pascal) - (string-match "^\\$\\([0-9a-fA-F]+\\)$" s)) + (string-match "^\\$\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el index ee107df39c..4a9771d743 100644 --- a/lisp/calc/calc-lang.el +++ b/lisp/calc/calc-lang.el @@ -243,7 +243,7 @@ calc-pascal-language (put 'pascal 'math-lang-read-symbol '((?\$ (eq (string-match - "\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" + "\\(\\$[[:xdigit:]]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" math-exp-str math-exp-pos) math-exp-pos) (setq math-exp-token 'number diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el index 54cce96545..7f9c93b906 100644 --- a/lisp/cedet/semantic/java.el +++ b/lisp/cedet/semantic/java.el @@ -51,7 +51,7 @@ semantic-java-number-regexp "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -63,7 +63,7 @@ semantic-java-number-regexp [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el index 2690122f06..f1c6b01418 100644 --- a/lisp/cedet/semantic/lex.el +++ b/lisp/cedet/semantic/lex.el @@ -596,7 +596,7 @@ semantic-lex-number-expression "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -609,7 +609,7 @@ semantic-lex-number-expression [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/dnd.el b/lisp/dnd.el index 459a7238dc..973af7e518 100644 --- a/lisp/dnd.el +++ b/lisp/dnd.el @@ -138,7 +138,7 @@ dnd-get-local-file-uri (defsubst dnd-unescape-uri (uri) (replace-regexp-in-string - "%[A-Fa-f0-9][A-Fa-f0-9]" + "%[[:xdigit:]][[:xdigit:]]" (lambda (arg) (let ((str (make-string 1 0))) (aset str 0 (string-to-number (substring arg 1) 16)) diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el index 706634a501..1a19cc2910 100644 --- a/lisp/emulation/cua-rect.el +++ b/lisp/emulation/cua-rect.el @@ -1127,7 +1127,7 @@ cua-incr-rectangle (cua--rectangle-operation 'keep nil t 1 nil (lambda (_s e _l _r) (cond - ((re-search-forward "0x\\([0-9a-fA-F]+\\)" e t) + ((re-search-forward "0x\\([[:xdigit:]]+\\)" e t) (let* ((txt (cua--filter-buffer-noprops (match-beginning 1) (match-end 1))) (n (string-to-number txt 16)) (fmt (format "0x%%0%dx" (length txt)))) diff --git a/lisp/epg.el b/lisp/epg.el index 0400716845..1d2f5be818 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -950,7 +950,7 @@ 'epg--time-from-seconds (defun epg--status-ERRSIG (context string) (if (string-match "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \ -\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)" +\\([[:xdigit:]][[:xdigit:]]\\) \\([^ ]+\\) \\([0-9]+\\)" string) (let ((signature (epg-make-signature 'error))) (epg-context-set-result-for @@ -974,7 +974,7 @@ epg--status-VALIDSIG (when (and signature (eq (epg-signature-status signature) 'good) (string-match "\\`\\([^ ]+\\) [^ ]+ \\([^ ]+\\) \\([^ ]+\\) \ -\\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \ +\\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([[:xdigit:]][[:xdigit:]]\\) \ \\(.*\\)" string)) (setf (epg-signature-fingerprint signature) @@ -1144,7 +1144,7 @@ epg--status-DELETE_PROBLEM (defun epg--status-SIG_CREATED (context string) (if (string-match "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \ -\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\) " string) +\\([[:xdigit:]][[:xdigit:]]\\) \\(.*\\) " string) (epg-context-set-result-for context 'sign (cons (epg-make-new-signature @@ -2021,7 +2021,7 @@ epg-edit-key (defun epg--decode-percent-escape (string) (let ((index 0)) - (while (string-match "%\\(\\(%\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" + (while (string-match "%\\(\\(%\\)\\|\\([[:xdigit:]][[:xdigit:]]\\)\\)" string index) (if (match-beginning 2) (setq string (replace-match "%" t t string) @@ -2034,7 +2034,7 @@ epg--decode-percent-escape (defun epg--decode-hexstring (string) (let ((index 0)) - (while (eq index (string-match "[0-9A-Fa-f][0-9A-Fa-f]" string index)) + (while (eq index (string-match "[[:xdigit:]][[:xdigit:]]" string index)) (setq string (replace-match (string (string-to-number (match-string 0 string) 16)) t t string) @@ -2044,7 +2044,7 @@ epg--decode-hexstring (defun epg--decode-quotedstring (string) (let ((index 0)) (while (string-match "\\\\\\(\\([,=+<>#;\\\"]\\)\\|\ -\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" +\\([[:xdigit:]][[:xdigit:]]\\)\\)" string index) (if (match-beginning 2) (setq string (replace-match "\\2" t nil string) @@ -2081,7 +2081,7 @@ epg-dn-from-string string index)) (setq index (match-end 0) value (epg--decode-quotedstring (match-string 0 string))) - (if (eq index (string-match "#\\([0-9A-Fa-f]+\\)" string index)) + (if (eq index (string-match "#\\([[:xdigit:]]+\\)" string index)) (setq index (match-end 0) value (epg--decode-hexstring (match-string 1 string))) (if (eq index (string-match "\"\\([^\\\"]\\|\\\\.\\)*\"" diff --git a/lisp/faces.el b/lisp/faces.el index 89b598669c..f9e8c6c58b 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -1997,7 +1997,7 @@ read-color (when (and convert-to-RGB (not (string-equal color ""))) (let ((components (x-color-values color))) - (unless (string-match-p "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color) + (unless (string-match-p "^#\\(?:[[:xdigit:]][[:xdigit:]][[:xdigit:]]\\)+$" color) (setq color (format "#%04X%04X%04X" (logand 65535 (nth 0 components)) (logand 65535 (nth 1 components)) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index d826faca5b..11782998f5 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -7426,10 +7426,10 @@ gnus-button-mid-or-mail-heuristic-alist (-2.0 . "^[0-9]") (-1.0 . "^[0-9][0-9]") ;; - ;; -3.0 /^[0-9][0-9a-fA-F]{2,2}/; - (-3.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") - ;; -5.0 /^[0-9][0-9a-fA-F]{3,3}/; - (-5.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") + ;; -3.0 /^[0-9][[:xdigit:]]{2,2}/; + (-3.0 . "^[0-9][[:xdigit:]][[:xdigit:]][^[:xdigit:]]") + ;; -5.0 /^[0-9][[:xdigit:]]{3,3}/; + (-5.0 . "^[0-9][[:xdigit:]][[:xdigit:]][[:xdigit:]][^[:xdigit:]]") ;; (-3.0 . "[0-9][0-9][0-9][0-9][0-9][^0-9].*@") ;; "[0-9]{5,}.*\@" (-3.0 . "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9].*@") diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el index db7489fbf1..02a27b367c 100644 --- a/lisp/gnus/mml-sec.el +++ b/lisp/gnus/mml-sec.el @@ -725,7 +725,7 @@ mml-secure-find-usable-keys is expired or revoked. If optional JUSTONE is not nil, return the first key instead of a list." (let* ((keys (epg-list-keys context name)) - (iskeyid (string-match "\\(0x\\)?\\([0-9a-fA-F]\\{8,\\}\\)" name)) + (iskeyid (string-match "\\(0x\\)?\\([[:xdigit:]]\\{8,\\}\\)" name)) (fingerprint (match-string 2 name)) result) (when (and iskeyid (>= (length keys) 2)) diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el index f64007aaf7..c3d511bc6e 100644 --- a/lisp/gnus/nneething.el +++ b/lisp/gnus/nneething.el @@ -297,7 +297,7 @@ nneething-encode-file-name (defun nneething-decode-file-name (file &optional coding-system) "Decode the name of the FILE is encoded in CODING-SYSTEM." (let ((pos 0) buf) - (while (string-match "%\\([0-9a-fA-F][0-9a-fA-F]\\)" file pos) + (while (string-match "%\\([[:xdigit:]][[:xdigit:]]\\)" file pos) (setq buf (cons (string (string-to-number (match-string 1 file) 16)) (cons (substring file pos (match-beginning 0)) buf)) pos (match-end 0))) diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index f37a76cd7b..0466e7c024 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el @@ -566,7 +566,7 @@ hfy-facemap-assoc (defvar hfy-tmpfont-stack nil "An alist of derived fonts resulting from overlays.") -(defconst hfy-hex-regex "[0-9A-Fa-f]") +(defconst hfy-hex-regex "[[:xdigit:]]") (defconst hfy-triplet-regex (concat diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 47b07479c3..1edf80d14c 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -3079,7 +3079,7 @@ read-char-by-name (char (cond ((char-from-name input t)) - ((string-match-p "\\`[0-9a-fA-F]+\\'" input) + ((string-match-p "\\`[[:xdigit:]]+\\'" input) (ignore-errors (string-to-number input 16))) ((string-match-p "\\`#\\([bBoOxX]\\|[0-9]+[rR]\\)[0-9a-zA-Z]+\\'" input) diff --git a/lisp/mail/rfc2231.el b/lisp/mail/rfc2231.el index 0a0983c25f..6ddb2964e5 100644 --- a/lisp/mail/rfc2231.el +++ b/lisp/mail/rfc2231.el @@ -223,7 +223,7 @@ rfc2231-decode-encoded-string (mm-with-unibyte-buffer (insert value) (goto-char (point-min)) - (while (re-search-forward "%\\([0-9A-Fa-f][0-9A-Fa-f]\\)" nil t) + (while (re-search-forward "%\\([[:xdigit:]][[:xdigit:]]\\)" nil t) (insert (prog1 (string-to-number (match-string 1) 16) diff --git a/lisp/net/shr-color.el b/lisp/net/shr-color.el index 2d6cf68d8f..af0b99c76f 100644 --- a/lisp/net/shr-color.el +++ b/lisp/net/shr-color.el @@ -235,7 +235,7 @@ shr-color->hexadecimal (cond ;; Hexadecimal color: #abc or #aabbcc ((string-match - "\\(#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?\\)" + "\\(#[[:xdigit:]]\\{3\\}[[:xdigit:]]\\{3\\}?\\)" color) (match-string 1 color)) ;; rgb() or rgba() colors diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el index 2956efb736..c524567a5b 100644 --- a/lisp/nxml/nxml-maint.el +++ b/lisp/nxml/nxml-maint.el @@ -34,10 +34,10 @@ nxml-insert-target-repertoire-glyph-set (let (lst head) (with-current-buffer (find-file-noselect file) (goto-char (point-min)) - (while (re-search-forward "^ *\\([a-fA-F0-9]\\{2\\}\\)[ \t]+" nil t) + (while (re-search-forward "^ *\\([[:xdigit:]]\\{2\\}\\)[ \t]+" nil t) (let ((row (match-string 1)) (eol (line-end-position))) - (while (re-search-forward "\\([a-fA-F0-9]\\{2\\}\\)-\\([a-fA-F0-9]\\{2\\}\\)\\|\\([a-fA-F0-9]\\{2\\}\\)" eol t) + (while (re-search-forward "\\([[:xdigit:]]\\{2\\}\\)-\\([[:xdigit:]]\\{2\\}\\)\\|\\([[:xdigit:]]\\{2\\}\\)" eol t) (setq lst (cons (if (match-beginning 3) (concat "#x" row (match-string 3)) diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el index d36f9d92f2..60c871990e 100644 --- a/lisp/nxml/rng-cmpct.el +++ b/lisp/nxml/rng-cmpct.el @@ -369,7 +369,7 @@ rng-c-process-escapes (and pos (rng-c-error "Nul character found (binary file?)"))) (let ((offset 0)) - (while (re-search-forward "\\\\x+{\\([0-9a-fA-F]+\\)}" + (while (re-search-forward "\\\\x+{\\([[:xdigit:]]+\\)}" (point-max) t) (let* ((ch (decode-char 'ucs (string-to-number (match-string 1) 16)))) diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el index 798475bbc3..5a67cc7f14 100644 --- a/lisp/nxml/rng-uri.el +++ b/lisp/nxml/rng-uri.el @@ -68,7 +68,7 @@ rng-uri-pattern-file-name-replace-match ;; pattern is either nil or match or replace (defun rng-uri-file-name-1 (uri pattern) - (unless (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F]{2}\\)*\\'" uri) + (unless (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]]{2}\\)*\\'" uri) (rng-uri-error "Bad escapes in URI `%s'" uri)) (setq uri (rng-uri-unescape-multibyte uri)) (let* ((components @@ -299,7 +299,7 @@ rng-join-path (mapconcat 'identity segments "/"))) (defun rng-uri-unescape-multibyte (str) - (replace-regexp-in-string "\\(?:%[89a-fA-F][0-9a-fA-F]\\)+" + (replace-regexp-in-string "\\(?:%[89a-fA-F][[:xdigit:]]\\)+" 'rng-multibyte-percent-decode str)) @@ -310,7 +310,7 @@ rng-multibyte-percent-decode 'utf-8)) (defun rng-uri-unescape-unibyte (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]" (lambda (h) (string-to-number (substring h 1) 16)) str @@ -318,7 +318,7 @@ rng-uri-unescape-unibyte t)) (defun rng-uri-unescape-unibyte-match (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]\\|[^%]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") "\\([^/]*\\)" @@ -333,7 +333,7 @@ rng-uri-unescape-unibyte-match (defun rng-uri-unescape-unibyte-replace (str next-match-index) (replace-regexp-in-string - "%[0-7][0-9a-fA-F]\\|[^%]" + "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") (let ((n next-match-index)) diff --git a/lisp/nxml/rng-xsd.el b/lisp/nxml/rng-xsd.el index f308b049f3..582d08e149 100644 --- a/lisp/nxml/rng-xsd.el +++ b/lisp/nxml/rng-xsd.el @@ -330,7 +330,7 @@ rng-xsd-convert-token (match-string 1 string))) (defun rng-xsd-convert-hex-binary (string) - (and (string-match "\\`[ \r\n\t]*\\(\\(?:[0-9A-Fa-f][0-9A-Fa-f]\\)*\\)[ \r\n\t]*\\'" + (and (string-match "\\`[ \r\n\t]*\\(\\(?:[[:xdigit:]][[:xdigit:]]\\)*\\)[ \r\n\t]*\\'" string) (downcase (match-string 1 string)))) @@ -360,7 +360,7 @@ rng-xsd-base64-binary-length n))) (defun rng-xsd-convert-any-uri (string) - (and (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F][0-9a-fA-F]\\)*\\'" string) + (and (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]][[:xdigit:]]\\)*\\'" string) (string-match "\\`[^#]*\\(?:#[^#]*\\)?\\'" string) (string-match "\\`\\(?:[a-zA-Z][-+.A-Za-z0-9]*:.+\\|[^:]*\\(?:[#/?].*\\)?\\)\\'" string) string)) diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el index afa33e064f..3cab5ed9b7 100644 --- a/lisp/nxml/xmltok.el +++ b/lisp/nxml/xmltok.el @@ -413,7 +413,7 @@ xmltok-forward (xmltok-g decimal-ref-close ";") opt)) (hex-ref (xmltok+ "x" open - (xmltok-g hex "[0-9a-fA-F]" +) + (xmltok-g hex "[[:xdigit:]]" +) (xmltok-g hex-ref-close ";") opt close opt)) (char-ref diff --git a/lisp/nxml/xsd-regexp.el b/lisp/nxml/xsd-regexp.el index 7ae169c19c..c002e6fd9f 100644 --- a/lisp/nxml/xsd-regexp.el +++ b/lisp/nxml/xsd-regexp.el @@ -702,7 +702,7 @@ xsdre-gen-categories (with-current-buffer (find-file-noselect file) (goto-char (point-min)) (mapc (lambda (x) (put x 'xsdre-ranges nil)) xsdre-gen-categories) - (while (re-search-forward "^\\([0-9A-Fa-f]*\\);[^;]*;\\([A-Z][a-z]\\);" + (while (re-search-forward "^\\([[:xdigit:]]*\\);[^;]*;\\([A-Z][a-z]\\);" nil t) (let* ((sym (intern (match-string-no-properties 2))) diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index 8b4e895388..a1552606eb 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -472,7 +472,7 @@ org-mobile-copy-agenda-files (concat (shell-quote-argument org-mobile-checksum-binary) " " (shell-quote-argument (expand-file-name file))))) - (when (string-match "[a-fA-F0-9]\\{30,40\\}" check) + (when (string-match "[[:xdigit:]]\\{30,40\\}" check) (push (cons link-name (match-string 0 check)) org-mobile-checksum-files)))) @@ -761,7 +761,7 @@ org-mobile-update-checksum-for-capture-file (buffer (find-file-noselect file))) (when buffer (with-current-buffer buffer - (when (re-search-forward (concat "\\([0-9a-fA-F]\\{30,\\}\\).*?" + (when (re-search-forward (concat "\\([[:xdigit:]]\\{30,\\}\\).*?" (regexp-quote org-mobile-capture-file) "[ \t]*$") nil t) (goto-char (match-beginning 1)) diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index 147527da1d..513a534d9b 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -155,7 +155,7 @@ org-table-default-size :type 'string) (defcustom org-table-number-regexp - "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$" + "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$" "Regular expression for recognizing numbers in table columns. If a table column contains mostly numbers, it will be aligned to the right. If not, it will be aligned to the left. @@ -180,9 +180,9 @@ org-table-number-regexp (const :tag "Exponential, Floating point, Integer" "^[-+]?[0-9.]+\\([eEdD][-+0-9]+\\)?$") (const :tag "Very General Number-Like, including hex and Calc radix" - "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") + "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") (const :tag "Very General Number-Like, including hex and Calc radix, allows comma as decimal mark" - "^\\([<>]?[-+^.,0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") + "^\\([<>]?[-+^.,0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") (string :tag "Regexp:"))) (defcustom org-table-number-fraction 0.5 diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el index 77c1e5e2d8..404e704373 100644 --- a/lisp/progmodes/ada-mode.el +++ b/lisp/progmodes/ada-mode.el @@ -909,7 +909,7 @@ ada-mode-symbol-syntax-table change)) (replace-match "'A'")) (goto-char from) - (while (re-search-forward "\\(#[0-9a-fA-F]*#\\)" to t) + (while (re-search-forward "\\(#[[:xdigit:]]*#\\)" to t) (setq change (cons (list (match-beginning 1) (length (match-string 1)) (match-string 1)) @@ -1013,7 +1013,7 @@ ada-in-string-or-comment-p (defsubst ada-in-numeric-literal-p () "Return t if point is after a prefix of a numeric literal." - (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position))) + (looking-back "\\([0-9]+#[[:xdigit:]_]+\\)" (line-beginning-position))) ;;------------------------------------------------------------------ ;; Contextual menus @@ -5213,7 +5213,7 @@ ada-font-lock-keywords '("<<\\(\\sw+\\)>>" 1 font-lock-constant-face) ;; Highlight based-numbers (R. Reagan <robin-reply <at> reagans.org>) - (list "\\([0-9]+#[0-9a-fA-F_]+#\\)" '(1 font-lock-constant-face t)) + (list "\\([0-9]+#[[:xdigit:]_]+#\\)" '(1 font-lock-constant-face t)) ;; Ada unnamed numerical constants (list "\\W\\([-+]?[0-9._]+\\)\\>" '(1 font-lock-constant-face)) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 6afcb08a7c..6370c9c3a4 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1415,7 +1415,7 @@ c-after-change-mark-abnormal-strings (defconst c-maybe-quoted-number-head (concat "\\(0\\(" - "\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)" + "\\([Xx]\\([[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*'?\\)?\\)" "\\|" "\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)" "\\|" @@ -1435,7 +1435,7 @@ c-quoted-number-head-before-point (save-excursion (let ((here (point)) found) - (skip-chars-backward "0-9a-fA-F'") + (skip-chars-backward "[:xdigit:]'") (if (and (memq (char-before) '(?x ?X)) (eq (char-before (1- (point))) ?0)) (backward-char 2)) @@ -1449,7 +1449,7 @@ c-quoted-number-head-before-point (defconst c-maybe-quoted-number-tail (concat "\\(" - "\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([xX']?[[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([bB']?[01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1469,7 +1469,7 @@ c-quoted-number-tail-after-point (defconst c-maybe-quoted-number (concat "\\(0\\(" - "\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([Xx][[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([Bb][01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1487,9 +1487,9 @@ c-quoted-number-straddling-point (when c-has-quoted-numbers (save-excursion (let ((here (point)) - (bound (progn (skip-chars-forward "0-9a-fA-F'") (point)))) + (bound (progn (skip-chars-forward "[:xdigit:]'") (point)))) (goto-char here) - (when (< (skip-chars-backward "0-9a-fA-F'") 0) + (when (< (skip-chars-backward "[:xdigit:]'") 0) (if (and (memq (char-before) '(?x ?X)) (eq (char-before (1- (point))) ?0)) (backward-char 2)) @@ -1530,7 +1530,7 @@ c-parse-quotes-before-change (if (>= (point) c-new-BEG) (setq c-new-BEG (match-beginning 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-BEG) (setq c-new-BEG (1- (match-beginning 0))))) @@ -1559,7 +1559,7 @@ c-parse-quotes-before-change (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) @@ -1579,8 +1579,8 @@ c-parse-quotes-before-change ((c-quoted-number-tail-after-point) (setq c-new-END (match-end 0))) ((looking-at - "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\|.\\)?\ -\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)\\)*'") + "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\|.\\)?\ +\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)\\)*'") (setq c-new-END (match-end 0)))) ;; Remove the '(1) syntax-table property from any "'"s within (c-new-BEG @@ -1632,7 +1632,7 @@ c-parse-quotes-after-change 'c-digit-separator t ?') (goto-char num-end)) ((looking-at - "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\ + "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\ \\)'") ; balanced quoted expression. (goto-char (match-end 0))) ((looking-at "\\\\'") ; Anomalous construct. diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index ba007d67c0..c58acf0c2f 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -3507,18 +3507,18 @@ cperl-look-at-leading-count (defsubst cperl-highlight-charclass (endbracket dashface bsface onec-space) (let ((l '(1 5 7)) ll lle lll ;; 2 groups, the first takes the whole match (include \[trnfabe]) - (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) + (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) (while ; look for unescaped - between non-classes (re-search-forward ;; On 19.33, certain simplifications lead ;; to bugs (as in [^a-z] \\| [trnfabe] ) (concat ; 1: SingleChar (include \[trnfabe]) singleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\(" ; 3: DASH SingleChar (match optionally) "\\(-\\)" ; 4: DASH singleChar ; 5: SingleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\)?" "\\|" "\\(" ; 7: other escapes @@ -4420,7 +4420,7 @@ cperl-find-pods-heres "\\=[0123456789]*" (1- e) 'to-end)) (and (eq qtag ?x) (re-search-forward - "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" + "\\=[[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}" (1- e) 'to-end)) (and (memq qtag (append "pPN" nil)) (re-search-forward "\\={[^{}]+}\\|." diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el index 53d37b689f..b00308591f 100644 --- a/lisp/progmodes/ebnf-abn.el +++ b/lisp/progmodes/ebnf-abn.el @@ -640,7 +640,7 @@ ebnf-abn-character (let* ((char (following-char)) (chars (cond ((or (= char ?B) (= char ?b)) "01") ((or (= char ?D) (= char ?d)) "0-9") - ((or (= char ?X) (= char ?x)) "0-9A-Fa-f") + ((or (= char ?X) (= char ?x)) "[:xdigit:]") (t (error "Invalid terminal value"))))) (forward-char) (or (> (skip-chars-forward chars ebnf-limit) 0) diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el index 94d9643261..74ff1f47d1 100644 --- a/lisp/progmodes/ebnf-dtd.el +++ b/lisp/progmodes/ebnf-dtd.el @@ -324,7 +324,7 @@ ;; /* Character Reference */ ;; ;; CharRef ::= '&#' [0-9]+ ';' -;; | '&#x' [0-9a-fA-F]+ ';' +;; | '&#x' [[:xdigit:]]+ ';' ;; [WFC: Legal Character] ;; ;; @@ -915,9 +915,9 @@ ebnf-dtd-operators ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" +;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" (defun ebnf-dtd-attlistdecl () @@ -945,7 +945,7 @@ ebnf-dtd-attlistdecl (setq token (ebnf-dtd-lex))) (or (and (eq token 'string) (string-match - "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" + "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" ebnf-dtd-lex)) (error "Invalid default value in ATTLIST declaration")))) (or (eq token 'end-decl) @@ -986,9 +986,9 @@ ebnf-dtd-namelist ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" +;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" (defun ebnf-dtd-entitydecl () @@ -1001,7 +1001,7 @@ ebnf-dtd-entitydecl (setq token (ebnf-dtd-lex)) (if (eq token 'string) (if (string-match - "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" + "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" ebnf-dtd-lex) (setq token (ebnf-dtd-lex)) (error "Invalid ENTITY definition")) @@ -1242,7 +1242,7 @@ ebnf-dtd-lex (setq ebnf-dtd-lex (if (/= (following-char) ?x) (ebnf-dtd-char-ref "&#" "0-9") (forward-char) - (ebnf-dtd-char-ref "&#x" "0-9a-fA-F"))) + (ebnf-dtd-char-ref "&#x" "[:xdigit:]"))) 'char-ref)) ;; miscellaneous: (, ), [, ], =, |, *, +, >, `,' (t diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el index 25500f1618..dc1a60f374 100644 --- a/lisp/progmodes/ebnf-ebx.el +++ b/lisp/progmodes/ebnf-ebx.el @@ -658,7 +658,7 @@ ebnf-ebx-hex-character (or no-error (error "Invalid hexadecimal character")) (forward-char) - (or (> (skip-chars-forward "0-9A-Fa-f" ebnf-limit) 0) + (or (> (skip-chars-forward "[:xdigit:]" ebnf-limit) 0) (error "Invalid hexadecimal character")))) diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 32b0b7551f..1b06077005 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -540,7 +540,7 @@ hif-valid-token-list (defconst hif-token-regexp (concat (regexp-opt (mapcar 'car hif-token-alist)) - "\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*" + "\\|0x[[:xdigit:]]+\\.?[[:xdigit:]]*" "\\|[0-9]+\\.?[0-9]*" ;; decimal/octal "\\|\\w+")) @@ -595,7 +595,7 @@ hif-tokenize ;; 1. postfix 'l', 'll', 'ul' and 'ull' ;; 2. floating number formats (like 1.23e4) ;; 3. 098 is interpreted as octal conversion error - (if (string-match "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" + (if (string-match "0x\\([[:xdigit:]]+\\.?[[:xdigit:]]*\\)" token) (hif-string-to-number (match-string 1 token) 16)) ;; hex (if (string-match "\\`0[0-9]+\\(\\.[0-9]+\\)?\\'" token) diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 296a7ac3c9..780eff2d8a 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -1071,7 +1071,7 @@ prolog-syntax-propertize-function ;; Supposedly, ISO-Prolog wants \NNN\ for octal and \xNNN\ for hexadecimal ;; escape sequences in atoms, so be careful not to let the terminating \ ;; escape a subsequent quote. - ("\\\\[x0-7][0-9a-fA-F]*\\(\\\\\\)" (1 "_")) + ("\\\\[x0-7][[:xdigit:]]*\\(\\\\\\)" (1 "_")) ))) (defun prolog-mode-variables () diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el index f34b21e4cf..21d3db91ad 100644 --- a/lisp/progmodes/vera-mode.el +++ b/lisp/progmodes/vera-mode.el @@ -635,7 +635,7 @@ vera-font-lock-keywords (list (concat "^\\s-*" vera-rvm-types-regexp "\\s-*\\(\\[[^]]+\\]\\s-+\\)?") '(vera-font-lock-match-item nil nil (1 font-lock-variable-name-face))) ;; highlight numbers - '("\\([0-9]*'[bdoh][0-9a-fA-FxXzZ_]+\\)" 1 vera-font-lock-number) + '("\\([0-9]*'[bdoh][[:xdigit:]xXzZ_]+\\)" 1 vera-font-lock-number) ;; highlight filenames in #include directives '("^#\\s-*include\\s-*\\(<[^>\"\n]*>?\\)" 1 font-lock-string-face) diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index eeed4c0d7c..12b7257ac2 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -2757,7 +2757,7 @@ verilog-optional-signed-range-re "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?")) (defconst verilog-macroexp-re "`\\sw+") -(defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)") +(defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][[:xdigit:]_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)") (defconst verilog-declaration-re-2-no-macro (concat "\\s-*" verilog-declaration-re "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)" @@ -3287,7 +3287,7 @@ verilog-font-lock-grouping-keywords-face 'font-lock-preprocessor-face 'font-lock-type-face)) ;; Fontify delays/numbers - '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\([0-9_.]+\\('s?[hdxbo][0-9a-fA-F_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)" + '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\([0-9_.]+\\('s?[hdxbo][[:xdigit:]_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)" 0 font-lock-type-face append) ;; Fontify property/sequence cycle delays - these start with '##' '("\\(##\\(\\sw+\\|\\[[^]]+\\]\\)\\)" @@ -9177,7 +9177,7 @@ verilog-read-always-signals-recurse (setq end-else-check t)) (forward-char 1)) ((equal keywd "'") - (cond ((looking-at "'[sS]?[hdxboHDXBO]?[ \t]*[0-9a-fA-F_xzXZ?]+") + (cond ((looking-at "'[sS]?[hdxboHDXBO]?[ \t]*[[:xdigit:]_xzXZ?]+") (goto-char (match-end 0))) ((looking-at "'{") (forward-char 2) @@ -9867,7 +9867,7 @@ verilog-is-number "Return true if SYMBOL is number-like." (or (string-match "^[0-9 \t:]+$" symbol) (string-match "^[---]*[0-9]+$" symbol) - (string-match "^[0-9 \t]+'s?[hdxbo][0-9a-fA-F_xz? \t]*$" symbol))) + (string-match "^[0-9 \t]+'s?[hdxbo][[:xdigit:]_xz? \t]*$" symbol))) (defun verilog-symbol-detick (symbol wing-it) "Return an expanded SYMBOL name without any defines. diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 5d5d787945..b0653bce81 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -873,7 +873,7 @@ css-syntax-propertize-function (css--uri-re (1 "|") (2 "|")))) (defconst css-escapes-re - "\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)") + "\\\\\\(?:[^\000-\037\177]\\|[[:xdigit:]]+[ \n\t\r\f]?\\)") (defconst css-nmchar-re (concat "\\(?:[-[:alnum:]]\\|" css-escapes-re "\\)")) (defconst css-nmstart-re (concat "\\(?:[[:alpha:]]\\|" css-escapes-re "\\)")) (defconst css-ident-re ;; (concat css-nmstart-re css-nmchar-re "*") @@ -1079,10 +1079,10 @@ css--colors-regexp (regexp-opt (mapcar #'car css--color-map) 'symbols) "\\|" ;; Short hex. css-color-4 adds alpha. - "\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)" + "\\(#[[:xdigit:]]\\{3,4\\}\\b\\)" "\\|" ;; Long hex. css-color-4 adds alpha. - "\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)" + "\\(#\\(?:[[:xdigit:]][[:xdigit:]]\\)\\{3,4\\}\\b\\)" "\\|" ;; RGB. "\\(\\_<rgba?(\\)" diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 0c5d5e56a6..602effe9af 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1293,7 +1293,7 @@ sgml-quote (if unquotep ;; FIXME: We should unquote other named character references as well. (while (re-search-forward - "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][0-9a-fA-F]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" + "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][[:xdigit:]]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" nil t) (replace-match (string diff --git a/lisp/version.el b/lisp/version.el index d13d8c31e8..b9e2e50d1f 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -120,7 +120,7 @@ emacs-repository-version-git (with-demoted-errors "Error running git rev-parse: %S" (call-process "git" nil '(t nil) nil "rev-parse" "HEAD"))) (progn (goto-char (point-min)) - (looking-at "[0-9a-fA-F]\\{40\\}")) + (looking-at "[[:xdigit:]]\\{40\\}")) (match-string 0))))) (defun emacs-repository-get-version (&optional dir external) diff --git a/lisp/xml.el b/lisp/xml.el index 09ec72f792..833eb8aced 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -194,13 +194,13 @@ xml-nmtoken-re ;; [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)* (defconst xml-nmtokens-re (concat xml-nmtoken-re "\\(?: " xml-name-re "\\)*")) -;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' -(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)") +;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [[:xdigit:]]+ ';' +(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[[:xdigit:]]+;\\)") ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([[:xdigit:]]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' @@ -889,7 +889,7 @@ xml--entity-replacement-text The replacement text is obtained by replacing character references and parameter-entity references." (let ((ref-re (eval-when-compile - (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([0-9a-fA-F]+\\)\\|%\\(" + (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([[:xdigit:]]+\\)\\|%\\(" xml-name-re "\\)\\);"))) children) (while (string-match ref-re string) diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index 5349de055e..96a604f982 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -60,7 +60,7 @@ mod-test-emacs (should (eq 0 (string-match (concat "#<module function " - "\\(at \\(0x\\)?[0-9a-fA-F]+\\( from .*\\)?" + "\\(at \\(0x\\)?[[:xdigit:]]+\\( from .*\\)?" "\\|Fmod_test_sum from .*\\)>") (prin1-to-string (nth 1 descr))))) (should (= (nth 2 descr) 3))) -- 2.21.0
Eli Zaretskii <eliz <at> gnu.org>
:Konstantin Kharlamov <hi-angel <at> yandex.ru>
:Message #127 received at 36167-done <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> Cc: 36167-done <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Date: Sat, 06 Jul 2019 11:04:28 +0300
> From: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> > Date: Thu, 13 Jun 2019 03:18:43 +0300 > > * admin/charsets/mapconv: > * build-aux/gitlog-to-changelog (parse_amend_file) (git_dir_option): > * lisp/progmodes/verilog-mode.el (verilog-delay-re): > (verilog-type-font-keywords) (verilog-read-always-signals-recurse): > (verilog-is-number): Thanks, I pushed this. The log message was mis-formatted, which required me to tediously fix it by hand. Please in the future format the entries using "C-x 4 a" or similar commands, to avoid that, okay? In particular, lines longer than 78 characters abort "git am", so please verify this doesn't happen in the patches you submit. "C-x 4 a" and friends format the entries with leading TABs which you can later remove with "C-x TAB", and that produces the optimal results, including when the log messages are later used to generate ChangeLog files in the release tarballs.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Mon, 08 Jul 2019 09:35:02 GMT) Full text and rfc822 format available.Message #130 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Konstantin Kharlamov <hi-angel <at> yandex.ru> To: 36167 <at> debbugs.gnu.org Cc: Eli Zaretskii <eliz <at> gnu.org> Subject: Re: bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Date: Mon, 08 Jul 2019 12:34:32 +0300
> Thanks, I pushed this. > > The log message was mis-formatted, which required me to tediously fix > it by hand. Please in the future format the entries using "C-x 4 a" > or similar commands, to avoid that, okay? In particular, lines longer > than 78 characters abort "git am", so please verify this doesn't > happen in the patches you submit. "C-x 4 a" and friends format the > entries with leading TABs which you can later remove with "C-x TAB", > and that produces the optimal results, including when the log messages > are later used to generate ChangeLog files in the release tarballs. Thank you! And sorry about that. I wanted to take a look this weekend for problems you mentioned, but haven't got time. Anyway, IIRC I have used "C-x 4 a" to create the commit message, but then I re-formatted it to look more similar to other commits I've seen. Probably I shouldn't have touched it… About git-am: this is unfortunate, I think I haven't seen this problem because apparently "git" refuses to execute local hooks if one have set global hooks with "hooksPath" variable (which since recently I use to pre-format commit message based on modified paths, etc). I'll see what can be done with it. P.S.: I replied on top level since for some reason my email client (Geary) refused to reply the last message directly.
bug-gnu-emacs <at> gnu.org
:bug#36167
; Package emacs
.
(Mon, 08 Jul 2019 12:13:01 GMT) Full text and rfc822 format available.Message #133 received at 36167 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Konstantin Kharlamov <hi-angel <at> yandex.ru> Cc: 36167 <at> debbugs.gnu.org Subject: Re: bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Date: Mon, 08 Jul 2019 15:11:54 +0300
> Date: Mon, 08 Jul 2019 12:34:32 +0300 > From: Konstantin Kharlamov <hi-angel <at> yandex.ru> > Cc: Eli Zaretskii <eliz <at> gnu.org> > > > The log message was mis-formatted, which required me to tediously fix > > it by hand. Please in the future format the entries using "C-x 4 a" > > or similar commands, to avoid that, okay? In particular, lines longer > > than 78 characters abort "git am", so please verify this doesn't > > happen in the patches you submit. "C-x 4 a" and friends format the > > entries with leading TABs which you can later remove with "C-x TAB", > > and that produces the optimal results, including when the log messages > > are later used to generate ChangeLog files in the release tarballs. > > Thank you! And sorry about that. No sweat, mistakes do happen. > Anyway, IIRC I have used "C-x 4 a" to create the commit message, but > then I re-formatted it to look more similar to other commits I've > seen. Probably I shouldn't have touched it… Yes, my recommendation is to do only "C-u -8 C-x TAB" and nothing else to reformat the entries into commit log messages. This just removes the leading whitespace. Also, I recommend to have auto-fill-mode enabled in the buffer where you edit the log messages. > About git-am: this is unfortunate It isn't git-am per se, it's our hooks.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Tue, 06 Aug 2019 11:24:06 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.