Function: opascal-block-start
opascal-block-start is a byte-compiled function defined in
opascal.el.gz.
Signature
(opascal-block-start FROM-TOKEN &optional STOP-ON-CLASS)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/opascal.el.gz
(defun opascal-block-start (from-token &optional stop-on-class)
;; Returns the token that denotes the start of the block.
(let ((token from-token)
(last-token nil))
(catch 'done
(opascal--scan-non-whitespace-backward token last-token
;; Skip over nested blocks.
((opascal--in opascal-end-block-statements)
(setq token (opascal-block-start token)))
;; Case block start found.
('case
(throw 'done
;; As a special case, when a "case" block appears
;; within a record declaration (to denote a variant
;; part), the record declaration should be considered
;; the enclosing block.
(let ((enclosing-token
(opascal-block-start token
'stop-on-class)))
(if (eq 'record
(opascal-token-kind enclosing-token))
(if stop-on-class
enclosing-token
(opascal-previous-token enclosing-token))
token))))
;; Regular block start found.
((opascal--in opascal-block-statements)
(throw 'done token))
;; A class/record start also begins a block.
((guard (opascal-composite-type-start token last-token))
(throw 'done (if stop-on-class last-token token)))
)
;; Start not found.
nil)))