Package: emacs;
Reported by: Konstantin Kharlamov <hi-angel <at> yandex.ru>
Date: Tue, 11 Jun 2019 12:00:02 UTC
Severity: wishlist
Tags: patch
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Konstantin Kharlamov <Hi-Angel <at> yandex.ru> To: 36167 <at> debbugs.gnu.org Subject: bug#36167: [PATCH v2] Replace manually crafted hex regexes wth [[:xdigit:]] Date: Thu, 13 Jun 2019 03:18:43 +0300
* admin/charsets/mapconv: * build-aux/gitlog-to-changelog (parse_amend_file) (git_dir_option): * lisp/progmodes/verilog-mode.el (verilog-delay-re): (verilog-type-font-keywords) (verilog-read-always-signals-recurse): (verilog-is-number): * lisp/progmodes/vera-mode.el (vera-font-lock-keywords): * test/src/emacs-module-tests.el (mod-test-sum-test): * lisp/xml.el: (xml--entity-replacement-text): * lisp/version.el (emacs-repository-version-git): * lisp/textmodes/sgml-mode.el (sgml-quote): * lisp/textmodes/css-mode.el (css-escapes-re) (css--colors-regexp): * lisp/progmodes/prolog.el (prolog-syntax-propertize-function): * lisp/progmodes/hideif.el (hif-token-regexp) (hif-tokenize): * lisp/progmodes/ebnf-dtd.el: (ebnf-dtd-attlistdecl) (ebnf-dtd-entitydecl) (ebnf-dtd-lex) * lisp/progmodes/ebnf-ebx.el (ebnf-ebx-hex-character): * lisp/progmodes/ebnf-abn.el (ebnf-abn-character): * lisp/progmodes/cperl-mode.el (cperl-highlight-charclass) (cperl-find-pods-heres): * lisp/progmodes/cc-mode.el (c-maybe-quoted-number-head) (c-maybe-quoted-number) (c-parse-quotes-before-change) (c-parse-quotes-after-change) (c-quoted-number-head-before-point) (c-quoted-number-straddling-point) * lisp/progmodes/ada-mode.el (featurep) (ada-in-numeric-literal-p) (ada-font-lock-keywords): * lisp/org/org-mobile.el (org-mobile-copy-agenda-files) * lisp/org/org-table.el (org-table-number-regexp): (org-mobile-update-checksum-for-capture-file): * lisp/nxml/xsd-regexp.el (xsdre-gen-categories): * lisp/nxml/xmltok.el (let*): * lisp/nxml/rng-xsd.el (rng-xsd-convert-hex-binary) (rng-xsd-convert-any-uri): * lisp/nxml/rng-uri.el (rng-uri-file-name-1) (rng-uri-unescape-multibyte) (rng-uri-unescape-unibyte) (rng-uri-unescape-unibyte-match) (rng-uri-unescape-unibyte-replace): * lisp/nxml/rng-cmpct.el (rng-c-process-escapes): * lisp/nxml/nxml-maint.el (nxml-insert-target-repertoire-glyph-set): * lisp/net/shr-color.el (shr-color->hexadecimal): * lisp/mail/rfc2231.el (rfc2231-decode-encoded-string): * lisp/international/mule-cmds.el (read-char-by-name): * lisp/htmlfontify.el (hfy-hex-regex): * lisp/gnus/nneething.el (nneething-decode-file-name): * lisp/gnus/mml-sec.el (mml-secure-find-usable-keys): * lisp/gnus/gnus-art.el (gnus-button-mid-or-mail-heuristic-alist): * lisp/faces.el (read-color): * lisp/epg.el (epg--status-ERRSIG) (epg--status-VALIDSIG) (epg--status-SIG_CREATED) (epg--decode-percent-escape) (epg--decode-hexstring) (epg--decode-quotedstring) (epg-dn-from-string): * lisp/emulation/cua-rect.el (cua-incr-rectangle): * lisp/dnd.el (dnd-unescape-uri): * lisp/cedet/semantic/lex.el (semantic-lex-number-expression): * lisp/cedet/semantic/java.el (semantic-java-number-regexp): * lisp/calc/calc-lang.el (pascal): * lisp/calc/calc-ext.el (math-read-number-fancy): * lisp/calc/calc-aent.el (math-read-token): replace various combinations of [0-9a-fA-F] with [[:xdigit:]] (Bug#36167) --- v2: * add changed function names. * more files changed. I'm changing here 2 non-lisp files: 1. mapconv — here I change "sed", sed supports xdigit 2. gitlog-to-changelog: this one is perl. Perl supports xdigit too. I compared whether I changed all files from Mattias's log, and turned out I changed even more of them :) A regex I noted that logger didn't catch was the change in lisp/progmodes/ebnf-abn.el file: the regex was assigned there through let before being used with (skip-chars-forward) admin/charsets/mapconv | 2 +- build-aux/gitlog-to-changelog | 6 +++--- lisp/calc/calc-aent.el | 2 +- lisp/calc/calc-ext.el | 4 ++-- lisp/calc/calc-lang.el | 2 +- lisp/cedet/semantic/java.el | 4 ++-- lisp/cedet/semantic/lex.el | 4 ++-- lisp/dnd.el | 2 +- lisp/emulation/cua-rect.el | 2 +- lisp/epg.el | 14 +++++++------- lisp/faces.el | 2 +- lisp/gnus/gnus-art.el | 8 ++++---- lisp/gnus/mml-sec.el | 2 +- lisp/gnus/nneething.el | 2 +- lisp/htmlfontify.el | 2 +- lisp/international/mule-cmds.el | 2 +- lisp/mail/rfc2231.el | 2 +- lisp/net/shr-color.el | 2 +- lisp/nxml/nxml-maint.el | 4 ++-- lisp/nxml/rng-cmpct.el | 2 +- lisp/nxml/rng-uri.el | 10 +++++----- lisp/nxml/rng-xsd.el | 4 ++-- lisp/nxml/xmltok.el | 2 +- lisp/nxml/xsd-regexp.el | 2 +- lisp/org/org-mobile.el | 4 ++-- lisp/org/org-table.el | 6 +++--- lisp/progmodes/ada-mode.el | 6 +++--- lisp/progmodes/cc-mode.el | 22 +++++++++++----------- lisp/progmodes/cperl-mode.el | 8 ++++---- lisp/progmodes/ebnf-abn.el | 2 +- lisp/progmodes/ebnf-dtd.el | 16 ++++++++-------- lisp/progmodes/ebnf-ebx.el | 2 +- lisp/progmodes/hideif.el | 4 ++-- lisp/progmodes/prolog.el | 2 +- lisp/progmodes/vera-mode.el | 2 +- lisp/progmodes/verilog-mode.el | 8 ++++---- lisp/textmodes/css-mode.el | 6 +++--- lisp/textmodes/sgml-mode.el | 2 +- lisp/version.el | 2 +- lisp/xml.el | 8 ++++---- test/src/emacs-module-tests.el | 2 +- 41 files changed, 95 insertions(+), 95 deletions(-) diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index 8e19972f3d..2696b13a52 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -118,7 +118,7 @@ AWK= # Source format is: # 0xXX 0xYYYY sed -n -e "${2}p" < $1 \ - | sed -e 's/\(0x[0-9A-Fa-f]*\)[^0]*\(0x[0-9A-Fa-f]*\).*/\1 \2/' \ + | sed -e 's/\(0x[[:xdigit:]]*\)[^0]*\(0x[[:xdigit:]]*\).*/\1 \2/' \ | sort | ${AWKPROG} elif [ "$3" = "UNICODE" ] ; then # Source format is: diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index deddef2446..ebbcb522e8 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -174,7 +174,7 @@ sub parse_amend_file($) if (!$in_code) { - $line =~ /^([0-9a-fA-F]{40})$/ + $line =~ /^([[:xdigit:]]{40})$/ or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"), $fail = 1, next; $sha = lc $1; @@ -288,7 +288,7 @@ sub git_dir_option($) my ($sha, $rest) = split ':', $log, 2; defined $sha or die "$ME:$.: malformed log entry\n"; - $sha =~ /^[0-9a-fA-F]{40}$/ + $sha =~ /^[[:xdigit:]]{40}$/ or die "$ME:$.: invalid SHA1: $sha\n"; my $skipflag = 0; @@ -376,7 +376,7 @@ sub git_dir_option($) @skipshas = (); next; } - if ($found && $_ =~ /^([0-9a-fA-F]{7,}) [^ ]/) + if ($found && $_ =~ /^([[:xdigit:]]{7,}) [^ ]/) { push ( @skipshas, $1 ); } diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index f16e665fc3..f1ef5c170b 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el @@ -728,7 +728,7 @@ math-read-token math-exp-str (1- math-exp-pos)) (1- math-exp-pos)))))) (or (and (memq calc-language calc-lang-c-type-hex) - (eq (string-match "0[xX][0-9a-fA-F]+" math-exp-str + (eq (string-match "0[xX][[:xdigit:]]+" math-exp-str math-exp-pos) math-exp-pos)) (string-match "_?\\([0-9]+.?0*@ *\\)?\\([0-9]+.?0*' *\\)?\\(0*\\([2-9]\\|1[0-4]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-dA-D.]+[eE][-+_]?[0-9]+\\|0*\\([2-9]\\|[0-2][0-9]\\|3[0-6]\\)\\(#[#]?\\|\\^\\^\\)[0-9a-zA-Zα-ωΑ-Ω:.]+\\|[0-9]+:[0-9:]+\\|[0-9.]+\\([eE][-+_]?[0-9]+\\)?\"?\\)?" diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el index 1456fb2857..c7b4c3b091 100644 --- a/lisp/calc/calc-ext.el +++ b/lisp/calc/calc-ext.el @@ -3019,13 +3019,13 @@ math-read-number-fancy ;; C language hexadecimal notation ((and (eq calc-language 'c) - (string-match "^0[xX]\\([0-9a-fA-F]+\\)$" s)) + (string-match "^0[xX]\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) ;; Pascal language hexadecimal notation ((and (eq calc-language 'pascal) - (string-match "^\\$\\([0-9a-fA-F]+\\)$" s)) + (string-match "^\\$\\([[:xdigit:]]+\\)$" s)) (let ((digs (math-match-substring s 1))) (math-read-radix digs 16))) diff --git a/lisp/calc/calc-lang.el b/lisp/calc/calc-lang.el index ee107df39c..4a9771d743 100644 --- a/lisp/calc/calc-lang.el +++ b/lisp/calc/calc-lang.el @@ -243,7 +243,7 @@ calc-pascal-language (put 'pascal 'math-lang-read-symbol '((?\$ (eq (string-match - "\\(\\$[0-9a-fA-F]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" + "\\(\\$[[:xdigit:]]+\\)\\($\\|[^0-9a-zA-Zα-ωΑ-Ω]\\)" math-exp-str math-exp-pos) math-exp-pos) (setq math-exp-token 'number diff --git a/lisp/cedet/semantic/java.el b/lisp/cedet/semantic/java.el index 54cce96545..7f9c93b906 100644 --- a/lisp/cedet/semantic/java.el +++ b/lisp/cedet/semantic/java.el @@ -51,7 +51,7 @@ semantic-java-number-regexp "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -63,7 +63,7 @@ semantic-java-number-regexp [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el index 2690122f06..f1c6b01418 100644 --- a/lisp/cedet/semantic/lex.el +++ b/lisp/cedet/semantic/lex.el @@ -596,7 +596,7 @@ semantic-lex-number-expression "\\|" "\\<[0-9]+[eE][-+]?[0-9]+[fFdD]?\\>" "\\|" - "\\<0[xX][0-9a-fA-F]+[lL]?\\>" + "\\<0[xX][[:xdigit:]]+[lL]?\\>" "\\|" "\\<[0-9]+[lLfFdD]?\\>" "\\)" @@ -609,7 +609,7 @@ semantic-lex-number-expression [1-9][0-9]* ; HEX_LITERAL: - 0[xX][0-9a-fA-F]+ + 0[xX][[:xdigit:]]+ ; OCTAL_LITERAL: 0[0-7]* diff --git a/lisp/dnd.el b/lisp/dnd.el index 459a7238dc..973af7e518 100644 --- a/lisp/dnd.el +++ b/lisp/dnd.el @@ -138,7 +138,7 @@ dnd-get-local-file-uri (defsubst dnd-unescape-uri (uri) (replace-regexp-in-string - "%[A-Fa-f0-9][A-Fa-f0-9]" + "%[[:xdigit:]][[:xdigit:]]" (lambda (arg) (let ((str (make-string 1 0))) (aset str 0 (string-to-number (substring arg 1) 16)) diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el index 706634a501..1a19cc2910 100644 --- a/lisp/emulation/cua-rect.el +++ b/lisp/emulation/cua-rect.el @@ -1127,7 +1127,7 @@ cua-incr-rectangle (cua--rectangle-operation 'keep nil t 1 nil (lambda (_s e _l _r) (cond - ((re-search-forward "0x\\([0-9a-fA-F]+\\)" e t) + ((re-search-forward "0x\\([[:xdigit:]]+\\)" e t) (let* ((txt (cua--filter-buffer-noprops (match-beginning 1) (match-end 1))) (n (string-to-number txt 16)) (fmt (format "0x%%0%dx" (length txt)))) diff --git a/lisp/epg.el b/lisp/epg.el index 0400716845..1d2f5be818 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -950,7 +950,7 @@ 'epg--time-from-seconds (defun epg--status-ERRSIG (context string) (if (string-match "\\`\\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) \ -\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\([^ ]+\\) \\([0-9]+\\)" +\\([[:xdigit:]][[:xdigit:]]\\) \\([^ ]+\\) \\([0-9]+\\)" string) (let ((signature (epg-make-signature 'error))) (epg-context-set-result-for @@ -974,7 +974,7 @@ epg--status-VALIDSIG (when (and signature (eq (epg-signature-status signature) 'good) (string-match "\\`\\([^ ]+\\) [^ ]+ \\([^ ]+\\) \\([^ ]+\\) \ -\\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([0-9A-Fa-f][0-9A-Fa-f]\\) \ +\\([0-9]+\\) [^ ]+ \\([0-9]+\\) \\([0-9]+\\) \\([[:xdigit:]][[:xdigit:]]\\) \ \\(.*\\)" string)) (setf (epg-signature-fingerprint signature) @@ -1144,7 +1144,7 @@ epg--status-DELETE_PROBLEM (defun epg--status-SIG_CREATED (context string) (if (string-match "\\`\\([DCS]\\) \\([0-9]+\\) \\([0-9]+\\) \ -\\([0-9A-Fa-f][0-9A-Fa-f]\\) \\(.*\\) " string) +\\([[:xdigit:]][[:xdigit:]]\\) \\(.*\\) " string) (epg-context-set-result-for context 'sign (cons (epg-make-new-signature @@ -2021,7 +2021,7 @@ epg-edit-key (defun epg--decode-percent-escape (string) (let ((index 0)) - (while (string-match "%\\(\\(%\\)\\|\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" + (while (string-match "%\\(\\(%\\)\\|\\([[:xdigit:]][[:xdigit:]]\\)\\)" string index) (if (match-beginning 2) (setq string (replace-match "%" t t string) @@ -2034,7 +2034,7 @@ epg--decode-percent-escape (defun epg--decode-hexstring (string) (let ((index 0)) - (while (eq index (string-match "[0-9A-Fa-f][0-9A-Fa-f]" string index)) + (while (eq index (string-match "[[:xdigit:]][[:xdigit:]]" string index)) (setq string (replace-match (string (string-to-number (match-string 0 string) 16)) t t string) @@ -2044,7 +2044,7 @@ epg--decode-hexstring (defun epg--decode-quotedstring (string) (let ((index 0)) (while (string-match "\\\\\\(\\([,=+<>#;\\\"]\\)\\|\ -\\([0-9A-Fa-f][0-9A-Fa-f]\\)\\)" +\\([[:xdigit:]][[:xdigit:]]\\)\\)" string index) (if (match-beginning 2) (setq string (replace-match "\\2" t nil string) @@ -2081,7 +2081,7 @@ epg-dn-from-string string index)) (setq index (match-end 0) value (epg--decode-quotedstring (match-string 0 string))) - (if (eq index (string-match "#\\([0-9A-Fa-f]+\\)" string index)) + (if (eq index (string-match "#\\([[:xdigit:]]+\\)" string index)) (setq index (match-end 0) value (epg--decode-hexstring (match-string 1 string))) (if (eq index (string-match "\"\\([^\\\"]\\|\\\\.\\)*\"" diff --git a/lisp/faces.el b/lisp/faces.el index 89b598669c..f9e8c6c58b 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -1997,7 +1997,7 @@ read-color (when (and convert-to-RGB (not (string-equal color ""))) (let ((components (x-color-values color))) - (unless (string-match-p "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color) + (unless (string-match-p "^#\\(?:[[:xdigit:]][[:xdigit:]][[:xdigit:]]\\)+$" color) (setq color (format "#%04X%04X%04X" (logand 65535 (nth 0 components)) (logand 65535 (nth 1 components)) diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index d826faca5b..11782998f5 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -7426,10 +7426,10 @@ gnus-button-mid-or-mail-heuristic-alist (-2.0 . "^[0-9]") (-1.0 . "^[0-9][0-9]") ;; - ;; -3.0 /^[0-9][0-9a-fA-F]{2,2}/; - (-3.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") - ;; -5.0 /^[0-9][0-9a-fA-F]{3,3}/; - (-5.0 . "^[0-9][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][^0-9a-fA-F]") + ;; -3.0 /^[0-9][[:xdigit:]]{2,2}/; + (-3.0 . "^[0-9][[:xdigit:]][[:xdigit:]][^[:xdigit:]]") + ;; -5.0 /^[0-9][[:xdigit:]]{3,3}/; + (-5.0 . "^[0-9][[:xdigit:]][[:xdigit:]][[:xdigit:]][^[:xdigit:]]") ;; (-3.0 . "[0-9][0-9][0-9][0-9][0-9][^0-9].*@") ;; "[0-9]{5,}.*\@" (-3.0 . "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][^0-9].*@") diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el index db7489fbf1..02a27b367c 100644 --- a/lisp/gnus/mml-sec.el +++ b/lisp/gnus/mml-sec.el @@ -725,7 +725,7 @@ mml-secure-find-usable-keys is expired or revoked. If optional JUSTONE is not nil, return the first key instead of a list." (let* ((keys (epg-list-keys context name)) - (iskeyid (string-match "\\(0x\\)?\\([0-9a-fA-F]\\{8,\\}\\)" name)) + (iskeyid (string-match "\\(0x\\)?\\([[:xdigit:]]\\{8,\\}\\)" name)) (fingerprint (match-string 2 name)) result) (when (and iskeyid (>= (length keys) 2)) diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el index f64007aaf7..c3d511bc6e 100644 --- a/lisp/gnus/nneething.el +++ b/lisp/gnus/nneething.el @@ -297,7 +297,7 @@ nneething-encode-file-name (defun nneething-decode-file-name (file &optional coding-system) "Decode the name of the FILE is encoded in CODING-SYSTEM." (let ((pos 0) buf) - (while (string-match "%\\([0-9a-fA-F][0-9a-fA-F]\\)" file pos) + (while (string-match "%\\([[:xdigit:]][[:xdigit:]]\\)" file pos) (setq buf (cons (string (string-to-number (match-string 1 file) 16)) (cons (substring file pos (match-beginning 0)) buf)) pos (match-end 0))) diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index f37a76cd7b..0466e7c024 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el @@ -566,7 +566,7 @@ hfy-facemap-assoc (defvar hfy-tmpfont-stack nil "An alist of derived fonts resulting from overlays.") -(defconst hfy-hex-regex "[0-9A-Fa-f]") +(defconst hfy-hex-regex "[[:xdigit:]]") (defconst hfy-triplet-regex (concat diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 47b07479c3..1edf80d14c 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -3079,7 +3079,7 @@ read-char-by-name (char (cond ((char-from-name input t)) - ((string-match-p "\\`[0-9a-fA-F]+\\'" input) + ((string-match-p "\\`[[:xdigit:]]+\\'" input) (ignore-errors (string-to-number input 16))) ((string-match-p "\\`#\\([bBoOxX]\\|[0-9]+[rR]\\)[0-9a-zA-Z]+\\'" input) diff --git a/lisp/mail/rfc2231.el b/lisp/mail/rfc2231.el index 0a0983c25f..6ddb2964e5 100644 --- a/lisp/mail/rfc2231.el +++ b/lisp/mail/rfc2231.el @@ -223,7 +223,7 @@ rfc2231-decode-encoded-string (mm-with-unibyte-buffer (insert value) (goto-char (point-min)) - (while (re-search-forward "%\\([0-9A-Fa-f][0-9A-Fa-f]\\)" nil t) + (while (re-search-forward "%\\([[:xdigit:]][[:xdigit:]]\\)" nil t) (insert (prog1 (string-to-number (match-string 1) 16) diff --git a/lisp/net/shr-color.el b/lisp/net/shr-color.el index 2d6cf68d8f..af0b99c76f 100644 --- a/lisp/net/shr-color.el +++ b/lisp/net/shr-color.el @@ -235,7 +235,7 @@ shr-color->hexadecimal (cond ;; Hexadecimal color: #abc or #aabbcc ((string-match - "\\(#[0-9a-fA-F]\\{3\\}[0-9a-fA-F]\\{3\\}?\\)" + "\\(#[[:xdigit:]]\\{3\\}[[:xdigit:]]\\{3\\}?\\)" color) (match-string 1 color)) ;; rgb() or rgba() colors diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el index 2956efb736..c524567a5b 100644 --- a/lisp/nxml/nxml-maint.el +++ b/lisp/nxml/nxml-maint.el @@ -34,10 +34,10 @@ nxml-insert-target-repertoire-glyph-set (let (lst head) (with-current-buffer (find-file-noselect file) (goto-char (point-min)) - (while (re-search-forward "^ *\\([a-fA-F0-9]\\{2\\}\\)[ \t]+" nil t) + (while (re-search-forward "^ *\\([[:xdigit:]]\\{2\\}\\)[ \t]+" nil t) (let ((row (match-string 1)) (eol (line-end-position))) - (while (re-search-forward "\\([a-fA-F0-9]\\{2\\}\\)-\\([a-fA-F0-9]\\{2\\}\\)\\|\\([a-fA-F0-9]\\{2\\}\\)" eol t) + (while (re-search-forward "\\([[:xdigit:]]\\{2\\}\\)-\\([[:xdigit:]]\\{2\\}\\)\\|\\([[:xdigit:]]\\{2\\}\\)" eol t) (setq lst (cons (if (match-beginning 3) (concat "#x" row (match-string 3)) diff --git a/lisp/nxml/rng-cmpct.el b/lisp/nxml/rng-cmpct.el index d36f9d92f2..60c871990e 100644 --- a/lisp/nxml/rng-cmpct.el +++ b/lisp/nxml/rng-cmpct.el @@ -369,7 +369,7 @@ rng-c-process-escapes (and pos (rng-c-error "Nul character found (binary file?)"))) (let ((offset 0)) - (while (re-search-forward "\\\\x+{\\([0-9a-fA-F]+\\)}" + (while (re-search-forward "\\\\x+{\\([[:xdigit:]]+\\)}" (point-max) t) (let* ((ch (decode-char 'ucs (string-to-number (match-string 1) 16)))) diff --git a/lisp/nxml/rng-uri.el b/lisp/nxml/rng-uri.el index 798475bbc3..5a67cc7f14 100644 --- a/lisp/nxml/rng-uri.el +++ b/lisp/nxml/rng-uri.el @@ -68,7 +68,7 @@ rng-uri-pattern-file-name-replace-match ;; pattern is either nil or match or replace (defun rng-uri-file-name-1 (uri pattern) - (unless (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F]{2}\\)*\\'" uri) + (unless (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]]{2}\\)*\\'" uri) (rng-uri-error "Bad escapes in URI `%s'" uri)) (setq uri (rng-uri-unescape-multibyte uri)) (let* ((components @@ -299,7 +299,7 @@ rng-join-path (mapconcat 'identity segments "/"))) (defun rng-uri-unescape-multibyte (str) - (replace-regexp-in-string "\\(?:%[89a-fA-F][0-9a-fA-F]\\)+" + (replace-regexp-in-string "\\(?:%[89a-fA-F][[:xdigit:]]\\)+" 'rng-multibyte-percent-decode str)) @@ -310,7 +310,7 @@ rng-multibyte-percent-decode 'utf-8)) (defun rng-uri-unescape-unibyte (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]" (lambda (h) (string-to-number (substring h 1) 16)) str @@ -318,7 +318,7 @@ rng-uri-unescape-unibyte t)) (defun rng-uri-unescape-unibyte-match (str) - (replace-regexp-in-string "%[0-7][0-9a-fA-F]\\|[^%]" + (replace-regexp-in-string "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") "\\([^/]*\\)" @@ -333,7 +333,7 @@ rng-uri-unescape-unibyte-match (defun rng-uri-unescape-unibyte-replace (str next-match-index) (replace-regexp-in-string - "%[0-7][0-9a-fA-F]\\|[^%]" + "%[0-7][[:xdigit:]]\\|[^%]" (lambda (match) (if (string= match "*") (let ((n next-match-index)) diff --git a/lisp/nxml/rng-xsd.el b/lisp/nxml/rng-xsd.el index f308b049f3..582d08e149 100644 --- a/lisp/nxml/rng-xsd.el +++ b/lisp/nxml/rng-xsd.el @@ -330,7 +330,7 @@ rng-xsd-convert-token (match-string 1 string))) (defun rng-xsd-convert-hex-binary (string) - (and (string-match "\\`[ \r\n\t]*\\(\\(?:[0-9A-Fa-f][0-9A-Fa-f]\\)*\\)[ \r\n\t]*\\'" + (and (string-match "\\`[ \r\n\t]*\\(\\(?:[[:xdigit:]][[:xdigit:]]\\)*\\)[ \r\n\t]*\\'" string) (downcase (match-string 1 string)))) @@ -360,7 +360,7 @@ rng-xsd-base64-binary-length n))) (defun rng-xsd-convert-any-uri (string) - (and (string-match "\\`\\(?:[^%]\\|%[0-9a-fA-F][0-9a-fA-F]\\)*\\'" string) + (and (string-match "\\`\\(?:[^%]\\|%[[:xdigit:]][[:xdigit:]]\\)*\\'" string) (string-match "\\`[^#]*\\(?:#[^#]*\\)?\\'" string) (string-match "\\`\\(?:[a-zA-Z][-+.A-Za-z0-9]*:.+\\|[^:]*\\(?:[#/?].*\\)?\\)\\'" string) string)) diff --git a/lisp/nxml/xmltok.el b/lisp/nxml/xmltok.el index afa33e064f..3cab5ed9b7 100644 --- a/lisp/nxml/xmltok.el +++ b/lisp/nxml/xmltok.el @@ -413,7 +413,7 @@ xmltok-forward (xmltok-g decimal-ref-close ";") opt)) (hex-ref (xmltok+ "x" open - (xmltok-g hex "[0-9a-fA-F]" +) + (xmltok-g hex "[[:xdigit:]]" +) (xmltok-g hex-ref-close ";") opt close opt)) (char-ref diff --git a/lisp/nxml/xsd-regexp.el b/lisp/nxml/xsd-regexp.el index 7ae169c19c..c002e6fd9f 100644 --- a/lisp/nxml/xsd-regexp.el +++ b/lisp/nxml/xsd-regexp.el @@ -702,7 +702,7 @@ xsdre-gen-categories (with-current-buffer (find-file-noselect file) (goto-char (point-min)) (mapc (lambda (x) (put x 'xsdre-ranges nil)) xsdre-gen-categories) - (while (re-search-forward "^\\([0-9A-Fa-f]*\\);[^;]*;\\([A-Z][a-z]\\);" + (while (re-search-forward "^\\([[:xdigit:]]*\\);[^;]*;\\([A-Z][a-z]\\);" nil t) (let* ((sym (intern (match-string-no-properties 2))) diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index 8b4e895388..a1552606eb 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -472,7 +472,7 @@ org-mobile-copy-agenda-files (concat (shell-quote-argument org-mobile-checksum-binary) " " (shell-quote-argument (expand-file-name file))))) - (when (string-match "[a-fA-F0-9]\\{30,40\\}" check) + (when (string-match "[[:xdigit:]]\\{30,40\\}" check) (push (cons link-name (match-string 0 check)) org-mobile-checksum-files)))) @@ -761,7 +761,7 @@ org-mobile-update-checksum-for-capture-file (buffer (find-file-noselect file))) (when buffer (with-current-buffer buffer - (when (re-search-forward (concat "\\([0-9a-fA-F]\\{30,\\}\\).*?" + (when (re-search-forward (concat "\\([[:xdigit:]]\\{30,\\}\\).*?" (regexp-quote org-mobile-capture-file) "[ \t]*$") nil t) (goto-char (match-beginning 1)) diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index 147527da1d..513a534d9b 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -155,7 +155,7 @@ org-table-default-size :type 'string) (defcustom org-table-number-regexp - "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$" + "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%:]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$" "Regular expression for recognizing numbers in table columns. If a table column contains mostly numbers, it will be aligned to the right. If not, it will be aligned to the left. @@ -180,9 +180,9 @@ org-table-number-regexp (const :tag "Exponential, Floating point, Integer" "^[-+]?[0-9.]+\\([eEdD][-+0-9]+\\)?$") (const :tag "Very General Number-Like, including hex and Calc radix" - "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") + "^\\([<>]?[-+^.0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") (const :tag "Very General Number-Like, including hex and Calc radix, allows comma as decimal mark" - "^\\([<>]?[-+^.,0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][0-9a-fA-F.]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") + "^\\([<>]?[-+^.,0-9]*[0-9][-+^.0-9eEdDx()%]*\\|[<>]?[-+]?0[xX][[:xdigit:].]+\\|[<>]?[-+]?[0-9]+#[0-9a-zA-Z.]+\\|nan\\|[-+u]?inf\\)$") (string :tag "Regexp:"))) (defcustom org-table-number-fraction 0.5 diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el index 77c1e5e2d8..404e704373 100644 --- a/lisp/progmodes/ada-mode.el +++ b/lisp/progmodes/ada-mode.el @@ -909,7 +909,7 @@ ada-mode-symbol-syntax-table change)) (replace-match "'A'")) (goto-char from) - (while (re-search-forward "\\(#[0-9a-fA-F]*#\\)" to t) + (while (re-search-forward "\\(#[[:xdigit:]]*#\\)" to t) (setq change (cons (list (match-beginning 1) (length (match-string 1)) (match-string 1)) @@ -1013,7 +1013,7 @@ ada-in-string-or-comment-p (defsubst ada-in-numeric-literal-p () "Return t if point is after a prefix of a numeric literal." - (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position))) + (looking-back "\\([0-9]+#[[:xdigit:]_]+\\)" (line-beginning-position))) ;;------------------------------------------------------------------ ;; Contextual menus @@ -5213,7 +5213,7 @@ ada-font-lock-keywords '("<<\\(\\sw+\\)>>" 1 font-lock-constant-face) ;; Highlight based-numbers (R. Reagan <robin-reply <at> reagans.org>) - (list "\\([0-9]+#[0-9a-fA-F_]+#\\)" '(1 font-lock-constant-face t)) + (list "\\([0-9]+#[[:xdigit:]_]+#\\)" '(1 font-lock-constant-face t)) ;; Ada unnamed numerical constants (list "\\W\\([-+]?[0-9._]+\\)\\>" '(1 font-lock-constant-face)) diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 6afcb08a7c..6370c9c3a4 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1415,7 +1415,7 @@ c-after-change-mark-abnormal-strings (defconst c-maybe-quoted-number-head (concat "\\(0\\(" - "\\([Xx]\\([0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*'?\\)?\\)" + "\\([Xx]\\([[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*'?\\)?\\)" "\\|" "\\([Bb]\\([01]\\('[01]\\|[01]\\)*'?\\)?\\)" "\\|" @@ -1435,7 +1435,7 @@ c-quoted-number-head-before-point (save-excursion (let ((here (point)) found) - (skip-chars-backward "0-9a-fA-F'") + (skip-chars-backward "[:xdigit:]'") (if (and (memq (char-before) '(?x ?X)) (eq (char-before (1- (point))) ?0)) (backward-char 2)) @@ -1449,7 +1449,7 @@ c-quoted-number-head-before-point (defconst c-maybe-quoted-number-tail (concat "\\(" - "\\([xX']?[0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([xX']?[[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([bB']?[01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1469,7 +1469,7 @@ c-quoted-number-tail-after-point (defconst c-maybe-quoted-number (concat "\\(0\\(" - "\\([Xx][0-9a-fA-F]\\('[0-9a-fA-F]\\|[0-9a-fA-F]\\)*\\)" + "\\([Xx][[:xdigit:]]\\('[[:xdigit:]]\\|[[:xdigit:]]\\)*\\)" "\\|" "\\([Bb][01]\\('[01]\\|[01]\\)*\\)" "\\|" @@ -1487,9 +1487,9 @@ c-quoted-number-straddling-point (when c-has-quoted-numbers (save-excursion (let ((here (point)) - (bound (progn (skip-chars-forward "0-9a-fA-F'") (point)))) + (bound (progn (skip-chars-forward "[:xdigit:]'") (point)))) (goto-char here) - (when (< (skip-chars-backward "0-9a-fA-F'") 0) + (when (< (skip-chars-backward "[:xdigit:]'") 0) (if (and (memq (char-before) '(?x ?X)) (eq (char-before (1- (point))) ?0)) (backward-char 2)) @@ -1530,7 +1530,7 @@ c-parse-quotes-before-change (if (>= (point) c-new-BEG) (setq c-new-BEG (match-beginning 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-BEG) (setq c-new-BEG (1- (match-beginning 0))))) @@ -1559,7 +1559,7 @@ c-parse-quotes-before-change (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) ((looking-at - "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)'") + "\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)'") (goto-char (match-end 0)) (if (> (match-end 0) c-new-END) (setq c-new-END (match-end 0)))) @@ -1579,8 +1579,8 @@ c-parse-quotes-before-change ((c-quoted-number-tail-after-point) (setq c-new-END (match-end 0))) ((looking-at - "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\|.\\)?\ -\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\\)\\)*'") + "\\(\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\|.\\)?\ +\\('\\([^'\\]\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\\)\\)*'") (setq c-new-END (match-end 0)))) ;; Remove the '(1) syntax-table property from any "'"s within (c-new-BEG @@ -1632,7 +1632,7 @@ c-parse-quotes-after-change 'c-digit-separator t ?') (goto-char num-end)) ((looking-at - "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][0-9a-fA-F]+\\|.\\)\ + "\\([^\\']\\|\\\\\\([0-7]\\{1,3\\}\\|[xuU][[:xdigit:]]+\\|.\\)\ \\)'") ; balanced quoted expression. (goto-char (match-end 0))) ((looking-at "\\\\'") ; Anomalous construct. diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index ba007d67c0..c58acf0c2f 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -3507,18 +3507,18 @@ cperl-look-at-leading-count (defsubst cperl-highlight-charclass (endbracket dashface bsface onec-space) (let ((l '(1 5 7)) ll lle lll ;; 2 groups, the first takes the whole match (include \[trnfabe]) - (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) + (singleChar (concat "\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)"))) (while ; look for unescaped - between non-classes (re-search-forward ;; On 19.33, certain simplifications lead ;; to bugs (as in [^a-z] \\| [trnfabe] ) (concat ; 1: SingleChar (include \[trnfabe]) singleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\(" ; 3: DASH SingleChar (match optionally) "\\(-\\)" ; 4: DASH singleChar ; 5: SingleChar - ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" + ;;"\\(" "[^\\]" "\\|" "\\\\[^cdg-mo-qsu-zA-Z0-9_]" "\\|" "\\\\c." "\\|" "\\\\x" "\\([[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}\\)" "\\|" "\\\\0?[0-7][0-7]?[0-7]?" "\\|" "\\\\N{[^{}]*}" "\\)" "\\)?" "\\|" "\\(" ; 7: other escapes @@ -4420,7 +4420,7 @@ cperl-find-pods-heres "\\=[0123456789]*" (1- e) 'to-end)) (and (eq qtag ?x) (re-search-forward - "\\=[0-9a-fA-F][0-9a-fA-F]?\\|\\={[0-9a-fA-F]+}" + "\\=[[:xdigit:]][[:xdigit:]]?\\|\\={[[:xdigit:]]+}" (1- e) 'to-end)) (and (memq qtag (append "pPN" nil)) (re-search-forward "\\={[^{}]+}\\|." diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el index 53d37b689f..b00308591f 100644 --- a/lisp/progmodes/ebnf-abn.el +++ b/lisp/progmodes/ebnf-abn.el @@ -640,7 +640,7 @@ ebnf-abn-character (let* ((char (following-char)) (chars (cond ((or (= char ?B) (= char ?b)) "01") ((or (= char ?D) (= char ?d)) "0-9") - ((or (= char ?X) (= char ?x)) "0-9A-Fa-f") + ((or (= char ?X) (= char ?x)) "[:xdigit:]") (t (error "Invalid terminal value"))))) (forward-char) (or (> (skip-chars-forward chars ebnf-limit) 0) diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el index 94d9643261..74ff1f47d1 100644 --- a/lisp/progmodes/ebnf-dtd.el +++ b/lisp/progmodes/ebnf-dtd.el @@ -324,7 +324,7 @@ ;; /* Character Reference */ ;; ;; CharRef ::= '&#' [0-9]+ ';' -;; | '&#x' [0-9a-fA-F]+ ';' +;; | '&#x' [[:xdigit:]]+ ';' ;; [WFC: Legal Character] ;; ;; @@ -915,9 +915,9 @@ ebnf-dtd-operators ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" +;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" (defun ebnf-dtd-attlistdecl () @@ -945,7 +945,7 @@ ebnf-dtd-attlistdecl (setq token (ebnf-dtd-lex))) (or (and (eq token 'string) (string-match - "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" + "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$" ebnf-dtd-lex)) (error "Invalid default value in ATTLIST declaration")))) (or (eq token 'end-decl) @@ -986,9 +986,9 @@ ebnf-dtd-namelist ;;; EntityRef ::= '&' Name ';' ;;; ;;; CharRef ::= '&#' [0-9]+ ';' -;;; | '&#x' [0-9a-fA-F]+ ';' +;;; | '&#x' [[:xdigit:]]+ ';' -;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" +;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" (defun ebnf-dtd-entitydecl () @@ -1001,7 +1001,7 @@ ebnf-dtd-entitydecl (setq token (ebnf-dtd-lex)) (if (eq token 'string) (if (string-match - "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" + "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[[:xdigit:]]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$" ebnf-dtd-lex) (setq token (ebnf-dtd-lex)) (error "Invalid ENTITY definition")) @@ -1242,7 +1242,7 @@ ebnf-dtd-lex (setq ebnf-dtd-lex (if (/= (following-char) ?x) (ebnf-dtd-char-ref "&#" "0-9") (forward-char) - (ebnf-dtd-char-ref "&#x" "0-9a-fA-F"))) + (ebnf-dtd-char-ref "&#x" "[:xdigit:]"))) 'char-ref)) ;; miscellaneous: (, ), [, ], =, |, *, +, >, `,' (t diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el index 25500f1618..dc1a60f374 100644 --- a/lisp/progmodes/ebnf-ebx.el +++ b/lisp/progmodes/ebnf-ebx.el @@ -658,7 +658,7 @@ ebnf-ebx-hex-character (or no-error (error "Invalid hexadecimal character")) (forward-char) - (or (> (skip-chars-forward "0-9A-Fa-f" ebnf-limit) 0) + (or (> (skip-chars-forward "[:xdigit:]" ebnf-limit) 0) (error "Invalid hexadecimal character")))) diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 32b0b7551f..1b06077005 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -540,7 +540,7 @@ hif-valid-token-list (defconst hif-token-regexp (concat (regexp-opt (mapcar 'car hif-token-alist)) - "\\|0x[0-9a-fA-F]+\\.?[0-9a-fA-F]*" + "\\|0x[[:xdigit:]]+\\.?[[:xdigit:]]*" "\\|[0-9]+\\.?[0-9]*" ;; decimal/octal "\\|\\w+")) @@ -595,7 +595,7 @@ hif-tokenize ;; 1. postfix 'l', 'll', 'ul' and 'ull' ;; 2. floating number formats (like 1.23e4) ;; 3. 098 is interpreted as octal conversion error - (if (string-match "0x\\([0-9a-fA-F]+\\.?[0-9a-fA-F]*\\)" + (if (string-match "0x\\([[:xdigit:]]+\\.?[[:xdigit:]]*\\)" token) (hif-string-to-number (match-string 1 token) 16)) ;; hex (if (string-match "\\`0[0-9]+\\(\\.[0-9]+\\)?\\'" token) diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 296a7ac3c9..780eff2d8a 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -1071,7 +1071,7 @@ prolog-syntax-propertize-function ;; Supposedly, ISO-Prolog wants \NNN\ for octal and \xNNN\ for hexadecimal ;; escape sequences in atoms, so be careful not to let the terminating \ ;; escape a subsequent quote. - ("\\\\[x0-7][0-9a-fA-F]*\\(\\\\\\)" (1 "_")) + ("\\\\[x0-7][[:xdigit:]]*\\(\\\\\\)" (1 "_")) ))) (defun prolog-mode-variables () diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el index f34b21e4cf..21d3db91ad 100644 --- a/lisp/progmodes/vera-mode.el +++ b/lisp/progmodes/vera-mode.el @@ -635,7 +635,7 @@ vera-font-lock-keywords (list (concat "^\\s-*" vera-rvm-types-regexp "\\s-*\\(\\[[^]]+\\]\\s-+\\)?") '(vera-font-lock-match-item nil nil (1 font-lock-variable-name-face))) ;; highlight numbers - '("\\([0-9]*'[bdoh][0-9a-fA-FxXzZ_]+\\)" 1 vera-font-lock-number) + '("\\([0-9]*'[bdoh][[:xdigit:]xXzZ_]+\\)" 1 vera-font-lock-number) ;; highlight filenames in #include directives '("^#\\s-*include\\s-*\\(<[^>\"\n]*>?\\)" 1 font-lock-string-face) diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index eeed4c0d7c..12b7257ac2 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -2757,7 +2757,7 @@ verilog-optional-signed-range-re "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?")) (defconst verilog-macroexp-re "`\\sw+") -(defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)") +(defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][[:xdigit:]_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)") (defconst verilog-declaration-re-2-no-macro (concat "\\s-*" verilog-declaration-re "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)" @@ -3287,7 +3287,7 @@ verilog-font-lock-grouping-keywords-face 'font-lock-preprocessor-face 'font-lock-type-face)) ;; Fontify delays/numbers - '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\([0-9_.]+\\('s?[hdxbo][0-9a-fA-F_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)" + '("\\(@\\)\\|\\([ \t\n\f\r]#\\s-*\\(\\([0-9_.]+\\('s?[hdxbo][[:xdigit:]_xz]*\\)?\\)\\|\\(([^()]+)\\|\\sw+\\)\\)\\)" 0 font-lock-type-face append) ;; Fontify property/sequence cycle delays - these start with '##' '("\\(##\\(\\sw+\\|\\[[^]]+\\]\\)\\)" @@ -9177,7 +9177,7 @@ verilog-read-always-signals-recurse (setq end-else-check t)) (forward-char 1)) ((equal keywd "'") - (cond ((looking-at "'[sS]?[hdxboHDXBO]?[ \t]*[0-9a-fA-F_xzXZ?]+") + (cond ((looking-at "'[sS]?[hdxboHDXBO]?[ \t]*[[:xdigit:]_xzXZ?]+") (goto-char (match-end 0))) ((looking-at "'{") (forward-char 2) @@ -9867,7 +9867,7 @@ verilog-is-number "Return true if SYMBOL is number-like." (or (string-match "^[0-9 \t:]+$" symbol) (string-match "^[---]*[0-9]+$" symbol) - (string-match "^[0-9 \t]+'s?[hdxbo][0-9a-fA-F_xz? \t]*$" symbol))) + (string-match "^[0-9 \t]+'s?[hdxbo][[:xdigit:]_xz? \t]*$" symbol))) (defun verilog-symbol-detick (symbol wing-it) "Return an expanded SYMBOL name without any defines. diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index 5d5d787945..b0653bce81 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -873,7 +873,7 @@ css-syntax-propertize-function (css--uri-re (1 "|") (2 "|")))) (defconst css-escapes-re - "\\\\\\(?:[^\000-\037\177]\\|[0-9a-fA-F]+[ \n\t\r\f]?\\)") + "\\\\\\(?:[^\000-\037\177]\\|[[:xdigit:]]+[ \n\t\r\f]?\\)") (defconst css-nmchar-re (concat "\\(?:[-[:alnum:]]\\|" css-escapes-re "\\)")) (defconst css-nmstart-re (concat "\\(?:[[:alpha:]]\\|" css-escapes-re "\\)")) (defconst css-ident-re ;; (concat css-nmstart-re css-nmchar-re "*") @@ -1079,10 +1079,10 @@ css--colors-regexp (regexp-opt (mapcar #'car css--color-map) 'symbols) "\\|" ;; Short hex. css-color-4 adds alpha. - "\\(#[0-9a-fA-F]\\{3,4\\}\\b\\)" + "\\(#[[:xdigit:]]\\{3,4\\}\\b\\)" "\\|" ;; Long hex. css-color-4 adds alpha. - "\\(#\\(?:[0-9a-fA-F][0-9a-fA-F]\\)\\{3,4\\}\\b\\)" + "\\(#\\(?:[[:xdigit:]][[:xdigit:]]\\)\\{3,4\\}\\b\\)" "\\|" ;; RGB. "\\(\\_<rgba?(\\)" diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 0c5d5e56a6..602effe9af 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1293,7 +1293,7 @@ sgml-quote (if unquotep ;; FIXME: We should unquote other named character references as well. (while (re-search-forward - "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][0-9a-fA-F]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" + "\\(&\\(amp\\|quot\\|lt\\|gt\\|#\\([0-9]+\\|[xX][[:xdigit:]]+\\)\\)\\)\\([][<>&;\n\t \"%!'(),/=?]\\|$\\)" nil t) (replace-match (string diff --git a/lisp/version.el b/lisp/version.el index d13d8c31e8..b9e2e50d1f 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -120,7 +120,7 @@ emacs-repository-version-git (with-demoted-errors "Error running git rev-parse: %S" (call-process "git" nil '(t nil) nil "rev-parse" "HEAD"))) (progn (goto-char (point-min)) - (looking-at "[0-9a-fA-F]\\{40\\}")) + (looking-at "[[:xdigit:]]\\{40\\}")) (match-string 0))))) (defun emacs-repository-get-version (&optional dir external) diff --git a/lisp/xml.el b/lisp/xml.el index 09ec72f792..833eb8aced 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -194,13 +194,13 @@ xml-nmtoken-re ;; [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)* (defconst xml-nmtokens-re (concat xml-nmtoken-re "\\(?: " xml-name-re "\\)*")) -;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [0-9a-fA-F]+ ';' -(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)") +;; [66] CharRef ::= '&#' [0-9]+ ';' | '&#x' [[:xdigit:]]+ ';' +(defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[[:xdigit:]]+;\\)") ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([[:xdigit:]]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' @@ -889,7 +889,7 @@ xml--entity-replacement-text The replacement text is obtained by replacing character references and parameter-entity references." (let ((ref-re (eval-when-compile - (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([0-9a-fA-F]+\\)\\|%\\(" + (concat "\\(?:&#\\([0-9]+\\)\\|&#x\\([[:xdigit:]]+\\)\\|%\\(" xml-name-re "\\)\\);"))) children) (while (string-match ref-re string) diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index 5349de055e..96a604f982 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -60,7 +60,7 @@ mod-test-emacs (should (eq 0 (string-match (concat "#<module function " - "\\(at \\(0x\\)?[0-9a-fA-F]+\\( from .*\\)?" + "\\(at \\(0x\\)?[[:xdigit:]]+\\( from .*\\)?" "\\|Fmod_test_sum from .*\\)>") (prin1-to-string (nth 1 descr))))) (should (= (nth 2 descr) 3))) -- 2.21.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.