Function: opascal-stmt-line-indent-of
opascal-stmt-line-indent-of is a byte-compiled function defined in
opascal.el.gz.
Signature
(opascal-stmt-line-indent-of FROM-TOKEN &optional OFFSET)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/opascal.el.gz
(defun opascal-stmt-line-indent-of (from-token &optional offset)
;; Like `opascal-line-indent-of' except is also stops on a use clause, and
;; colons that precede statements (i.e. case labels).
(let ((token (opascal-previous-token from-token))
(last-token from-token)
(kind nil))
(catch 'done
;; FIXME: Can't use opascal--scan-non-whitespace-backward here, because
;; we do need to pay attention to `newline'!
(while token
(setq kind (opascal-token-kind token))
(cond
((and (eq 'colon kind)
(memq (opascal-token-kind last-token)
`(,@opascal-block-statements
,@opascal-expr-statements)))
;; We hit a label followed by a statement. Indent to the statement.
(throw 'done nil))
;; Skip over ()/[] groups.
((eq 'close-group kind) (setq token (opascal-group-start token)))
((memq kind `(newline open-group ,@opascal-use-clauses))
;; Stop at the beginning of the line, an open group, or a use clause
(throw 'done nil)))
(unless (memq kind opascal-whitespace) (setq last-token token))
(setq token (opascal-previous-token token))))
(opascal-indent-of last-token offset)))