Function: electric-verilog-terminate-line
electric-verilog-terminate-line is an interactive and byte-compiled
function defined in verilog-mode.el.gz.
Signature
(electric-verilog-terminate-line &optional ARG)
Documentation
Terminate line and indent next line.
With optional ARG, remove existing end of line comments.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/verilog-mode.el.gz
;;; Electric functions:
;;
(defun electric-verilog-terminate-line (&optional arg)
"Terminate line and indent next line.
With optional ARG, remove existing end of line comments."
(interactive)
;; before that see if we are in a comment
(let ((state (save-excursion (verilog-syntax-ppss))))
(cond
((nth 7 state) ; Inside // comment
(if (eolp)
(progn
(delete-horizontal-space)
(newline))
(progn
(newline)
(insert "// ")
(beginning-of-line)))
(verilog-indent-line))
((nth 4 state) ; Inside any comment (hence /**/)
(newline)
(verilog-more-comment))
((eolp)
;; First, check if current line should be indented
(if (save-excursion
(delete-horizontal-space)
(beginning-of-line)
(skip-chars-forward " \t")
(if (looking-at verilog-auto-end-comment-lines-re)
(let ((indent-str (verilog-indent-line)))
;; Maybe we should set some endcomments
(if verilog-auto-endcomments
(verilog-set-auto-endcomments indent-str arg))
(end-of-line)
(delete-horizontal-space)
(if arg
()
(newline))
nil)
(progn
(end-of-line)
(delete-horizontal-space)
't)))
;; see if we should line up assignments
(progn
(if (or (eq 'all verilog-auto-lineup)
(eq 'assignments verilog-auto-lineup))
(verilog-pretty-expr :quiet))
(newline))
(forward-line 1))
;; Indent next line
(if verilog-auto-indent-on-newline
(verilog-indent-line)))
(t
(newline)))))