Function: verilog-at-constraint-p

verilog-at-constraint-p is a byte-compiled function defined in verilog-mode.el.gz.

Signature

(verilog-at-constraint-p)

Documentation

If at the { of a constraint or coverpoint definition, return true.

Also move point to constraint.

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/verilog-mode.el.gz
(defun verilog-at-constraint-p ()
  "If at the { of a constraint or coverpoint definition, return true.
Also move point to constraint."
  (if (save-excursion
	(let ((p (point)))
          (and
           (equal (char-after) ?\{)
           (not (verilog-at-streaming-op-p))
           (ignore-errors (forward-list))
           (progn (backward-char 1)
                  (verilog-backward-ws&directives)
                  (and
                   (or (equal (char-before) ?\{)  ; empty case
                       (equal (char-before) ?\;)
                       (equal (char-before) ?\}))
                   ;; skip what looks like bus repetition operator {#{
                   (not (string-match "^{\\s-*[()0-9a-zA-Z_\\]*\\s-*{"
                                      (buffer-substring p (point)))))))))
      (progn
        (let ( (pt (point)) (pass 0))
          (verilog-backward-ws&directives)
          (verilog-backward-token)
          (if (looking-at (concat "\\<constraint\\|coverpoint\\|cross\\|with\\>\\|" verilog-in-constraint-re))
              (progn (setq pass 1)
                     (if (looking-at "\\<with\\>")
                         (progn (verilog-backward-ws&directives)
                                (beginning-of-line)  ; 1
                                (verilog-forward-ws&directives)
                                1 )
                       (verilog-beg-of-statement)
                       ))
            ;; if first word token not keyword, it maybe the instance name
            ;;   check next word token
            (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\S-+")
                (progn (verilog-beg-of-statement)
                       (if (and
                            (not (string-match verilog-named-block-re (buffer-substring pt (point)))) ;; Abort if 'begin' keyword is found
                            (looking-at (concat "\\<\\(constraint\\|"
                                               "\\(?:\\w+\\s-*:\\s-*\\)?\\(coverpoint\\|cross\\)"
                                               "\\|with\\)\\>\\|" verilog-in-constraint-re)))
                           (setq pass 1)))))
          (if (eq pass 0)
              (progn (goto-char pt) nil) 1)))
    ;; not
    nil))