Function: calc-select-previous
calc-select-previous is an autoloaded, interactive and byte-compiled
function defined in calc-sel.el.gz.
Signature
(calc-select-previous NUM)
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-sel.el.gz
(defun calc-select-previous (num)
(interactive "p")
(if (< num 0)
(calc-select-next (- num))
(calc-wrapper
(calc-prepare-selection)
(let* ((entry calc-selection-cache-entry)
(sel (nth 2 entry)))
(if sel
(progn
(while (>= (setq num (1- num)) 0)
(let* ((parent (calc-find-parent-formula (car entry) sel))
(p (cdr-safe parent))
(prev nil)
op)
(if (eq (car-safe parent) 'intv) (setq p (cdr p)))
(while (and (not (eq (car p) sel))
(setq prev (car p)
p (cdr p))))
(if prev
(setq sel (or (and calc-assoc-selections
(setq op (assq (car-safe prev)
calc-assoc-ops))
(memq (car parent) (nth 1 op))
(nth 2 prev))
prev))
(if (and calc-assoc-selections
(setq op (assq (car-safe parent) calc-assoc-ops))
(consp (setq p (calc-find-parent-formula
(car entry) parent)))
(eq (nth 2 p) parent)
(memq (car p) (nth 2 op)))
(setq sel (nth 1 p))
(error "No \"previous\" sub-formula")))))
(calc-change-current-selection sel))
(if (Math-primp (car entry))
(calc-change-current-selection (car entry))
(let ((len (if (and calc-assoc-selections
(assq (car (car entry)) calc-assoc-ops))
(let (calc-fnp-op (calc-fnp-num 0))
(calc-find-nth-part-rec (car entry))
(- 1 calc-fnp-num))
(length (car entry)))))
(calc-select-part (- len num)))))))))