Function: vhdl-template-type
vhdl-template-type is an interactive and byte-compiled function
defined in vhdl-mode.el.gz.
Signature
(vhdl-template-type)
Documentation
Insert a type declaration.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-template-type ()
"Insert a type declaration."
(interactive)
(let ((start (point))
name mid-pos end-pos)
(vhdl-insert-keyword "TYPE ")
(when (setq name (vhdl-template-field "name" nil t start (point)))
(vhdl-insert-keyword " IS ")
(let ((definition
(upcase
(or (vhdl-template-field
"[scalar type | ARRAY | RECORD | ACCESS | FILE | ENUM]" nil t)
""))))
(cond ((equal definition "")
(delete-char -4)
(insert ";"))
((equal definition "ARRAY")
(delete-region (point) (progn (forward-word-strictly -1)
(point)))
(vhdl-template-array 'type t))
((equal definition "RECORD")
(setq mid-pos (point-marker))
(delete-region (point) (progn (forward-word-strictly -1)
(point)))
(vhdl-template-record 'type name t))
((equal definition "ACCESS")
(insert " ")
(vhdl-template-field "type" ";"))
((equal definition "FILE")
(vhdl-insert-keyword " OF ")
(vhdl-template-field "type" ";"))
((equal definition "ENUM")
(kill-word -1)
(insert "(")
(setq end-pos (point-marker))
(insert ");"))
(t (insert ";")))
(when mid-pos
(setq end-pos (point-marker))
(goto-char mid-pos)
(end-of-line))
(vhdl-comment-insert-inline)
(when end-pos (goto-char end-pos))))))