Function: simula-backward-up-level
simula-backward-up-level is an interactive and byte-compiled function
defined in simula.el.gz.
Signature
(simula-backward-up-level COUNT)
Documentation
Move backward up COUNT block levels.
If COUNT is negative, move forward up block level instead.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/simula.el.gz
(defun simula-backward-up-level (count)
"Move backward up COUNT block levels.
If COUNT is negative, move forward up block level instead."
(interactive "p")
(let ((origin (point))
(case-fold-search t))
(condition-case ()
(if (> count 0)
(while (> count 0)
(re-search-backward "\\<begin\\>\\|\\<end\\>")
(if (not (simula-context))
(setq count (if (memq (following-char) '(?b ?B))
(1- count)
(1+ count)))))
(while (< count 0)
(re-search-forward "\\<begin\\>\\|\\<end\\>")
(backward-word-strictly 1)
(if (not (simula-context))
(setq count (if (memq (following-char) '(?e ?E))
(1+ count)
(1- count))))
(backward-word-strictly -1)))
;; If block level not found, jump back to origin and signal an error
(error (progn
(goto-char origin)
(error "No higher block level")))
(quit (progn
(goto-char origin)
(signal 'quit nil))))))