emacs-diffs
[Top][All Lists]
Advanced

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

master cb0b6a40570: verilog-mode.el: Fix AUTOWIRE etc. range simplificat


From: Wilson Snyder
Subject: master cb0b6a40570: verilog-mode.el: Fix AUTOWIRE etc. range simplification with subtraction of negative number.
Date: Wed, 9 Oct 2024 22:35:16 -0400 (EDT)

branch: master
commit cb0b6a405706f6367d9adfb3ee447590c2a0876f
Author: Wilson Snyder <wsnyder@wsnyder.org>
Commit: Wilson Snyder <wsnyder@wsnyder.org>

    verilog-mode.el: Fix AUTOWIRE etc. range simplification with subtraction of 
negative number.
    
    * lisp/progmodes/verilog-mode.el (verilog-simplify-range-expression):
    Fix AUTOWIRE etc. range simplification with subtraction of negative
    number (#1879).
---
 lisp/progmodes/verilog-mode.el | 46 ++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 20 deletions(-)

diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 65545d523a8..58dc234adfe 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -9,7 +9,7 @@
 ;; Keywords: languages
 ;; The "Version" is the date followed by the decimal rendition of the Git
 ;;     commit hex.
-;; Version: 2024.03.01.121933719
+;; Version: 2024.10.09.140346409
 
 ;; Yoni Rabkin <yoni@rabkins.net> contacted the maintainer of this
 ;; file on 19/3/2008, and the maintainer agreed that when a bug is
@@ -124,7 +124,7 @@
 ;;
 
 ;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2024-03-01-7448f97-vpo-GNU"
+(defconst verilog-mode-version "2024-10-09-85d8429-vpo-GNU"
   "Version of this Verilog mode.")
 (defconst verilog-mode-release-emacs t
   "If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -11441,6 +11441,7 @@ This repairs those mis-inserted by an AUTOARG."
           ;; Prefix regexp needs beginning of match, or some symbol of
           ;; lesser or equal precedence.  We assume the [:]'s exist in expr.
           ;; Ditto the end.
+          ;;(message "sre: out=%s" out)
           (while (string-match
                   (concat "\\([[({:*/<>+-]\\)"  ; - must be last
                           "(\\<\\([0-9A-Za-z_]+\\))"
@@ -11486,19 +11487,23 @@ This repairs those mis-inserted by an AUTOARG."
                   out)
             (let ((pre (match-string 1 out))
                   (lhs (string-to-number (match-string 2 out)))
+                  (op (match-string 3 out))
                   (rhs (string-to-number (match-string 4 out)))
                   (post (match-string 5 out))
                   val)
               (when (equal pre "-")
                 (setq lhs (- lhs)))
-              (setq val (if (equal (match-string 3 out) "-")
+              (setq val (if (equal op "-")
                             (- lhs rhs)
                           (+ lhs rhs))
                     out (replace-match
-                         (concat (if (and (equal pre "-")
-                                          (< val 0))
-                                     ""  ; Not "--20" but just "-20"
-                                   pre)
+                         (concat (cond ((and (equal pre "-")
+                                             (< val 0))
+                                        "")  ; Not "--20" but just "-20"
+                                       ((and (equal pre "-")
+                                             (> val 0))
+                                        "+")  ; Not "-+20" but just "+20"
+                                       (t pre))
                                  (int-to-string val)
                                  post)
                          nil nil out)) ))
@@ -11526,19 +11531,20 @@ This repairs those mis-inserted by an AUTOARG."
                        nil nil out)))))
       out)))
 
-;;(verilog-simplify-range-expression "[1:3]")  ; 1
-;;(verilog-simplify-range-expression "[(1):3]")  ; 1
-;;(verilog-simplify-range-expression "[(((16)+1)+1+(1+1))]")  ; 20
-;;(verilog-simplify-range-expression "[(2*3+6*7)]")  ; 48
-;;(verilog-simplify-range-expression "[(FOO*4-1*2)]")  ; FOO*4-2
-;;(verilog-simplify-range-expression "[(FOO*4+1-1)]")  ; FOO*4+0
-;;(verilog-simplify-range-expression "[(func(BAR))]")  ; func(BAR)
-;;(verilog-simplify-range-expression "[FOO-1+1-1+1]")  ; FOO-0
-;;(verilog-simplify-range-expression "[$clog2(2)]")  ; 1
-;;(verilog-simplify-range-expression "[$clog2(7)]")  ; 3
-;;(verilog-simplify-range-expression "[(TEST[1])-1:0]")
-;;(verilog-simplify-range-expression "[1<<2:8>>2]")  ; [4:2]
-;;(verilog-simplify-range-expression "[2*4/(4-2) +2+4 <<4 >>2]")
+;;(verilog-simplify-range-expression "[1:3]")  ; "[1:3]"
+;;(verilog-simplify-range-expression "[(1):3]")  ; "[1:3]"
+;;(verilog-simplify-range-expression "[(((16)+1)+1+(1+1))]")  ; "[20]"
+;;(verilog-simplify-range-expression "[(2*3+6*7)]")  ; "[48]"
+;;(verilog-simplify-range-expression "[(FOO*4-1*2)]")  ; "[FOO*4-2]"
+;;(verilog-simplify-range-expression "[(FOO*4+1-1)]")  ; "[FOO*4+0]"
+;;(verilog-simplify-range-expression "[(func(BAR))]")  ; "[func(BAR)]"
+;;(verilog-simplify-range-expression "[FOO-1+1-1+1]")  ; "[FOO-0]"
+;;(verilog-simplify-range-expression "[FOO-1+2:LSB-3+1]")  ; "[FOO+1:LSB-1]"
+;;(verilog-simplify-range-expression "[$clog2(2)]")  ; "[1]"
+;;(verilog-simplify-range-expression "[$clog2(7)]")  ; "[3]"
+;;(verilog-simplify-range-expression "[(TEST[1])-1:0]")  ; "[(TEST[1])-1:0]"
+;;(verilog-simplify-range-expression "[1<<2:8>>2]")  ; "[4:2]"
+;;(verilog-simplify-range-expression "[2*4/(4-2) +2+4 <<4 >>2]")  ; "[8/(2) 
+2+4 <<4 >>2]"
 ;;(verilog-simplify-range-expression "[WIDTH*2/8-1:0]")  ; "[WIDTH*2/8-1:0]"
 ;;(verilog-simplify-range-expression "[(FOO).size:0]")  ; "[FOO.size:0]"
 



reply via email to

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