* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] @ 2019-06-11 11:59 Konstantin Kharlamov 2019-06-11 12:03 ` bug#36167: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) Konstantin Kharlamov ` (6 more replies) 0 siblings, 7 replies; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-11 11:59 UTC (permalink / raw) To: 36167 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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov @ 2019-06-11 12:03 ` Konstantin Kharlamov 2019-06-11 12:29 ` bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Konstantin Kharlamov ` (5 subsequent siblings) 6 siblings, 0 replies; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-11 12:03 UTC (permalink / raw) To: 36167 Eh, sorry, git send-email is broken, complains on something about perl SSL. This may take some time. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 2019-06-11 12:03 ` bug#36167: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) Konstantin Kharlamov @ 2019-06-11 12:29 ` Konstantin Kharlamov 2019-06-11 13:03 ` Robert Pluim 2019-06-11 14:26 ` bug#36167: [PATCH] Replace manually crafted hex regexes " Paul Eggert ` (4 subsequent siblings) 6 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-11 12:29 UTC (permalink / raw) To: 36167 * 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 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 12:29 ` bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Konstantin Kharlamov @ 2019-06-11 13:03 ` Robert Pluim 2019-06-11 13:17 ` Konstantin Kharlamov 2019-06-11 13:32 ` npostavs 0 siblings, 2 replies; 42+ messages in thread From: Robert Pluim @ 2019-06-11 13:03 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167 >>>>> On Tue, 11 Jun 2019 15:29:25 +0300, Konstantin Kharlamov <Hi-Angel@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 13:03 ` Robert Pluim @ 2019-06-11 13:17 ` Konstantin Kharlamov 2019-06-11 13:30 ` Robert Pluim 2019-06-11 13:32 ` npostavs 1 sibling, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-11 13:17 UTC (permalink / raw) To: Robert Pluim; +Cc: 36167 On Вт, июн 11, 2019 at 15:03, Robert Pluim <rpluim@gmail.com> wrote: >>>>>> On Tue, 11 Jun 2019 15:29:25 +0300, Konstantin Kharlamov >>>>>> <Hi-Angel@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 13:17 ` Konstantin Kharlamov @ 2019-06-11 13:30 ` Robert Pluim 2019-06-12 0:29 ` Konstantin Kharlamov 0 siblings, 1 reply; 42+ messages in thread From: Robert Pluim @ 2019-06-11 13:30 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167 >>>>> On Tue, 11 Jun 2019 16:17:10 +0300, Konstantin Kharlamov <hi-angel@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 13:30 ` Robert Pluim @ 2019-06-12 0:29 ` Konstantin Kharlamov 2019-06-12 2:42 ` Eli Zaretskii 2019-06-12 8:21 ` Robert Pluim 0 siblings, 2 replies; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-12 0:29 UTC (permalink / raw) To: Robert Pluim; +Cc: 36167 В Вт, июн 11, 2019 at 15:30, Robert Pluim <rpluim@gmail.com> написал: >>>>>> On Tue, 11 Jun 2019 16:17:10 +0300, Konstantin Kharlamov >>>>>> <hi-angel@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@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 0:29 ` Konstantin Kharlamov @ 2019-06-12 2:42 ` Eli Zaretskii 2019-06-12 8:21 ` Robert Pluim 1 sibling, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-12 2:42 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: rpluim, 36167 > Date: Wed, 12 Jun 2019 03:29:29 +0300 > From: Konstantin Kharlamov <hi-angel@yandex.ru> > Cc: 36167@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 0:29 ` Konstantin Kharlamov 2019-06-12 2:42 ` Eli Zaretskii @ 2019-06-12 8:21 ` Robert Pluim 2019-06-12 11:19 ` Konstantin Kharlamov 1 sibling, 1 reply; 42+ messages in thread From: Robert Pluim @ 2019-06-12 8:21 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167 >>>>> On Wed, 12 Jun 2019 03:29:29 +0300, Konstantin Kharlamov <hi-angel@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@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 8:21 ` Robert Pluim @ 2019-06-12 11:19 ` Konstantin Kharlamov 2019-06-12 14:55 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-12 11:19 UTC (permalink / raw) To: Robert Pluim; +Cc: 36167 В Ср, июн 12, 2019 at 10:21, Robert Pluim <rpluim@gmail.com> написал: >>>>>> On Wed, 12 Jun 2019 03:29:29 +0300, Konstantin Kharlamov >>>>>> <hi-angel@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@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 11:19 ` Konstantin Kharlamov @ 2019-06-12 14:55 ` Eli Zaretskii 2019-06-12 16:39 ` Konstantin Kharlamov 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2019-06-12 14:55 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: rpluim, 36167 > Date: Wed, 12 Jun 2019 14:19:04 +0300 > From: Konstantin Kharlamov <hi-angel@yandex.ru> > Cc: 36167@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 14:55 ` Eli Zaretskii @ 2019-06-12 16:39 ` Konstantin Kharlamov 2019-06-12 16:51 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-12 16:39 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 36167 В Ср, июн 12, 2019 at 17:55, Eli Zaretskii <eliz@gnu.org> написал: >> Date: Wed, 12 Jun 2019 14:19:04 +0300 >> From: Konstantin Kharlamov <hi-angel@yandex.ru> >> Cc: 36167@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 16:39 ` Konstantin Kharlamov @ 2019-06-12 16:51 ` Eli Zaretskii 2019-06-12 17:09 ` Konstantin Kharlamov 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2019-06-12 16:51 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: rpluim, 36167 > Date: Wed, 12 Jun 2019 19:39:26 +0300 > From: Konstantin Kharlamov <hi-angel@yandex.ru> > Cc: rpluim@gmail.com, 36167@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 16:51 ` Eli Zaretskii @ 2019-06-12 17:09 ` Konstantin Kharlamov 2019-06-12 21:33 ` Lars Ingebrigtsen 0 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-12 17:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rpluim, 36167 В Ср, июн 12, 2019 at 19:51, Eli Zaretskii <eliz@gnu.org> написал: >> Date: Wed, 12 Jun 2019 19:39:26 +0300 >> From: Konstantin Kharlamov <hi-angel@yandex.ru> >> Cc: rpluim@gmail.com, 36167@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 17:09 ` Konstantin Kharlamov @ 2019-06-12 21:33 ` Lars Ingebrigtsen 2019-06-12 21:39 ` Lars Ingebrigtsen 2019-06-12 22:17 ` Andreas Schwab 0 siblings, 2 replies; 42+ messages in thread From: Lars Ingebrigtsen @ 2019-06-12 21:33 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: rpluim, 36167 Konstantin Kharlamov <hi-angel@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 21:33 ` Lars Ingebrigtsen @ 2019-06-12 21:39 ` Lars Ingebrigtsen 2019-06-12 22:17 ` Andreas Schwab 1 sibling, 0 replies; 42+ messages in thread From: Lars Ingebrigtsen @ 2019-06-12 21:39 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: rpluim, 36167 Lars Ingebrigtsen <larsi@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 21:33 ` Lars Ingebrigtsen 2019-06-12 21:39 ` Lars Ingebrigtsen @ 2019-06-12 22:17 ` Andreas Schwab 2019-06-12 22:22 ` Lars Ingebrigtsen 1 sibling, 1 reply; 42+ messages in thread From: Andreas Schwab @ 2019-06-12 22:17 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: rpluim, 36167, Konstantin Kharlamov On Jun 12 2019, Lars Ingebrigtsen <larsi@gnus.org> wrote: > Konstantin Kharlamov <hi-angel@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@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 22:17 ` Andreas Schwab @ 2019-06-12 22:22 ` Lars Ingebrigtsen 2019-06-12 22:48 ` Konstantin Kharlamov 0 siblings, 1 reply; 42+ messages in thread From: Lars Ingebrigtsen @ 2019-06-12 22:22 UTC (permalink / raw) To: Andreas Schwab; +Cc: rpluim, 36167, Konstantin Kharlamov Andreas Schwab <schwab@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-12 22:22 ` Lars Ingebrigtsen @ 2019-06-12 22:48 ` Konstantin Kharlamov 0 siblings, 0 replies; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-12 22:48 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: rpluim, Andreas Schwab, 36167 This is great, thanks everyone! В Чт, июн 13, 2019 at 00:22, Lars Ingebrigtsen <larsi@gnus.org> написал: > Andreas Schwab <schwab@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 13:03 ` Robert Pluim 2019-06-11 13:17 ` Konstantin Kharlamov @ 2019-06-11 13:32 ` npostavs 2019-06-11 14:36 ` Eli Zaretskii 1 sibling, 1 reply; 42+ messages in thread From: npostavs @ 2019-06-11 13:32 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167 Robert Pluim <rpluim@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.) ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] 2019-06-11 13:32 ` npostavs @ 2019-06-11 14:36 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 14:36 UTC (permalink / raw) To: npostavs; +Cc: 36167, Hi-Angel > From: npostavs@gmail.com > Date: Tue, 11 Jun 2019 09:32:23 -0400 > Cc: 36167@debbugs.gnu.org > > Robert Pluim <rpluim@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 2019-06-11 12:03 ` bug#36167: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) Konstantin Kharlamov 2019-06-11 12:29 ` bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Konstantin Kharlamov @ 2019-06-11 14:26 ` Paul Eggert 2019-06-11 14:37 ` Konstantin Kharlamov 2019-06-11 19:56 ` Andy Moreton ` (3 subsequent siblings) 6 siblings, 1 reply; 42+ messages in thread From: Paul Eggert @ 2019-06-11 14:26 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: Mattias Engdegård, 36167 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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 14:26 ` bug#36167: [PATCH] Replace manually crafted hex regexes " Paul Eggert @ 2019-06-11 14:37 ` Konstantin Kharlamov 2019-06-11 15:37 ` Paul Eggert 0 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-11 14:37 UTC (permalink / raw) To: Paul Eggert; +Cc: Mattias Engdegård, 36167 On Вт, июн 11, 2019 at 07:26, Paul Eggert <eggert@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 14:37 ` Konstantin Kharlamov @ 2019-06-11 15:37 ` Paul Eggert 2019-06-11 16:31 ` Mattias Engdegård 0 siblings, 1 reply; 42+ messages in thread From: Paul Eggert @ 2019-06-11 15:37 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: Mattias Engdegård, 36167 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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 15:37 ` Paul Eggert @ 2019-06-11 16:31 ` Mattias Engdegård 2019-06-11 16:50 ` Drew Adams 0 siblings, 1 reply; 42+ messages in thread From: Mattias Engdegård @ 2019-06-11 16:31 UTC (permalink / raw) To: Paul Eggert; +Cc: 36167, Konstantin Kharlamov [-- Attachment #1: Type: text/plain, Size: 1149 bytes --] 11 juni 2019 kl. 17.37 skrev Paul Eggert <eggert@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. [-- Attachment #2: xdigit.log --] [-- Type: application/octet-stream, Size: 47618 bytes --] ; -*- compilation -*- lisp/calc/calc-aent.el:731:41: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 6) "0[xX][0-9a-fA-F]+" ......^ lisp/calc/calc-ext.el:3022:24: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 9) "^0[xX]\\([0-9a-fA-F]+\\)$" ..........^ lisp/calc/calc-ext.el:3028:24: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 6) "^\\$\\([0-9a-fA-F]+\\)$" ........^ lisp/calc/calc-lang.el:246:14: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 5) "\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" .......^ lisp/cedet/semantic/java.el:40:3: In semantic-java-number-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 203) "\\(\\<[0-9]+[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[.][eE][-+]?[0-9]+[fFdD]?\\>\\|\\<[0-9]+[.][fFdD]\\>\\|\\<[0-9]+[.]\\|[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>\\|\\<0[xX][0-9a-fA-F]+[lL]?\\>\\|\\<[0-9]+[lLfFdD]?\\>\\)" .................................................................................................................................................................................................................................^ lisp/cedet/semantic/lex.el:1301:3: In call to define-lex-simple-regex-analyzer: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 203) "\\(\\<[0-9]+[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[.][eE][-+]?[0-9]+[fFdD]?\\>\\|\\<[0-9]+[.][fFdD]\\>\\|\\<[0-9]+[.]\\|[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>\\|\\<0[xX][0-9a-fA-F]+[lL]?\\>\\|\\<[0-9]+[lLfFdD]?\\>\\)" .................................................................................................................................................................................................................................^ lisp/cedet/semantic/lex.el:1923:28: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 203) "\\(\\<[0-9]+[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[.][eE][-+]?[0-9]+[fFdD]?\\>\\|\\<[0-9]+[.][fFdD]\\>\\|\\<[0-9]+[.]\\|[.][0-9]+\\([eE][-+]?[0-9]+\\)?[fFdD]?\\>\\|\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>\\|\\<0[xX][0-9a-fA-F]+[lL]?\\>\\|\\<[0-9]+[lLfFdD]?\\>\\)" .................................................................................................................................................................................................................................^ lisp/emulation/cua-rect.el:1130:30: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 5) "0x\\([0-9a-fA-F]+\\)" ......^ lisp/gnus/mml-sec.el:728:33: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 10) "\\(0x\\)?\\([0-9a-fA-F]\\{8,\\}\\)" .............^ lisp/gnus/nneething.el:300:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "%\\([0-9a-fA-F][0-9a-fA-F]\\)" .....^ lisp/gnus/nneething.el:300:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 15) "%\\([0-9a-fA-F][0-9a-fA-F]\\)" ................^ lisp/international/mule-cmds.el:3082:29: In call to string-match-p: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 3) "\\`[0-9a-fA-F]+\\'" ....^ lisp/mail/rfc2231.el:226:33: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "%\\([0-9A-Fa-f][0-9A-Fa-f]\\)" .....^ lisp/mail/rfc2231.el:226:33: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 15) "%\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ................^ lisp/net/shr-color.el:238:8: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "\\(#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?\\)" .....^ lisp/net/shr-color.el:238:8: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 20) "\\(#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?\\)" .......................^ lisp/nxml/nxml-maint.el:37:33: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 6) "^ *\\([a-fA-F0-9]\\{2\\}\\)[ \t]+" .......^ lisp/nxml/nxml-maint.el:40:37: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 3) "\\([a-fA-F0-9]\\{2\\}\\)-\\([a-fA-F0-9]\\{2\\}\\)\\|\\([a-fA-F0-9]\\{2\\}\\)" ....^ lisp/nxml/nxml-maint.el:40:37: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 24) "\\([a-fA-F0-9]\\{2\\}\\)-\\([a-fA-F0-9]\\{2\\}\\)\\|\\([a-fA-F0-9]\\{2\\}\\)" .............................^ lisp/nxml/nxml-maint.el:40:37: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 46) "\\([a-fA-F0-9]\\{2\\}\\)-\\([a-fA-F0-9]\\{2\\}\\)\\|\\([a-fA-F0-9]\\{2\\}\\)" ........................................................^ lisp/nxml/rng-cmpct.el:372:31: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 8) "\\\\x+{\\([0-9a-fA-F]+\\)}" ...........^ lisp/nxml/rng-uri.el:71:25: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 14) "\\`\\(?:[^%]\\|%[0-9a-fA-F]{2}\\)*\\'" .................^ lisp/nxml/rng-uri.el:302:29: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 16) "\\(?:%[89a-fA-F][0-9a-fA-F]\\)+" .................^ lisp/nxml/rng-uri.el:313:29: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 7) "%[0-7][0-9a-fA-F]" .......^ lisp/nxml/rng-uri.el:321:29: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 7) "%[0-7][0-9a-fA-F]\\|[^%]" .......^ lisp/nxml/rng-uri.el:336:4: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 7) "%[0-7][0-9a-fA-F]\\|[^%]" .......^ lisp/nxml/rng-xsd.el:333:22: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 16) "\\`[ \r\n\t]*\\(\\(?:[0-9A-Fa-f][0-9A-Fa-f]\\)*\\)[ \r\n\t]*\\'" ......................^ lisp/nxml/rng-xsd.el:333:22: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 27) "\\`[ \r\n\t]*\\(\\(?:[0-9A-Fa-f][0-9A-Fa-f]\\)*\\)[ \r\n\t]*\\'" .................................^ lisp/nxml/rng-xsd.el:363:22: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 14) "\\`\\(?:[^%]\\|%[0-9a-fA-F][0-9a-fA-F]\\)*\\'" .................^ lisp/nxml/rng-xsd.el:363:22: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 25) "\\`\\(?:[^%]\\|%[0-9a-fA-F][0-9a-fA-F]\\)*\\'" ............................^ lisp/nxml/xsd-regexp.el:705:31: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "^\\([0-9A-Fa-f]*\\);[^;]*;\\([A-Z][a-z]\\);" .....^ lisp/org/org-mobile.el:475:29: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1) "[a-fA-F0-9]\\{30,40\\}" .^ lisp/org/org-mobile.el:764:34: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 3) "\\([0-9a-fA-F]\\{30,\\}\\).*?mobileorg\\.org[ \t]*$" ....^ lisp/org/org-table.el:158:3: In org-table-number-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 60) "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$" ..............................................................^ lisp/progmodes/ada-mode.el:912:37: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "\\(#[0-9a-fA-F]*#\\)" .....^ lisp/progmodes/ada-mode.el:1016:17: In call to looking-back: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 10) "\\([0-9]+#[0-9a-fA-F_]+\\)" ...........^ lisp/progmodes/ada-mode.el:5139:3: In ada-font-lock-keywords: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 10) "\\([0-9]+#[0-9a-fA-F_]+#\\)" ...........^ lisp/progmodes/cc-mode.el:1416:3: In c-maybe-quoted-number-head: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 14) "\\(0\\(\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)\\|\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)\\|\\('[0-7]\\|[0-7]\\)*'?\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*'?\\)" ..................^ lisp/progmodes/cc-mode.el:1416:3: In c-maybe-quoted-number-head: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 28) "\\(0\\(\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)\\|\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)\\|\\('[0-7]\\|[0-7]\\)*'?\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*'?\\)" .................................^ lisp/progmodes/cc-mode.el:1416:3: In c-maybe-quoted-number-head: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 41) "\\(0\\(\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)\\|\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)\\|\\('[0-7]\\|[0-7]\\)*'?\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*'?\\)" ...............................................^ lisp/progmodes/cc-mode.el:1438:30: In call to skip-chars-backward: 0-9A-Fa-f in skip set could be [:xdigit:] (pos 0) "0-9a-fA-F'" ^ lisp/progmodes/cc-mode.el:1450:3: In c-maybe-quoted-number-tail: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 11) "\\(\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([bB']?[01]\\('[01]\\|[01]\\)*\\)\\|\\('?[0-9]\\('[0-9]\\|[0-9]\\)*\\)\\)" .............^ lisp/progmodes/cc-mode.el:1450:3: In c-maybe-quoted-number-tail: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 25) "\\(\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([bB']?[01]\\('[01]\\|[01]\\)*\\)\\|\\('?[0-9]\\('[0-9]\\|[0-9]\\)*\\)\\)" ............................^ lisp/progmodes/cc-mode.el:1450:3: In c-maybe-quoted-number-tail: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 38) "\\(\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([bB']?[01]\\('[01]\\|[01]\\)*\\)\\|\\('?[0-9]\\('[0-9]\\|[0-9]\\)*\\)\\)" ..........................................^ lisp/progmodes/cc-mode.el:1470:3: In c-maybe-quoted-number: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 12) "\\(0\\(\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([Bb][01]\\('[01]\\|[01]\\)*\\)\\|\\('[0-7]\\|[0-7]\\)*\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*\\)" ...............^ lisp/progmodes/cc-mode.el:1470:3: In c-maybe-quoted-number: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 26) "\\(0\\(\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([Bb][01]\\('[01]\\|[01]\\)*\\)\\|\\('[0-7]\\|[0-7]\\)*\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*\\)" ..............................^ lisp/progmodes/cc-mode.el:1470:3: In c-maybe-quoted-number: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 39) "\\(0\\(\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)\\|\\([Bb][01]\\('[01]\\|[01]\\)*\\)\\|\\('[0-7]\\|[0-7]\\)*\\)\\|[1-9]\\('[0-9]\\|[0-9]\\)*\\)" ............................................^ lisp/progmodes/cc-mode.el:1490:47: In call to skip-chars-forward: 0-9A-Fa-f in skip set could be [:xdigit:] (pos 0) "0-9a-fA-F'" ^ lisp/progmodes/cc-mode.el:1492:39: In call to skip-chars-backward: 0-9A-Fa-f in skip set could be [:xdigit:] (pos 0) "0-9a-fA-F'" ^ lisp/progmodes/cc-mode.el:1533:10: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 33) "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'" ..........................................^ lisp/progmodes/cc-mode.el:1562:10: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 33) "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'" ..........................................^ lisp/progmodes/cc-mode.el:1582:8: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 26) "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\|.\\)?\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)\\)*'" .................................^ lisp/progmodes/cc-mode.el:1582:8: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 84) "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\|.\\)?\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)\\)*'" .........................................................................................................^ lisp/progmodes/cc-mode.el:1635:17: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 33) "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'" ..........................................^ lisp/progmodes/cperl-mode.el:4423:45: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 3) "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" ....^ lisp/progmodes/cperl-mode.el:4423:45: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 14) "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" ...............^ lisp/progmodes/cperl-mode.el:4423:45: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 31) "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" ..................................^ lisp/progmodes/ebnf-dtd.el:948:19: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 39) "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" ...........................................^ lisp/progmodes/ebnf-dtd.el:1004:14: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 69) "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" ..........................................................................^ lisp/progmodes/ebnf-ebx.el:661:32: In call to skip-chars-forward: 0-9A-Fa-f in skip set could be [:xdigit:] (pos 0) "0-9A-Fa-f" ^ lisp/progmodes/hideif.el:542:3: In hif-token-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 71) "\\(?:!=\\|##\\|&&\\|\\.\\.\\.\\|<[<=]\\|==\\|>[=>]\\|||\\|[!#%&(-,/:<-?|~^-]\\)\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*\\|[0-9]+\\.?[0-9]*\\|\\w+" .....................................................................................^ lisp/progmodes/hideif.el:542:3: In hif-token-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 86) "\\(?:!=\\|##\\|&&\\|\\.\\.\\.\\|<[<=]\\|==\\|>[=>]\\|||\\|[!#%&(-,/:<-?|~^-]\\)\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*\\|[0-9]+\\.?[0-9]*\\|\\w+" .....................................................................................................^ lisp/progmodes/hideif.el:598:38: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 5) "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" ......^ lisp/progmodes/hideif.el:598:38: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 20) "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" ......................^ lisp/progmodes/vera-mode.el:605:3: In vera-font-lock-keywords: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 16) "\\([0-9]*'[bdoh][0-9a-fA-FxXzZ_]+\\)" .................^ lisp/progmodes/verilog-mode.el:2760:28: In verilog-delay-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 29) "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)" .................................^ lisp/progmodes/verilog-mode.el:9180:32: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 25) "'[sS]?[hdxboHDXBO]?[ \t]*[0-9a-fA-F_xzXZ?]+" ..........................^ lisp/progmodes/verilog-mode.el:9870:21: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 20) "^[0-9 \t]+'s?[hdxbo][0-9a-fA-F_xz? \t]*$" .....................^ lisp/textmodes/css-mode.el:876:3: In css-escapes-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 16) "\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)" .............................^ lisp/textmodes/css-mode.el:877:25: In css-nmchar-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 34) "\\(?:[-[:alnum:]]\\|\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)\\)" .................................................^ lisp/textmodes/css-mode.el:878:26: In css-nmstart-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 33) "\\(?:[[:alpha:]]\\|\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)\\)" ................................................^ lisp/textmodes/css-mode.el:881:3: In css-ident-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 34) "\\(?:[-[:alnum:]]\\|\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)\\)+" .................................................^ lisp/textmodes/css-mode.el:884:23: In css-name-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 34) "\\(?:[-[:alnum:]]\\|\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)\\)+" .................................................^ lisp/textmodes/css-mode.el:1077:3: In css--colors-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1644) "\\_<\\(a\\(?:liceblue\\|ntiquewhite\\|qua\\(?:marine\\)?\\|zure\\)\\|b\\(?:eige\\|isque\\|l\\(?:a\\(?:ck\\|nchedalmond\\)\\|ue\\(?:violet\\)?\\)\\|rown\\|urlywood\\)\\|c\\(?:adetblue\\|h\\(?:\\(?:artreus\\|ocolat\\)e\\)\\|or\\(?:al\\|n\\(?:flowerblue\\|silk\\)\\)\\|\\(?:rimso\\|ya\\)n\\)\\|d\\(?:ark\\(?:blue\\|cyan\\|g\\(?:oldenrod\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|khaki\\|magenta\\|o\\(?:livegreen\\|r\\(?:ange\\|chid\\)\\)\\|red\\|s\\(?:almon\\|eagreen\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\)\\|turquoise\\|violet\\)\\|eep\\(?:pink\\|skyblue\\)\\|imgr\\(?:[ae]y\\)\\|odgerblue\\)\\|f\\(?:irebrick\\|loralwhite\\|orestgreen\\|uchsia\\)\\|g\\(?:ainsboro\\|hostwhite\\|old\\(?:enrod\\)?\\|r\\(?:ay\\|e\\(?:en\\(?:yellow\\)?\\|y\\)\\)\\)\\|ho\\(?:neydew\\|tpink\\)\\|i\\(?:ndi\\(?:anred\\|go\\)\\|vory\\)\\|khaki\\|l\\(?:a\\(?:vender\\(?:blush\\)?\\|wngreen\\)\\|emonchiffon\\|i\\(?:ght\\(?:blue\\|c\\(?:oral\\|yan\\)\\|g\\(?:oldenrodyellow\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|pink\\|s\\(?:almon\\|eagreen\\|kyblue\\|lategr\\(?:[ae]y\\)\\|teelblue\\)\\|yellow\\)\\|me\\(?:green\\)?\\|nen\\)\\)\\|m\\(?:a\\(?:genta\\|roon\\)\\|edium\\(?:aquamarine\\|blue\\|orchid\\|purple\\|s\\(?:eagreen\\|lateblue\\|pringgreen\\)\\|turquoise\\|violetred\\)\\|i\\(?:dnightblue\\|ntcream\\|styrose\\)\\|occasin\\)\\|nav\\(?:ajowhite\\|y\\)\\|o\\(?:l\\(?:dlace\\|ive\\(?:drab\\)?\\)\\|r\\(?:ange\\(?:red\\)?\\|chid\\)\\)\\|p\\(?:a\\(?:le\\(?:g\\(?:oldenrod\\|reen\\)\\|turquoise\\|violetred\\)\\|payawhip\\)\\|e\\(?:achpuff\\|ru\\)\\|ink\\|lum\\|\\(?:owderblu\\|urpl\\)e\\)\\|r\\(?:e\\(?:beccapurple\\|d\\)\\|o\\(?:sybrown\\|yalblue\\)\\)\\|s\\(?:a\\(?:\\(?:ddlebrow\\|lmo\\|ndybrow\\)n\\)\\|ea\\(?:green\\|shell\\)\\|i\\(?:enna\\|lver\\)\\|kyblue\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\|now\\|pringgreen\\|teelblue\\)\\|t\\(?:an\\|eal\\|histle\\|omato\\|urquoise\\)\\|violet\\|wh\\(?:eat\\|ite\\(?:smoke\\)?\\)\\|yellow\\(?:green\\)?\\)\\_>\\|\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)\\|\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)\\|\\(\\_<rgba?(\\)\\|\\(\\_<hsla?(\\)" ...............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/textmodes/css-mode.el:1077:3: In css--colors-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1675) "\\_<\\(a\\(?:liceblue\\|ntiquewhite\\|qua\\(?:marine\\)?\\|zure\\)\\|b\\(?:eige\\|isque\\|l\\(?:a\\(?:ck\\|nchedalmond\\)\\|ue\\(?:violet\\)?\\)\\|rown\\|urlywood\\)\\|c\\(?:adetblue\\|h\\(?:\\(?:artreus\\|ocolat\\)e\\)\\|or\\(?:al\\|n\\(?:flowerblue\\|silk\\)\\)\\|\\(?:rimso\\|ya\\)n\\)\\|d\\(?:ark\\(?:blue\\|cyan\\|g\\(?:oldenrod\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|khaki\\|magenta\\|o\\(?:livegreen\\|r\\(?:ange\\|chid\\)\\)\\|red\\|s\\(?:almon\\|eagreen\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\)\\|turquoise\\|violet\\)\\|eep\\(?:pink\\|skyblue\\)\\|imgr\\(?:[ae]y\\)\\|odgerblue\\)\\|f\\(?:irebrick\\|loralwhite\\|orestgreen\\|uchsia\\)\\|g\\(?:ainsboro\\|hostwhite\\|old\\(?:enrod\\)?\\|r\\(?:ay\\|e\\(?:en\\(?:yellow\\)?\\|y\\)\\)\\)\\|ho\\(?:neydew\\|tpink\\)\\|i\\(?:ndi\\(?:anred\\|go\\)\\|vory\\)\\|khaki\\|l\\(?:a\\(?:vender\\(?:blush\\)?\\|wngreen\\)\\|emonchiffon\\|i\\(?:ght\\(?:blue\\|c\\(?:oral\\|yan\\)\\|g\\(?:oldenrodyellow\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|pink\\|s\\(?:almon\\|eagreen\\|kyblue\\|lategr\\(?:[ae]y\\)\\|teelblue\\)\\|yellow\\)\\|me\\(?:green\\)?\\|nen\\)\\)\\|m\\(?:a\\(?:genta\\|roon\\)\\|edium\\(?:aquamarine\\|blue\\|orchid\\|purple\\|s\\(?:eagreen\\|lateblue\\|pringgreen\\)\\|turquoise\\|violetred\\)\\|i\\(?:dnightblue\\|ntcream\\|styrose\\)\\|occasin\\)\\|nav\\(?:ajowhite\\|y\\)\\|o\\(?:l\\(?:dlace\\|ive\\(?:drab\\)?\\)\\|r\\(?:ange\\(?:red\\)?\\|chid\\)\\)\\|p\\(?:a\\(?:le\\(?:g\\(?:oldenrod\\|reen\\)\\|turquoise\\|violetred\\)\\|payawhip\\)\\|e\\(?:achpuff\\|ru\\)\\|ink\\|lum\\|\\(?:owderblu\\|urpl\\)e\\)\\|r\\(?:e\\(?:beccapurple\\|d\\)\\|o\\(?:sybrown\\|yalblue\\)\\)\\|s\\(?:a\\(?:\\(?:ddlebrow\\|lmo\\|ndybrow\\)n\\)\\|ea\\(?:green\\|shell\\)\\|i\\(?:enna\\|lver\\)\\|kyblue\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\|now\\|pringgreen\\|teelblue\\)\\|t\\(?:an\\|eal\\|histle\\|omato\\|urquoise\\)\\|violet\\|wh\\(?:eat\\|ite\\(?:smoke\\)?\\)\\|yellow\\(?:green\\)?\\)\\_>\\|\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)\\|\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)\\|\\(\\_<rgba?(\\)\\|\\(\\_<hsla?(\\)" .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/textmodes/css-mode.el:1077:3: In css--colors-regexp: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1686) "\\_<\\(a\\(?:liceblue\\|ntiquewhite\\|qua\\(?:marine\\)?\\|zure\\)\\|b\\(?:eige\\|isque\\|l\\(?:a\\(?:ck\\|nchedalmond\\)\\|ue\\(?:violet\\)?\\)\\|rown\\|urlywood\\)\\|c\\(?:adetblue\\|h\\(?:\\(?:artreus\\|ocolat\\)e\\)\\|or\\(?:al\\|n\\(?:flowerblue\\|silk\\)\\)\\|\\(?:rimso\\|ya\\)n\\)\\|d\\(?:ark\\(?:blue\\|cyan\\|g\\(?:oldenrod\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|khaki\\|magenta\\|o\\(?:livegreen\\|r\\(?:ange\\|chid\\)\\)\\|red\\|s\\(?:almon\\|eagreen\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\)\\|turquoise\\|violet\\)\\|eep\\(?:pink\\|skyblue\\)\\|imgr\\(?:[ae]y\\)\\|odgerblue\\)\\|f\\(?:irebrick\\|loralwhite\\|orestgreen\\|uchsia\\)\\|g\\(?:ainsboro\\|hostwhite\\|old\\(?:enrod\\)?\\|r\\(?:ay\\|e\\(?:en\\(?:yellow\\)?\\|y\\)\\)\\)\\|ho\\(?:neydew\\|tpink\\)\\|i\\(?:ndi\\(?:anred\\|go\\)\\|vory\\)\\|khaki\\|l\\(?:a\\(?:vender\\(?:blush\\)?\\|wngreen\\)\\|emonchiffon\\|i\\(?:ght\\(?:blue\\|c\\(?:oral\\|yan\\)\\|g\\(?:oldenrodyellow\\|r\\(?:ay\\|e\\(?:en\\|y\\)\\)\\)\\|pink\\|s\\(?:almon\\|eagreen\\|kyblue\\|lategr\\(?:[ae]y\\)\\|teelblue\\)\\|yellow\\)\\|me\\(?:green\\)?\\|nen\\)\\)\\|m\\(?:a\\(?:genta\\|roon\\)\\|edium\\(?:aquamarine\\|blue\\|orchid\\|purple\\|s\\(?:eagreen\\|lateblue\\|pringgreen\\)\\|turquoise\\|violetred\\)\\|i\\(?:dnightblue\\|ntcream\\|styrose\\)\\|occasin\\)\\|nav\\(?:ajowhite\\|y\\)\\|o\\(?:l\\(?:dlace\\|ive\\(?:drab\\)?\\)\\|r\\(?:ange\\(?:red\\)?\\|chid\\)\\)\\|p\\(?:a\\(?:le\\(?:g\\(?:oldenrod\\|reen\\)\\|turquoise\\|violetred\\)\\|payawhip\\)\\|e\\(?:achpuff\\|ru\\)\\|ink\\|lum\\|\\(?:owderblu\\|urpl\\)e\\)\\|r\\(?:e\\(?:beccapurple\\|d\\)\\|o\\(?:sybrown\\|yalblue\\)\\)\\|s\\(?:a\\(?:\\(?:ddlebrow\\|lmo\\|ndybrow\\)n\\)\\|ea\\(?:green\\|shell\\)\\|i\\(?:enna\\|lver\\)\\|kyblue\\|late\\(?:blue\\|gr\\(?:[ae]y\\)\\)\\|now\\|pringgreen\\|teelblue\\)\\|t\\(?:an\\|eal\\|histle\\|omato\\|urquoise\\)\\|violet\\|wh\\(?:eat\\|ite\\(?:smoke\\)?\\)\\|yellow\\(?:green\\)?\\)\\_>\\|\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)\\|\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)\\|\\(\\_<rgba?(\\)\\|\\(\\_<hsla?(\\)" ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/textmodes/sgml-mode.el:1296:17: In call to re-search-forward: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 40) "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][0-9a-fA-F]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" ................................................^ lisp/dnd.el:141:4: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 2) "%[A-Fa-f0-9][A-Fa-f0-9]" ..^ lisp/dnd.el:141:4: In call to replace-regexp-in-string: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 13) "%[A-Fa-f0-9][A-Fa-f0-9]" .............^ lisp/epg.el:952:21: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 37) "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)" .............................................^ lisp/epg.el:952:21: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 48) "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)" ........................................................^ lisp/epg.el:976:30: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 80) "\\`\\([^ ]+\\) [^ ]+ \\([^ ]+\\) \\([^ ]+\\) \\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\)" ..............................................................................................^ lisp/epg.el:976:30: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 91) "\\`\\([^ ]+\\) [^ ]+ \\([^ ]+\\) \\([^ ]+\\) \\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\)" .........................................................................................................^ lisp/epg.el:1146:21: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 37) "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\) " .............................................^ lisp/epg.el:1146:21: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 48) "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\) " ........................................................^ lisp/epg.el:2024:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 13) "%\\(\\(%\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" ..................^ lisp/epg.el:2024:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 24) "%\\(\\(%\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" .............................^ lisp/epg.el:2037:36: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1) "[0-9A-Fa-f][0-9A-Fa-f]" .^ lisp/epg.el:2037:36: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 12) "[0-9A-Fa-f][0-9A-Fa-f]" ............^ lisp/epg.el:2046:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 24) "\\\\\\(\\([,=+<>#;\\\"]\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" .................................^ lisp/epg.el:2046:26: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 35) "\\\\\\(\\([,=+<>#;\\\"]\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" ............................................^ lisp/epg.el:2084:37: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 4) "#\\([0-9A-Fa-f]+\\)" .....^ lisp/faces.el:2000:35: In call to string-match-p: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 7) "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" ........^ lisp/faces.el:2000:35: In call to string-match-p: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 18) "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" ...................^ lisp/faces.el:2000:35: In call to string-match-p: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 29) "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" ..............................^ lisp/htmlfontify.el:569:25: In hfy-hex-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1) "[0-9A-Fa-f]" .^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 3) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ....^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 14) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ...............^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 29) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ................................^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 40) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ...........................................^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 55) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" ............................................................^ lisp/htmlfontify.el:572:3: In hfy-triplet-regex: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 66) "\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\([0-9A-Fa-f][0-9A-Fa-f]\\)" .......................................................................^ lisp/version.el:123:31: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 1) "[0-9a-fA-F]\\{40\\}" .^ lisp/xml.el:198:28: In xml-char-ref-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 19) "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)" .....................^ lisp/xml.el:203:37: In xml-entity-or-char-ref-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 15) "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)\\);" ...................^ lisp/xml.el:210:28: In xml-reference-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 63) "\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)" ...................................................................^ lisp/xml.el:214:28: In xml-att-value-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 79) "\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)" ........................................................................................^ lisp/xml.el:214:28: In xml-att-value-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 176) "\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)" ....................................................................................................................................................................................................^ lisp/xml.el:251:31: In xml-default-decl-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 121) "\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)" ........................................................................................................................................^ lisp/xml.el:251:31: In xml-default-decl-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 218) "\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)" ....................................................................................................................................................................................................................................................^ lisp/xml.el:256:26: In xml-att-def-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 452) "\\(?:\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\s-*\\(?:CDATA\\|\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)\\|\\(?:\\(?:NOTATION\\s-+(\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\(?:\\s-*|\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)*\\s-*)\\)\\|\\(?:(\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\(?:\\s-*|\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\)*\\s-+)\\)\\)\\)\\s-*\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)\\)" .......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/xml.el:256:26: In xml-att-def-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 549) "\\(?:\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\s-*\\(?:CDATA\\|\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)\\|\\(?:\\(?:NOTATION\\s-+(\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\(?:\\s-*|\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)*\\s-*)\\)\\|\\(?:(\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\(?:\\s-*|\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\)*\\s-+)\\)\\)\\)\\s-*\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)\\)" ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/xml.el:262:31: In xml-entity-value-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 124) "\\(?:\"\\(?:[^%&\"]\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^%&']\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)" ........................................................................................................................................^ lisp/xml.el:262:31: In xml-entity-value-re: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 266) "\\(?:\"\\(?:[^%&\"]\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^%&']\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)" ....................................................................................................................................................................................................................................................................................................^ lisp/xml.el:804:28: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 517) "<!ATTLIST[ \t\n\r]*\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)[ \t\n\r]*\\(\\(?:\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\s-*\\(?:CDATA\\|\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)\\|\\(?:\\(?:NOTATION\\s-+(\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\(?:\\s-*|\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)*\\s-*)\\)\\|\\(?:(\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\(?:\\s-*|\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\)*\\s-+)\\)\\)\\)\\s-*\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)\\)\\)*[ \t\n\r]*>" .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/xml.el:804:28: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 614) "<!ATTLIST[ \t\n\r]*\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)[ \t\n\r]*\\(\\(?:\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\s-*\\(?:CDATA\\|\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)\\|\\(?:\\(?:NOTATION\\s-+(\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\(?:\\s-*|\\s-*[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)*\\s-*)\\)\\|\\(?:(\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\(?:\\s-*|\\s-*[[:word:]:_.0-9·̀-ͯ‿⁀-]+\\)*\\s-+)\\)\\)\\)\\s-*\\(?:#REQUIRED\\|#IMPLIED\\|\\(?:#FIXED\\s-+\\)*\\(?:\"\\(?:[^&\"]\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^&']\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)\\)\\)*[ \t\n\r]*>" .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................^ lisp/xml.el:823:28: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 201) "<!ENTITY[ \t\n\r]+\\(%[ \t\n\r]+\\)?\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)[ \t\n\r]*\\(\\(?:\"\\(?:[^%&\"]\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^%&']\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)[ \t\n\r]*>" ...................................................................................................................................................................................................................................^ lisp/xml.el:823:28: In call to looking-at: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 343) "<!ENTITY[ \t\n\r]+\\(%[ \t\n\r]+\\)?\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\)[ \t\n\r]*\\(\\(?:\"\\(?:[^%&\"]\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*\"\\|'\\(?:[^%&']\\|%\\([[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*\\);\\|\\(?:&[[:word:]:_][[:word:]:_.0-9·̀-ͯ‿⁀-]*;\\|\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)\\)\\)*'\\)\\)[ \t\n\r]*>" ...............................................................................................................................................................................................................................................................................................................................................................................................^ test/src/emacs-module-tests.el:62:18: In call to string-match: 0-9A-Fa-f in char alternative could be [:xdigit:] (pos 31) "#<module function \\(at \\(0x\\)?[0-9a-fA-F]+\\( from .*\\)?\\|Fmod_test_sum from .*\\)>" ..................................^ ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 16:31 ` Mattias Engdegård @ 2019-06-11 16:50 ` Drew Adams 2019-06-11 17:04 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Drew Adams @ 2019-06-11 16:50 UTC (permalink / raw) To: Mattias Engdegård, Paul Eggert; +Cc: 36167, Konstantin Kharlamov > [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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 16:50 ` Drew Adams @ 2019-06-11 17:04 ` Eli Zaretskii 2019-06-11 17:18 ` Paul Eggert ` (2 more replies) 0 siblings, 3 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 17:04 UTC (permalink / raw) To: Drew Adams; +Cc: mattiase, eggert, 36167, hi-angel > Date: Tue, 11 Jun 2019 09:50:24 -0700 (PDT) > From: Drew Adams <drew.adams@oracle.com> > Cc: 36167@debbugs.gnu.org, Konstantin Kharlamov <hi-angel@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? ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:04 ` Eli Zaretskii @ 2019-06-11 17:18 ` Paul Eggert 2019-06-11 17:32 ` Eli Zaretskii 2019-06-11 17:19 ` Drew Adams 2019-06-11 17:50 ` npostavs 2 siblings, 1 reply; 42+ messages in thread From: Paul Eggert @ 2019-06-11 17:18 UTC (permalink / raw) To: Eli Zaretskii, Drew Adams; +Cc: mattiase, 36167, hi-angel 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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:18 ` Paul Eggert @ 2019-06-11 17:32 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 17:32 UTC (permalink / raw) To: Paul Eggert; +Cc: mattiase, 36167, hi-angel > Cc: mattiase@acm.org, 36167@debbugs.gnu.org, hi-angel@yandex.ru > From: Paul Eggert <eggert@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:04 ` Eli Zaretskii 2019-06-11 17:18 ` Paul Eggert @ 2019-06-11 17:19 ` Drew Adams 2019-06-11 17:34 ` Eli Zaretskii 2019-06-11 17:50 ` npostavs 2 siblings, 1 reply; 42+ messages in thread From: Drew Adams @ 2019-06-11 17:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: mattiase, eggert, 36167, hi-angel > > > [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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:19 ` Drew Adams @ 2019-06-11 17:34 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 17:34 UTC (permalink / raw) To: Drew Adams; +Cc: mattiase, eggert, 36167, hi-angel > Date: Tue, 11 Jun 2019 10:19:17 -0700 (PDT) > From: Drew Adams <drew.adams@oracle.com> > Cc: mattiase@acm.org, eggert@cs.ucla.edu, 36167@debbugs.gnu.org, > hi-angel@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’. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:04 ` Eli Zaretskii 2019-06-11 17:18 ` Paul Eggert 2019-06-11 17:19 ` Drew Adams @ 2019-06-11 17:50 ` npostavs 2019-06-11 17:53 ` Eli Zaretskii 2 siblings, 1 reply; 42+ messages in thread From: npostavs @ 2019-06-11 17:50 UTC (permalink / raw) To: Eli Zaretskii; +Cc: mattiase, eggert, 36167, hi-angel Eli Zaretskii <eliz@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:50 ` npostavs @ 2019-06-11 17:53 ` Eli Zaretskii 2019-06-11 18:14 ` Eli Zaretskii 0 siblings, 1 reply; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 17:53 UTC (permalink / raw) To: npostavs; +Cc: mattiase, eggert, 36167, hi-angel > From: npostavs@gmail.com > Cc: Drew Adams <drew.adams@oracle.com>, mattiase@acm.org, eggert@cs.ucla.edu, 36167@debbugs.gnu.org, hi-angel@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 17:53 ` Eli Zaretskii @ 2019-06-11 18:14 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-11 18:14 UTC (permalink / raw) To: npostavs, mattiase, eggert; +Cc: 36167, hi-angel > From: Eli Zaretskii <eliz@gnu.org> > Cc: mattiase@acm.org, eggert@cs.ucla.edu, 36167@debbugs.gnu.org, > hi-angel@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov ` (2 preceding siblings ...) 2019-06-11 14:26 ` bug#36167: [PATCH] Replace manually crafted hex regexes " Paul Eggert @ 2019-06-11 19:56 ` Andy Moreton 2019-06-12 2:30 ` Eli Zaretskii 2019-06-12 11:44 ` Andy Moreton ` (2 subsequent siblings) 6 siblings, 1 reply; 42+ messages in thread From: Andy Moreton @ 2019-06-11 19:56 UTC (permalink / raw) To: 36167 On Tue 11 Jun 2019, Eli Zaretskii wrote: >> Date: Tue, 11 Jun 2019 10:19:17 -0700 (PDT) >> From: Drew Adams <drew.adams@oracle.com> >> Cc: mattiase@acm.org, eggert@cs.ucla.edu, 36167@debbugs.gnu.org, >> hi-angel@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 19:56 ` Andy Moreton @ 2019-06-12 2:30 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-12 2:30 UTC (permalink / raw) To: Andy Moreton; +Cc: 36167 > From: Andy Moreton <andrewjmoreton@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov ` (3 preceding siblings ...) 2019-06-11 19:56 ` Andy Moreton @ 2019-06-12 11:44 ` Andy Moreton 2019-06-12 16:07 ` Eli Zaretskii 2019-06-13 0:18 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Konstantin Kharlamov 2019-07-08 9:34 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 6 siblings, 1 reply; 42+ messages in thread From: Andy Moreton @ 2019-06-12 11:44 UTC (permalink / raw) To: 36167 On Wed 12 Jun 2019, Eli Zaretskii wrote: >> From: Andy Moreton <andrewjmoreton@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 ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-12 11:44 ` Andy Moreton @ 2019-06-12 16:07 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-06-12 16:07 UTC (permalink / raw) To: Andy Moreton; +Cc: 36167 > From: Andy Moreton <andrewjmoreton@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? ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov ` (4 preceding siblings ...) 2019-06-12 11:44 ` Andy Moreton @ 2019-06-13 0:18 ` Konstantin Kharlamov 2019-07-06 8:04 ` Eli Zaretskii 2019-07-08 9:34 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 6 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-06-13 0:18 UTC (permalink / raw) To: 36167 * 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@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")))) \f 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 ^ permalink raw reply related [flat|nested] 42+ messages in thread
* bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] 2019-06-13 0:18 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Konstantin Kharlamov @ 2019-07-06 8:04 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-07-06 8:04 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167-done > From: Konstantin Kharlamov <Hi-Angel@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov ` (5 preceding siblings ...) 2019-06-13 0:18 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Konstantin Kharlamov @ 2019-07-08 9:34 ` Konstantin Kharlamov 2019-07-08 12:11 ` Eli Zaretskii 6 siblings, 1 reply; 42+ messages in thread From: Konstantin Kharlamov @ 2019-07-08 9:34 UTC (permalink / raw) To: 36167 > 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. ^ permalink raw reply [flat|nested] 42+ messages in thread
* bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] 2019-07-08 9:34 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov @ 2019-07-08 12:11 ` Eli Zaretskii 0 siblings, 0 replies; 42+ messages in thread From: Eli Zaretskii @ 2019-07-08 12:11 UTC (permalink / raw) To: Konstantin Kharlamov; +Cc: 36167 > Date: Mon, 08 Jul 2019 12:34:32 +0300 > From: Konstantin Kharlamov <hi-angel@yandex.ru> > Cc: Eli Zaretskii <eliz@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. ^ permalink raw reply [flat|nested] 42+ messages in thread
end of thread, other threads:[~2019-07-08 12:11 UTC | newest] Thread overview: 42+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-06-11 11:59 bug#36167: [PATCH] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 2019-06-11 12:03 ` bug#36167: Acknowledgement ([PATCH] Replace manually crafted hex regexes with [[:xdigit:]]) Konstantin Kharlamov 2019-06-11 12:29 ` bug#36167: [PATCH] Replace [0-9a-fA-F] with [[:xdigit:]] Konstantin Kharlamov 2019-06-11 13:03 ` Robert Pluim 2019-06-11 13:17 ` Konstantin Kharlamov 2019-06-11 13:30 ` Robert Pluim 2019-06-12 0:29 ` Konstantin Kharlamov 2019-06-12 2:42 ` Eli Zaretskii 2019-06-12 8:21 ` Robert Pluim 2019-06-12 11:19 ` Konstantin Kharlamov 2019-06-12 14:55 ` Eli Zaretskii 2019-06-12 16:39 ` Konstantin Kharlamov 2019-06-12 16:51 ` Eli Zaretskii 2019-06-12 17:09 ` Konstantin Kharlamov 2019-06-12 21:33 ` Lars Ingebrigtsen 2019-06-12 21:39 ` Lars Ingebrigtsen 2019-06-12 22:17 ` Andreas Schwab 2019-06-12 22:22 ` Lars Ingebrigtsen 2019-06-12 22:48 ` Konstantin Kharlamov 2019-06-11 13:32 ` npostavs 2019-06-11 14:36 ` Eli Zaretskii 2019-06-11 14:26 ` bug#36167: [PATCH] Replace manually crafted hex regexes " Paul Eggert 2019-06-11 14:37 ` Konstantin Kharlamov 2019-06-11 15:37 ` Paul Eggert 2019-06-11 16:31 ` Mattias Engdegård 2019-06-11 16:50 ` Drew Adams 2019-06-11 17:04 ` Eli Zaretskii 2019-06-11 17:18 ` Paul Eggert 2019-06-11 17:32 ` Eli Zaretskii 2019-06-11 17:19 ` Drew Adams 2019-06-11 17:34 ` Eli Zaretskii 2019-06-11 17:50 ` npostavs 2019-06-11 17:53 ` Eli Zaretskii 2019-06-11 18:14 ` Eli Zaretskii 2019-06-11 19:56 ` Andy Moreton 2019-06-12 2:30 ` Eli Zaretskii 2019-06-12 11:44 ` Andy Moreton 2019-06-12 16:07 ` Eli Zaretskii 2019-06-13 0:18 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Konstantin Kharlamov 2019-07-06 8:04 ` Eli Zaretskii 2019-07-08 9:34 ` bug#36167: [PATCH v2] Replace manually crafted hex regexes with [[:xdigit:]] Konstantin Kharlamov 2019-07-08 12:11 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).