Function: vhdl-template-port-list
vhdl-template-port-list is a byte-compiled function defined in
vhdl-mode.el.gz.
Signature
(vhdl-template-port-list OPTIONAL)
Documentation
Read from user a port spec argument list.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-template-port-list (optional)
"Read from user a port spec argument list."
(let ((start (point))
margin vhdl-ports object)
(vhdl-insert-keyword "PORT (")
(setq margin (current-column))
(unless vhdl-argument-list-indent
(let ((position (point)))
(back-to-indentation)
(setq margin (+ (current-column) vhdl-basic-offset))
(goto-char position)
(insert "\n")
(indent-to margin)))
(when (vhdl-standard-p 'ams)
(setq object (vhdl-template-field "[SIGNAL | TERMINAL | QUANTITY]"
" " t)))
(setq vhdl-ports (vhdl-template-field
(concat (and optional "[") "names" (and optional "]"))
nil optional))
(if (not vhdl-ports)
(if optional
(progn (vhdl-line-kill-entire) (end-of-line -0)
(unless vhdl-argument-list-indent
(vhdl-line-kill-entire) (end-of-line -0)))
(vhdl-template-undo start (point))
nil)
(insert " : ")
(let (semicolon-pos end-pos)
(while vhdl-ports
(cond ((or (null object) (equal "SIGNAL" (upcase object)))
(vhdl-template-field "IN | OUT | INOUT" " "))
((equal "QUANTITY" (upcase object))
(vhdl-template-field "[IN | OUT]" " " t)))
(vhdl-template-field
(if (and object (equal "TERMINAL" (upcase object)))
"nature" "type"))
(setq semicolon-pos (point))
(insert ";")
(vhdl-comment-insert-inline)
(setq end-pos (point))
(insert "\n")
(indent-to margin)
(when (vhdl-standard-p 'ams)
(setq object (vhdl-template-field "[SIGNAL | TERMINAL | QUANTITY]"
" " t)))
(setq vhdl-ports (vhdl-template-field "[names]" " : " t)))
(delete-region end-pos (point))
(goto-char semicolon-pos)
(insert ")")
(end-of-line)
(when vhdl-auto-align (vhdl-align-region-groups start end-pos 1))
t))))