Function: opascal-else-start

opascal-else-start is a byte-compiled function defined in opascal.el.gz.

Signature

(opascal-else-start FROM-ELSE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/opascal.el.gz
(defun opascal-else-start (from-else)
  ;; Returns the token of the if or case statement.
  (let ((token from-else)
        (semicolon-count 0))
    (catch 'done
      (opascal--scan-non-whitespace-backward token nil
        ;; Skip over nested groups.
        ('close-group (setq token (opascal-group-start token)))

        ;; Skip over any nested blocks.
        ((opascal--in opascal-end-block-statements)
         (setq token (opascal-block-start token)))

        ('semicolon
         ;; Semicolon means we are looking for an enclosing if, unless we
         ;; are in a case statement. Keep counts of the semicolons and decide
         ;; later.
         (setq semicolon-count (1+ semicolon-count)))

        ((and 'if (guard (= semicolon-count 0)))
         ;; We only can match an if when there have been no intervening
         ;; semicolons.
         (throw 'done token))

        ('case
         ;; We have hit a case statement start.
         (throw 'done token)))
      ;; No if or case statement found.
      nil)))