Function: verilog-cparenexp-indent-level
verilog-cparenexp-indent-level is a byte-compiled function defined in
verilog-mode.el.gz.
Signature
(verilog-cparenexp-indent-level)
Documentation
Return indent level for current line inside a parenthetical expression.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/verilog-mode.el.gz
(defun verilog-cparenexp-indent-level ()
"Return indent level for current line inside a parenthetical expression."
(let ((start-pos (point))
(close-par (looking-at "[)}]"))
pos pos-arg-paren)
(save-excursion
(verilog-backward-up-list 1)
(if verilog-indent-lists
(progn
(forward-char 1)
(skip-chars-forward " \t")
(current-column))
;; Indentation with `verilog-indent-lists' set to nil
(verilog-beg-of-statement-1)
(when (looking-at "\\<\\(function\\|task\\)\\>")
(verilog-beg-of-statement)) ; find virtual/protected/static
(cond (;; 1) Closing ); of a module/function/task
(and close-par
(save-excursion
(verilog-beg-of-statement-1)
(or (looking-at verilog-complete-re)
(progn (beginning-of-line)
(not (looking-at verilog-assignment-operation-re))))))
(current-column))
(;; 2) if (condition)
(looking-at "(")
(forward-char 1)
(skip-chars-forward " \t\f" (point-at-eol))
(current-column))
(;; 3) Inside a module/defun param list or function/task argument list
(or (looking-at verilog-defun-level-re)
(looking-at "\\(\\<\\(virtual\\|protected\\|static\\)\\>\\s-+\\)?\\(\\<task\\>\\|\\<function\\>\\)"))
(setq pos-arg-paren (save-excursion
(goto-char start-pos)
(verilog-backward-up-list 1)
(forward-char)
(skip-chars-forward " \t")
(when (not (eolp))
(current-column))))
(or pos-arg-paren
;; arg in next line after (
(+ (current-column) verilog-indent-level)))
(;; 4) Assignment operation
(save-excursion
(beginning-of-line)
(and (looking-at verilog-assignment-operation-re)
(save-excursion
(goto-char (match-beginning 2))
(not (verilog-within-string)))
(progn (verilog-forward-syntactic-ws)
(not (looking-at verilog-complete-re)))))
(goto-char (match-end 2))
(skip-chars-forward " \t\f" (point-at-eol))
(skip-chars-forward "{(" (1+ (point)))
(skip-chars-forward " \t\f" (point-at-eol))
(current-column))
(;; 5) Typedef enum declaration
(verilog-at-enum-decl-p)
(verilog-re-search-forward "{" (verilog-pos-at-end-of-statement) t)
(if (> (verilog-pos-at-forward-syntactic-ws) (point-at-eol))
(+ (verilog-col-at-beg-of-statement) verilog-indent-level)
(verilog-col-at-forward-syntactic-ws)))
(;; 6) Long reporting strings (e.g. $display or $sformatf inside `uvm_info)
(save-excursion
(goto-char start-pos)
(verilog-backward-up-list 1)
(setq pos (1+ (point)))
(backward-word)
(or (looking-at (concat "\\$" verilog-identifier-re)) ; System function/task
(looking-at verilog-uvm-statement-re))) ; `uvm_* macros
(goto-char pos)
(current-column))
(t ;; 7) Default
(+ (current-column) verilog-indent-level)))))))