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

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

bug#54730: AW: bug#54730: 28.1; vhdl-update-sensitivity-list not working


From: Cyril Arnould
Subject: bug#54730: AW: bug#54730: 28.1; vhdl-update-sensitivity-list not working in Windows
Date: Tue, 5 Apr 2022 17:53:20 +0000

Nice, it’s working! Too bad this didn’t make it into the 28.1 release, I guess I should have

tested more. So for now the solution is to keep the vhdl-mode.el locally until it finds its

way into a maintenance release?

 

FYI, the sensitivity list of the VHDL process is what’s enclosed in parentheses, so in this

case it’s «(Clk_CI, Rst_RBI)». If you modify the sensitivity list or delete it entirely and

execute vhdl-update-sensitivity-list, it should return back to the way it was. The

BlockCount_DN and Length_DN signals on the other hand are *not* part of the sensitivity

list because the process only needs to be updated at the Clk_CI’event (or any Rst_RBI’event).

 

 

Von: Eli Zaretskii
Gesendet: Dienstag, 5. April 2022 19:26
An: Cyril Arnould
Cc: 54730@debbugs.gnu.org
Betreff: Re: bug#54730: 28.1; vhdl-update-sensitivity-list not working in Windows

 

> From: Cyril Arnould <cyril.arnould@outlook.com>
> CC: "54730@debbugs.gnu.org" <54730@debbugs.gnu.org>
> Date: Tue, 5 Apr 2022 17:08:28 +0000
>
> I’ve added an example file you can visit in the attachment. To reproduce, simply
> put the cursor inside the process (M-g-g 30 RET) and execute
> vhdl-update-sensitivity-list-process (C-c C-u C-s). I’m getting the following backtrace:
>
> Debugger entered--Lisp error: (void-variable proc-end)
>   (vhdl-re-search-forward "[<:]=" proc-end t)
>   eval((vhdl-re-search-forward "[<:]=" proc-end t))
>   vhdl-update-sensitivity-list()
>   vhdl-update-sensitivity-list-process()
>   funcall-interactively(vhdl-update-sensitivity-list-process)
>   command-execute(vhdl-update-sensitivity-list-process)

Thanks, I think I see the problem now.  Does the below fix the
problem?  If not, can you tell me how to show the sensitivity list,
and what should be the correct result of invoking
vhdl-update-sensitivity-list-process in this case?

diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el
index 64ebc14..e562a46 100644
--- a/lisp/progmodes/vhdl-mode.el
+++ b/lisp/progmodes/vhdl-mode.el
@@ -8396,30 +8396,30 @@ vhdl-update-sensitivity-list
             ((visible-list (vhdl-get-visible-signals))
              ;; define syntactic regions where signals are read
              (scan-regions-list
-             '(;; right-hand side of signal/variable assignment
+             `(;; right-hand side of signal/variable assignment
                 ;; (special case: "<=" is relational operator in a condition)
-               ((vhdl-re-search-forward "[<:]=" proc-end t)
-                (vhdl-re-search-forward ";\\|\\<\\(then\\|loop\\|report\\|severity\\|is\\)\\>" proc-end t))
+               ((vhdl-re-search-forward "[<:]=" ,proc-end t)
+                (vhdl-re-search-forward ";\\|\\<\\(then\\|loop\\|report\\|severity\\|is\\)\\>" ,proc-end t))
                 ;; if condition
-               ((vhdl-re-search-forward "^\\s-*if\\>" proc-end t)
-                (vhdl-re-search-forward "\\<then\\>" proc-end t))
+               ((vhdl-re-search-forward "^\\s-*if\\>" ,proc-end t)
+                (vhdl-re-search-forward "\\<then\\>" ,proc-end t))
                 ;; elsif condition
-               ((vhdl-re-search-forward "\\<elsif\\>" proc-end t)
-                (vhdl-re-search-forward "\\<then\\>" proc-end t))
+               ((vhdl-re-search-forward "\\<elsif\\>" ,proc-end t)
+                (vhdl-re-search-forward "\\<then\\>" ,proc-end t))
                 ;; while loop condition
-               ((vhdl-re-search-forward "^\\s-*while\\>" proc-end t)
-                (vhdl-re-search-forward "\\<loop\\>" proc-end t))
+               ((vhdl-re-search-forward "^\\s-*while\\>" ,proc-end t)
+                (vhdl-re-search-forward "\\<loop\\>" ,proc-end t))
                 ;; exit/next condition
-               ((vhdl-re-search-forward "\\<\\(exit\\|next\\)\\s-+\\w+\\s-+when\\>" proc-end t)
-                (vhdl-re-search-forward ";" proc-end t))
+               ((vhdl-re-search-forward "\\<\\(exit\\|next\\)\\s-+\\w+\\s-+when\\>" ,proc-end t)
+                (vhdl-re-search-forward ";" ,proc-end t))
                 ;; assert condition
-               ((vhdl-re-search-forward "\\<assert\\>" proc-end t)
-                (vhdl-re-search-forward "\\(\\<report\\>\\|\\<severity\\>\\|;\\)" proc-end t))
+               ((vhdl-re-search-forward "\\<assert\\>" ,proc-end t)
+                (vhdl-re-search-forward "\\(\\<report\\>\\|\\<severity\\>\\|;\\)" ,proc-end t))
                 ;; case _expression_
-               ((vhdl-re-search-forward "^\\s-*case\\>" proc-end t)
-                (vhdl-re-search-forward "\\<is\\>" proc-end t))
+               ((vhdl-re-search-forward "^\\s-*case\\>" ,proc-end t)
+                (vhdl-re-search-forward "\\<is\\>" ,proc-end t))
                 ;; parameter list of procedure call, array index
-               ((and (re-search-forward "^\\s-*\\(\\w\\|\\.\\)+[ \t\n\r\f]*(" proc-end t)
+               ((and (re-search-forward "^\\s-*\\(\\w\\|\\.\\)+[ \t\n\r\f]*(" ,proc-end t)
                       (1- (point)))
                  (progn (backward-char) (forward-sexp)
                         (while (looking-at "(") (forward-sexp)) (point)))))

 


reply via email to

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