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

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

bug#16834: 24.3.50; num3-mode detects long hex numbers as decimal


From: Stefan Monnier
Subject: bug#16834: 24.3.50; num3-mode detects long hex numbers as decimal
Date: Fri, 21 Feb 2014 13:05:56 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

> When dealing with large hex numbers the default regex of num3-mode can
> detect them as decimals.  For example given:
> V28   : 00000000000000000007fc0000000000 vs 0000000000000000000bfc000000000
> the follow is high-lighted
> V28   : __xxx___xxx___xxx_____x___xxx___ vs _xxx___xxx___xxx_________xxx___
> which is obviously wrong.

I guess we could use the patch below.  Michal, what do you think?

> It wouldn't hurt to have customisable faces as well as the default can
> look quite harsh depending on the theme.

Hmmm... they are, AFAICT (faces num3-face-odd and num3-face-even).


        Stefan


diff --git a/packages/num3-mode/num3-mode.el b/packages/num3-mode/num3-mode.el
index b890c89..ae3289a 100644
--- a/packages/num3-mode/num3-mode.el
+++ b/packages/num3-mode/num3-mode.el
@@ -1,6 +1,6 @@
 ;;; num3-mode.el --- highlight groups of digits in long numbers  -*- 
lexical-binding: t -*-
 
-;; Copyright (C) 2012 Free Software Foundation, Inc.
+;; Copyright (C) 2012, 2014 Free Software Foundation, Inc.
 
 ;; Author: Felix Lee <felix8a@gmail.com>, Michal Nazarewicz <mina86@mina86.com>
 ;; Maintainer: Michal Nazarewicz <mina86@mina86.com>
@@ -98,7 +98,10 @@ where) decimal point (would be) is."
 (define-globalized-minor-mode global-num3-mode num3-mode num3-mode)
 
 (defconst num3--number-re
-  (concat    "\\(?:0[xX]\\|#\\)\\([0-9a-fA-F]+\\)"  ; 1 = hexadecimal
+  ;; Recognize "0x" and "#x" as prefixes announcing hexadecimal (from C and
+  ;; Elisp, respectively).
+  (concat    "[0#][xX]\\([[:xdigit:]]+\\)"  ; 1 = hexadecimal
+          "\\|\\(?1:[[:xdigit:]]*[a-fA-F][[:xdigit:]]*\\)" ; 1 = hexadecimal
           "\\|\\([0-9]+\\)"                         ; 2 = decimal
           "\\|\\.\\([0-9]+\\)"))                    ; 3 = fraction
 





reply via email to

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