Function: calc-do-grab-region
calc-do-grab-region is an autoloaded and byte-compiled function
defined in calc-yank.el.gz.
Signature
(calc-do-grab-region TOP BOT ARG)
Source Code
;; Defined in /usr/src/emacs/lisp/calc/calc-yank.el.gz
(defun calc-do-grab-region (top bot arg)
(when (memq major-mode '(calc-mode calc-trail-mode))
(error "This command works only in a regular text buffer"))
(let* ((from-buffer (current-buffer))
(calc-was-started (get-buffer-window "*Calculator*"))
(single nil)
data vals) ;; pos
(if arg
(if (consp arg)
(setq single t)
(setq arg (prefix-numeric-value arg))
(if (= arg 0)
(setq top (line-beginning-position)
bot (line-end-position))
(save-excursion
(setq top (point))
(forward-line arg)
(if (> arg 0)
(setq bot (point))
(setq bot top
top (point)))))))
(setq data (buffer-substring top bot))
(calc)
(if single
(setq vals (math-read-expr data))
(setq vals (math-read-expr (concat "[" data "]")))
(and (eq (car-safe vals) 'vec)
(= (length vals) 2)
(eq (car-safe (nth 1 vals)) 'vec)
(setq vals (nth 1 vals))))
(if (eq (car-safe vals) 'error)
(progn
(if calc-was-started
(pop-to-buffer from-buffer)
(calc-quit t)
(switch-to-buffer from-buffer))
(goto-char top)
(forward-char (+ (nth 1 vals) (if single 0 1)))
(error (nth 2 vals))))
(calc-slow-wrapper
(calc-enter-result 0 "grab" vals))))