Function: extract-rectangle-line
extract-rectangle-line is a byte-compiled function defined in
rect.el.gz.
Signature
(extract-rectangle-line STARTCOL ENDCOL LINES)
Source Code
;; Defined in /usr/src/emacs/lisp/rect.el.gz
;; This is actually the only function that needs to do complicated
;; stuff like what's happening in `operate-on-rectangle', because the
;; buffer might be read-only.
(defun extract-rectangle-line (startcol endcol lines)
(let (start end begextra endextra line)
(move-to-column startcol)
(setq start (point)
begextra (- (current-column) startcol))
(move-to-column endcol)
(setq end (point)
endextra (- endcol (current-column)))
(setq line (buffer-substring start (point)))
(if (< begextra 0)
(setq endextra (+ endextra begextra)
begextra 0))
(if (< endextra 0)
(setq endextra 0))
(goto-char start)
(while (search-forward "\t" end t)
(let ((width (- (current-column)
(save-excursion (forward-char -1)
(current-column)))))
(setq line (concat (substring line 0 (- (point) end 1))
(spaces-string width)
(substring line (+ (length line)
(- (point) end)))))))
(if (or (> begextra 0) (> endextra 0))
(setq line (concat (spaces-string begextra)
line
(spaces-string endextra))))
(setcdr lines (cons line (cdr lines)))))