Function: vhdl-template-component-inst
vhdl-template-component-inst is an interactive and byte-compiled
function defined in vhdl-mode.el.gz.
Signature
(vhdl-template-component-inst)
Documentation
Insert a component instantiation statement.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-template-component-inst ()
"Insert a component instantiation statement."
(interactive)
(let ((margin (current-indentation))
(start (point))
unit position)
(when (vhdl-template-field "instance label" nil t start (point))
(insert ": ")
(if (not (vhdl-use-direct-instantiation))
(vhdl-template-field "component name")
;; direct instantiation
(setq unit (vhdl-template-field
"[COMPONENT | ENTITY | CONFIGURATION]" " " t))
(setq unit (upcase (or unit "")))
(cond ((equal unit "ENTITY")
(let ((begin (point)))
(vhdl-template-field "library name" "." t begin (point) nil
(vhdl-work-library))
(vhdl-template-field "entity name" "(")
(if (vhdl-template-field "[architecture name]" nil t)
(insert ")")
(delete-char -1))))
((equal unit "CONFIGURATION")
(vhdl-template-field "library name" "." nil nil nil nil
(vhdl-work-library))
(vhdl-template-field "configuration name"))
(t (vhdl-template-field "component name"))))
(insert "\n")
(indent-to (+ margin vhdl-basic-offset))
(setq position (point))
(vhdl-insert-keyword "GENERIC ")
(when (vhdl-template-map position t t)
(insert "\n")
(indent-to (+ margin vhdl-basic-offset)))
(setq position (point))
(vhdl-insert-keyword "PORT ")
(unless (vhdl-template-map position t t)
(delete-region (line-beginning-position) (point))
(delete-char -1))
(insert ";"))))