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)))))