1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-09 07:40:39 -08:00

Sync with upstream verilog-mode revision aa4b777

* lisp/progmodes/verilog-mode.el (verilog-mode-version): Update.
(verilog-auto-end-comment-lines-re, verilog-end-block-ordered-re)
(verilog-set-auto-endcomments): Automatically comment property/
endproperty blocks to match other similar blocks like sequence/
endsequence, function/endfunction, etc.  Reported by Alex Reed.
(verilog-set-auto-endcomments): Fix end comments for functions of
type void, etc.  Detect the function- or task-name when
auto-commenting blocks that lack an explicit portlist.
Reported by Alex Reed.
(verilog-nameable-item-re): Fix nameable items that can have an
end-identifier to include endchecker, endgroup, endprogram,
endproperty, and endsequence.  Reported by Alex Reed.
(verilog-preprocessor-re, verilog-beg-of-statement):
Fix indentation of property/endproperty around pre-processor
directives.  Reported by Alex Reed.
(verilog-label-be): When auto-commenting a buffer, consider
auto-comments on all known keywords (not just a subset thereof).
Reported by Alex Reed.
(verilog-beg-of-statement): Fix labeling do-while blocks, bug842.
Reported by Alex Reed.
(verilog-beg-of-statement-1, verilog-at-constraint-p):
Fix hanging with many curly-bracket pairs, bug663.
(verilog-do-indent): Fix electric tab deleting form-feeds.
Note caused by indent-line-to deleting tabls pre 24.5.
(verilog-auto-output, verilog-auto-input, verilog-auto-inout)
(verilog-auto-inout-module, verilog-auto-inout-in): Doc fixes.
(verilog-read-always-signals, verilog-auto-sense-sigs)
(verilog-auto-reset): Fix AUTORESET with always_comb and always_latch,
bug844.  Reported by Greg Hilton.

Author: Alex Reed <acreed4@gmail.com> (tiny change)
* lisp/progmodes/verilog-mode.el (verilog-no-indent-begin-re):
Fix `verilog-indent-begin-after-if' nil not honoring 'forever',
'foreach', and 'do' keywords.
(verilog-endcomment-reason-re, verilog-beg-of-statement):
Fix labeling do-while blocks, bug842.
(verilog-backward-token): Fix indenting sensitivity lists with named
events, bug840.
This commit is contained in:
Wilson Snyder 2014-12-08 23:14:30 -08:00 committed by Glenn Morris
parent fb0fcda820
commit d282d6a595
2 changed files with 183 additions and 61 deletions

View file

@ -1,3 +1,46 @@
2014-12-09 Wilson Snyder <wsnyder@wsnyder.org>
Sync with upstream verilog-mode revision aa4b777.
* progmodes/verilog-mode.el (verilog-mode-version): Update.
(verilog-auto-end-comment-lines-re, verilog-end-block-ordered-re)
(verilog-set-auto-endcomments): Automatically comment property/
endproperty blocks to match other similar blocks like sequence/
endsequence, function/endfunction, etc. Reported by Alex Reed.
(verilog-set-auto-endcomments): Fix end comments for functions of
type void, etc. Detect the function- or task-name when
auto-commenting blocks that lack an explicit portlist.
Reported by Alex Reed.
(verilog-nameable-item-re): Fix nameable items that can have an
end-identifier to include endchecker, endgroup, endprogram,
endproperty, and endsequence. Reported by Alex Reed.
(verilog-preprocessor-re, verilog-beg-of-statement):
Fix indentation of property/endproperty around pre-processor
directives. Reported by Alex Reed.
(verilog-label-be): When auto-commenting a buffer, consider
auto-comments on all known keywords (not just a subset thereof).
Reported by Alex Reed.
(verilog-beg-of-statement): Fix labeling do-while blocks, bug842.
Reported by Alex Reed.
(verilog-beg-of-statement-1, verilog-at-constraint-p):
Fix hanging with many curly-bracket pairs, bug663.
(verilog-do-indent): Fix electric tab deleting form-feeds.
Note caused by indent-line-to deleting tabls pre 24.5.
(verilog-auto-output, verilog-auto-input, verilog-auto-inout)
(verilog-auto-inout-module, verilog-auto-inout-in): Doc fixes.
(verilog-read-always-signals, verilog-auto-sense-sigs)
(verilog-auto-reset): Fix AUTORESET with always_comb and always_latch,
bug844. Reported by Greg Hilton.
2014-12-09 Alex Reed <acreed4@gmail.com> (tiny change)
* progmodes/verilog-mode.el (verilog-no-indent-begin-re):
Fix `verilog-indent-begin-after-if' nil not honoring 'forever',
'foreach', and 'do' keywords.
(verilog-endcomment-reason-re, verilog-beg-of-statement):
Fix labeling do-while blocks, bug842.
(verilog-backward-token): Fix indenting sensitivity lists with
named events, bug840.
2014-12-09 Reto Zimmermann <reto@gnu.org> 2014-12-09 Reto Zimmermann <reto@gnu.org>
Sync with upstream vhdl mode v3.36.1. Sync with upstream vhdl mode v3.36.1.

View file

@ -123,7 +123,7 @@
;;; Code: ;;; Code:
;; This variable will always hold the version number of the mode ;; This variable will always hold the version number of the mode
(defconst verilog-mode-version "2014-10-03-c075a49-vpo" (defconst verilog-mode-version "2014-11-12-aa4b777-vpo"
"Version of this Verilog mode.") "Version of this Verilog mode.")
(defconst verilog-mode-release-emacs t (defconst verilog-mode-release-emacs t
"If non-nil, this version of Verilog mode was released with Emacs itself.") "If non-nil, this version of Verilog mode was released with Emacs itself.")
@ -2269,8 +2269,9 @@ find the errors."
(defconst verilog-no-indent-begin-re (defconst verilog-no-indent-begin-re
(eval-when-compile (eval-when-compile
(verilog-regexp-words (verilog-regexp-words
'( "if" "else" "while" "for" "repeat" "always" "always_comb" "always_ff" "always_latch" '("always" "always_comb" "always_ff" "always_latch" "initial" "final" ;; procedural blocks
"initial" "final")))) "if" "else" ;; conditional statements
"while" "for" "foreach" "repeat" "do" "forever" )))) ;; loop statements
(defconst verilog-ends-re (defconst verilog-ends-re
;; Parenthesis indicate type of keyword found ;; Parenthesis indicate type of keyword found
@ -2328,6 +2329,7 @@ find the errors."
"endinterface" "endinterface"
"endpackage" "endpackage"
"endsequence" "endsequence"
"endproperty"
"endspecify" "endspecify"
"endtable" "endtable"
"endtask" "endtask"
@ -2360,6 +2362,7 @@ find the errors."
"\\(program\\)\\|" ; 13 "\\(program\\)\\|" ; 13
"\\(sequence\\)\\|" ; 14 "\\(sequence\\)\\|" ; 14
"\\(clocking\\)\\|" ; 15 "\\(clocking\\)\\|" ; 15
"\\(property\\)\\|" ; 16
"\\)\\>\\)")) "\\)\\>\\)"))
(defconst verilog-end-block-re (defconst verilog-end-block-re
(eval-when-compile (eval-when-compile
@ -2424,7 +2427,7 @@ find the errors."
"\\(\\<package\\>\\)\\|" "\\(\\<package\\>\\)\\|"
"\\(\\<final\\>\\)\\|" "\\(\\<final\\>\\)\\|"
"\\(@\\)\\|" "\\(@\\)\\|"
"\\(\\<while\\>\\)\\|" "\\(\\<while\\>\\)\\|\\(\\<do\\>\\)\\|"
"\\(\\<for\\(ever\\|each\\)?\\>\\)\\|" "\\(\\<for\\(ever\\|each\\)?\\>\\)\\|"
"\\(\\<repeat\\>\\)\\|\\(\\<wait\\>\\)\\|" "\\(\\<repeat\\>\\)\\|\\(\\<wait\\>\\)\\|"
"#")) "#"))
@ -2518,15 +2521,20 @@ find the errors."
"join" "join_any" "join_none" "join" "join_any" "join_none"
"end" "end"
"endcase" "endcase"
"endconfig" "endchecker"
"endclass" "endclass"
"endclocking" "endclocking"
"endconfig"
"endfunction" "endfunction"
"endgenerate" "endgenerate"
"endgroup"
"endmodule" "endmodule"
"endprimitive" "endprimitive"
"endinterface" "endinterface"
"endpackage" "endpackage"
"endprogram"
"endproperty"
"endsequence"
"endspecify" "endspecify"
"endtable" "endtable"
"endtask" ) "endtask" )
@ -2756,10 +2764,45 @@ find the errors."
"String used to mark end of excluded text.") "String used to mark end of excluded text.")
(defconst verilog-preprocessor-re (defconst verilog-preprocessor-re
(eval-when-compile (eval-when-compile
(concat
;; single words
"\\(?:"
(verilog-regexp-words (verilog-regexp-words
`( `("`__FILE__"
"`define" "`include" "`ifdef" "`ifndef" "`if" "`endif" "`else" "`__LINE__"
)))) "`celldefine"
"`else"
"`end_keywords"
"`endcelldefine"
"`endif"
"`nounconnected_drive"
"`resetall"
"`unconnected_drive"
"`undefineall"))
"\\)\\|\\(?:"
;; two words: i.e. `ifdef DEFINE
"\\<\\(`elsif\\|`ifn?def\\|`undef\\|`default_nettype\\|`begin_keywords\\)\\>\\s-"
"\\)\\|\\(?:"
;; `line number "filename" level
"\\<\\(`line\\)\\>\\s-+[0-9]+\\s-+\"[^\"]+\"\\s-+[012]"
"\\)\\|\\(?:"
;;`include "file" or `include <file>
"\\<\\(`include\\)\\>\\s-+\\(?:\"[^\"]+\"\\|<[^>]+>\\)"
"\\)\\|\\(?:"
;; `pragma <stuff> (no mention in IEEE 1800-2012 that pragma can span multiple lines
"\\<\\(`pragma\\)\\>\\s-+.+$"
"\\)\\|\\(?:"
;; `timescale time_unit / time_precision
"\\<\\(`timescale\\)\\>\\s-+10\\{0,2\\}\\s-*[munpf]?s\\s-*\\/\\s-*10\\{0,2\\}\\s-*[munpf]?s"
"\\)\\|\\(?:"
;; `define and `if can span multiple lines if line ends in '\'. NOTE: `if is not IEEE 1800-2012
;; from http://www.emacswiki.org/emacs/MultilineRegexp
(concat "\\<\\(`define\\|`if\\)\\>" ;; directive
"\\s-+" ;; separator
"\\(.*\\(?:\n.*\\)*?\\)" ;; definition: to tend of line, the maybe more lines (excludes any trailing \n)
"\\(?:\n\\s-*\n\\|\\'\\)") ;; blank line or EOF
"\\)"
)))
(defconst verilog-keywords (defconst verilog-keywords
'( "`case" "`default" "`define" "`else" "`endfor" "`endif" '( "`case" "`default" "`define" "`else" "`endfor" "`endif"
@ -4126,9 +4169,7 @@ Uses `verilog-scan' cache."
(while (and (while (and
(> (marker-position e) (point)) (> (marker-position e) (point))
(verilog-re-search-forward (verilog-re-search-forward
(concat verilog-auto-end-comment-lines-re
"\\<end\\(\\(function\\)\\|\\(task\\)\\|\\(module\\)\\|\\(primitive\\)\\|\\(interface\\)\\|\\(package\\)\\|\\(case\\)\\)?\\>"
"\\|\\(`endif\\)\\|\\(`else\\)")
nil 'move)) nil 'move))
(goto-char (match-beginning 0)) (goto-char (match-beginning 0))
(let ((indent-str (verilog-indent-line))) (let ((indent-str (verilog-indent-line)))
@ -4158,7 +4199,7 @@ Uses `verilog-scan' cache."
;; then move back a token and test again. ;; then move back a token and test again.
(not (or (not (or
;; stop if beginning of buffer ;; stop if beginning of buffer
(bolp) (bobp)
;; stop if we find a ; ;; stop if we find a ;
(= (preceding-char) ?\;) (= (preceding-char) ?\;)
;; stop if we see a named coverpoint ;; stop if we see a named coverpoint
@ -4189,13 +4230,15 @@ Uses `verilog-scan' cache."
;; stop if previous token is an ender ;; stop if previous token is an ender
(save-excursion (save-excursion
(verilog-backward-token) (verilog-backward-token)
(or (looking-at verilog-end-block-re))))
(looking-at verilog-end-block-re)
(looking-at verilog-preprocessor-re))))) ;; end of test
(verilog-backward-syntactic-ws) (verilog-backward-syntactic-ws)
(verilog-backward-token)) (verilog-backward-token))
;; Now point is where the previous line ended. ;; Now point is where the previous line ended.
(verilog-forward-syntactic-ws))) (verilog-forward-syntactic-ws)
;; Skip forward over any preprocessor directives, as they have wacky indentation
(if (looking-at verilog-preprocessor-re)
(progn (goto-char (match-end 0))
(verilog-forward-syntactic-ws)))))
(defun verilog-beg-of-statement-1 () (defun verilog-beg-of-statement-1 ()
"Move backward to beginning of statement." "Move backward to beginning of statement."
@ -4209,13 +4252,12 @@ Uses `verilog-scan' cache."
(verilog-backward-syntactic-ws) (verilog-backward-syntactic-ws)
(if (or (bolp) (if (or (bolp)
(= (preceding-char) ?\;) (= (preceding-char) ?\;)
(save-excursion (progn
(verilog-backward-token) (verilog-backward-token)
(looking-at verilog-ends-re))) (looking-at verilog-ends-re)))
(progn (progn
(goto-char pt) (goto-char pt)
(throw 'done t)) (throw 'done t)))))
(verilog-backward-token))))
(verilog-forward-syntactic-ws))) (verilog-forward-syntactic-ws)))
; ;
; (while (and ; (while (and
@ -4773,10 +4815,10 @@ primitive or interface named NAME."
(cond (cond
((match-end 5) ;; of verilog-end-block-ordered-re ((match-end 5) ;; of verilog-end-block-ordered-re
(setq reg "\\(\\<function\\>\\)\\|\\(\\<\\(endfunction\\|task\\|\\(macro\\)?module\\|primitive\\)\\>\\)") (setq reg "\\(\\<function\\>\\)\\|\\(\\<\\(endfunction\\|task\\|\\(macro\\)?module\\|primitive\\)\\>\\)")
(setq name-re "\\w+\\s-*(")) (setq name-re "\\w+\\(?:\n\\|\\s-\\)*[(;]"))
((match-end 6) ;; of verilog-end-block-ordered-re ((match-end 6) ;; of verilog-end-block-ordered-re
(setq reg "\\(\\<task\\>\\)\\|\\(\\<\\(endtask\\|function\\|\\(macro\\)?module\\|primitive\\)\\>\\)") (setq reg "\\(\\<task\\>\\)\\|\\(\\<\\(endtask\\|function\\|\\(macro\\)?module\\|primitive\\)\\>\\)")
(setq name-re "\\w+\\s-*(")) (setq name-re "\\w+\\(?:\n\\|\\s-\\)*[(;]"))
((match-end 7) ;; of verilog-end-block-ordered-re ((match-end 7) ;; of verilog-end-block-ordered-re
(setq reg "\\(\\<\\(macro\\)?module\\>\\)\\|\\<endmodule\\>")) (setq reg "\\(\\<\\(macro\\)?module\\>\\)\\|\\<endmodule\\>"))
((match-end 8) ;; of verilog-end-block-ordered-re ((match-end 8) ;; of verilog-end-block-ordered-re
@ -4795,6 +4837,8 @@ primitive or interface named NAME."
(setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\<\\(endsequence\\|primitive\\|interface\\|\\(macro\\)?module\\)\\>\\)")) (setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\<\\(endsequence\\|primitive\\|interface\\|\\(macro\\)?module\\)\\>\\)"))
((match-end 15) ;; of verilog-end-block-ordered-re ((match-end 15) ;; of verilog-end-block-ordered-re
(setq reg "\\(\\<clocking\\>\\)\\|\\<endclocking\\>")) (setq reg "\\(\\<clocking\\>\\)\\|\\<endclocking\\>"))
((match-end 16) ;; of verilog-end-block-ordered-re
(setq reg "\\(\\<property\\>\\)\\|\\<endproperty\\>"))
(t (error "Problem in verilog-set-auto-endcomments"))) (t (error "Problem in verilog-set-auto-endcomments")))
(let (b e) (let (b e)
@ -5849,7 +5893,9 @@ Set point to where line starts."
(;-- any of begin|initial|while are complete statements; 'begin : foo' is also complete (;-- any of begin|initial|while are complete statements; 'begin : foo' is also complete
t t
(forward-word -1) (forward-word -1)
(while (= (preceding-char) ?\_) (while (or (= (preceding-char) ?\_)
(= (preceding-char) ?\@)
(= (preceding-char) ?\.))
(forward-word -1)) (forward-word -1))
(cond (cond
((looking-at "\\<else\\>") ((looking-at "\\<else\\>")
@ -6103,14 +6149,18 @@ Return >0 for nested struct."
(defun verilog-at-constraint-p () (defun verilog-at-constraint-p ()
"If at the { of a constraint or coverpoint definition, return true, moving point to constraint." "If at the { of a constraint or coverpoint definition, return true, moving point to constraint."
(if (save-excursion (if (save-excursion
(let ((p (point)))
(and (and
(equal (char-after) ?\{) (equal (char-after) ?\{)
(forward-list) (forward-list)
(progn (backward-char 1) (progn (backward-char 1)
(verilog-backward-ws&directives) (verilog-backward-ws&directives)
(and
(or (equal (char-before) ?\{) ;; empty case (or (equal (char-before) ?\{) ;; empty case
(equal (char-before) ?\;) (equal (char-before) ?\;)
(equal (char-before) ?\}))))) (equal (char-before) ?\}))
;; skip what looks like bus repitition operator {#{
(not (string-match "^{\\s-*[0-9]+\\s-*{" (buffer-substring p (point)))))))))
(progn (progn
(let ( (pt (point)) (pass 0)) (let ( (pt (point)) (pass 0))
(verilog-backward-ws&directives) (verilog-backward-ws&directives)
@ -6429,6 +6479,9 @@ Only look at a few lines to determine indent level."
(looking-at verilog-declaration-re)) (looking-at verilog-declaration-re))
(verilog-indent-declaration ind)) (verilog-indent-declaration ind))
(;-- form feeds - ignored as bug in indent-line-to in < 24.5
(looking-at "\f"))
(;-- Everything else (;-- Everything else
t t
(let ((val (eval (cdr (assoc type verilog-indent-alist))))) (let ((val (eval (cdr (assoc type verilog-indent-alist)))))
@ -8894,7 +8947,6 @@ IGNORE-NEXT is true to ignore next token, fake from inside case statement."
(save-excursion (save-excursion
(let* (;;(dbg "") (let* (;;(dbg "")
sigs-out-d sigs-out-i sigs-out-unk sigs-temp sigs-in) sigs-out-d sigs-out-i sigs-out-unk sigs-temp sigs-in)
(search-forward ")")
(verilog-read-always-signals-recurse nil nil nil) (verilog-read-always-signals-recurse nil nil nil)
(setq sigs-out-i (append sigs-out-i sigs-out-unk) (setq sigs-out-i (append sigs-out-i sigs-out-unk)
sigs-out-unk nil) sigs-out-unk nil)
@ -11731,6 +11783,9 @@ Limitations:
Typedefs must match `verilog-typedef-regexp', which is disabled by default. Typedefs must match `verilog-typedef-regexp', which is disabled by default.
Types are added to declarations if an AUTOLOGIC or
`verilog-auto-wire-type' is set to logic.
Signals matching `verilog-auto-output-ignore-regexp' are not included. Signals matching `verilog-auto-output-ignore-regexp' are not included.
An example (see `verilog-auto-inst' for what else is going on here): An example (see `verilog-auto-inst' for what else is going on here):
@ -11872,6 +11927,9 @@ Limitations:
Typedefs must match `verilog-typedef-regexp', which is disabled by default. Typedefs must match `verilog-typedef-regexp', which is disabled by default.
Types are added to declarations if an AUTOLOGIC or
`verilog-auto-wire-type' is set to logic.
Signals matching `verilog-auto-input-ignore-regexp' are not included. Signals matching `verilog-auto-input-ignore-regexp' are not included.
An example (see `verilog-auto-inst' for what else is going on here): An example (see `verilog-auto-inst' for what else is going on here):
@ -11952,6 +12010,9 @@ Limitations:
Typedefs must match `verilog-typedef-regexp', which is disabled by default. Typedefs must match `verilog-typedef-regexp', which is disabled by default.
Types are added to declarations if an AUTOLOGIC or
`verilog-auto-wire-type' is set to logic.
Signals matching `verilog-auto-inout-ignore-regexp' are not included. Signals matching `verilog-auto-inout-ignore-regexp' are not included.
An example (see `verilog-auto-inst' for what else is going on here): An example (see `verilog-auto-inst' for what else is going on here):
@ -12068,13 +12129,14 @@ same expansion will result from only extracting signals starting with i:
/*AUTOINOUTMODULE(\"ExampMain\",\"^i\")*/ /*AUTOINOUTMODULE(\"ExampMain\",\"^i\")*/
You may also provide an optional second regular expression, in You may also provide an optional third argument regular
which case only signals which have that pin direction and data expression, in which case only signals which have that pin
type will be included. This matches against everything before direction and data type matching that regular expression will be
the signal name in the declaration, for example against included. This matches against everything before the signal name
\"input\" (single bit), \"output logic\" (direction and type) or in the declaration, for example against \"input\" (single bit),
\"output [1:0]\" (direction and implicit type). You also \"output logic\" (direction and type) or \"output
probably want to skip spaces in your regexp. [1:0]\" (direction and implicit type). You also probably want to
skip spaces in your regexp.
For example, the below will result in matching the output \"o\" For example, the below will result in matching the output \"o\"
against the previous example's module: against the previous example's module:
@ -12193,7 +12255,21 @@ You may also provide an optional regular expression, in which case only
signals matching the regular expression will be included. For example the signals matching the regular expression will be included. For example the
same expansion will result from only extracting signals starting with i: same expansion will result from only extracting signals starting with i:
/*AUTOINOUTCOMP(\"ExampMain\",\"^i\")*/" /*AUTOINOUTCOMP(\"ExampMain\",\"^i\")*/
You may also provide an optional third argument regular
expression, in which case only signals which have that pin
direction and data type matching that regular expression will be
included. This matches against everything before the signal name
in the declaration, for example against \"input\" (single bit),
\"output logic\" (direction and type) or \"output
[1:0]\" (direction and implicit type). You also probably want to
skip spaces in your regexp.
For example, the below will result in matching the output \"o\"
against the previous example's module:
/*AUTOINOUTCOMP(\"ExampMain\",\"\",\"^output.*\")*/"
(verilog-auto-inout-module t nil)) (verilog-auto-inout-module t nil))
(defun verilog-auto-inout-in () (defun verilog-auto-inout-in ()
@ -12244,7 +12320,7 @@ You may also provide an optional regular expression, in which case only
signals matching the regular expression will be included. For example the signals matching the regular expression will be included. For example the
same expansion will result from only extracting signals starting with i: same expansion will result from only extracting signals starting with i:
/*AUTOINOUTCOMP(\"ExampMain\",\"^i\")*/" /*AUTOINOUTIN(\"ExampMain\",\"^i\")*/"
(verilog-auto-inout-module nil t)) (verilog-auto-inout-module nil t))
(defun verilog-auto-inout-param () (defun verilog-auto-inout-param ()
@ -12516,7 +12592,9 @@ See `verilog-auto-insert-lisp' for examples."
(defun verilog-auto-sense-sigs (moddecls presense-sigs) (defun verilog-auto-sense-sigs (moddecls presense-sigs)
"Return list of signals for current AUTOSENSE block." "Return list of signals for current AUTOSENSE block."
(let* ((sigss (verilog-read-always-signals)) (let* ((sigss (save-excursion
(search-forward ")")
(verilog-read-always-signals)))
(sig-list (verilog-signals-not-params (sig-list (verilog-signals-not-params
(verilog-signals-not-in (verilog-alw-get-inputs sigss) (verilog-signals-not-in (verilog-alw-get-inputs sigss)
(append (and (not verilog-auto-sense-include-inputs) (append (and (not verilog-auto-sense-include-inputs)
@ -12706,11 +12784,12 @@ Typing \\[verilog-auto] will make this into:
(save-excursion (save-excursion
(verilog-read-signals (verilog-read-signals
(save-excursion (save-excursion
(verilog-re-search-backward-quick "\\(@\\|\\<begin\\>\\|\\<if\\>\\|\\<case\\>\\)" nil t) (verilog-re-search-backward-quick
"\\(@\\|\\<\\(begin\\|if\\|case\\|always\\(_latch\\|_ff\\|_comb\\)?\\)\\>\\)" nil t)
(point)) (point))
(point))))) (point)))))
(save-excursion (save-excursion
(verilog-re-search-backward-quick "@" nil t) (verilog-re-search-backward-quick "\\(@\\|\\<\\(always\\(_latch\\|_ff\\|_comb\\)?\\)\\>\\)" nil t)
(setq sigss (verilog-read-always-signals))) (setq sigss (verilog-read-always-signals)))
(setq dly-list (verilog-alw-get-outputs-delayed sigss)) (setq dly-list (verilog-alw-get-outputs-delayed sigss))
(setq sig-list (verilog-signals-not-in (append (setq sig-list (verilog-signals-not-in (append