Function: vhdl-begin-p
vhdl-begin-p is a byte-compiled function defined in vhdl-mode.el.gz.
Signature
(vhdl-begin-p &optional LIM)
Documentation
Return t if we are looking at a real "begin" keyword.
Assumes that the caller will make sure that we are looking at vhdl-begin-fwd-re, and are not inside a literal, and that we are not in the middle of an identifier that just happens to contain a "begin" keyword.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/vhdl-mode.el.gz
(defun vhdl-begin-p (&optional lim)
"Return t if we are looking at a real \"begin\" keyword.
Assumes that the caller will make sure that we are looking at
vhdl-begin-fwd-re, and are not inside a literal, and that we are not in
the middle of an identifier that just happens to contain a \"begin\"
keyword."
(cond
;; "[architecture|case|configuration|context|entity|package|
;; procedure|function] ... is":
((and (looking-at "i")
(save-excursion
;; Skip backward over first sexp (needed to skip over a
;; procedure interface list, and is harmless in other
;; situations). Note that we need "return" in the
;; following search list so that we don't run into
;; semicolons in the function interface list.
(backward-sexp)
(skip-chars-forward "(")
(let (foundp)
(while (and (not foundp)
(re-search-backward
";\\|\\b\\(architecture\\|case\\|configuration\\|context\\|entity\\|package\\|procedure\\|return\\|is\\|begin\\|process\\|procedural\\|block\\)\\b[^_]"
lim 'move))
(if (or (= (preceding-char) ?_)
(vhdl-in-literal))
(backward-char)
(setq foundp t))))
(and (/= (following-char) ?\;)
(not (looking-at "is\\|begin\\|process\\|procedural\\|block")))))
t)
;; "begin", "then", "use":
((looking-at "be\\|t\\|use")
t)
;; "else":
((and (looking-at "e")
;; make sure that the "else" isn't inside a
;; conditional signal assignment.
(save-excursion
(vhdl-re-search-backward ";\\|\\bwhen\\b[^_]" lim 'move)
(or (eq (following-char) ?\;)
(eq (point) lim))))
t)
;; "block", "generate", "loop", "process", "procedural",
;; "units", "record", "protected body":
((and (looking-at "block\\|generate\\|loop\\|process\\|procedural\\|protected\\(\\s-+body\\)?\\|units\\|record")
(save-excursion
(backward-sexp)
(not (looking-at "end\\s-+\\w"))))
t)
;; "component":
((and (looking-at "c")
(save-excursion
(backward-sexp)
(not (looking-at "end\\s-+\\w")))
;; look out for the dreaded entity class in an attribute
(save-excursion
(vhdl-backward-syntactic-ws lim)
(/= (preceding-char) ?:)))
t)
;; "for" (inside configuration declaration):
((and (looking-at "f")
(save-excursion
(backward-sexp)
(not (looking-at "end\\s-+\\w")))
(vhdl-has-syntax 'configuration))
t)
))