Function: term-insert-lines

term-insert-lines is a byte-compiled function defined in term.el.gz.

Signature

(term-insert-lines LINES)

Source Code

;; Defined in /usr/src/emacs/lisp/term.el.gz
(defun term-insert-lines (lines)
  (let ((start (point))
	(start-deleted)
	(save-current-column term-current-column)
	(save-start-line-column term-start-line-column)
	(save-current-row (term-current-row)))
    ;; Inserting lines should take into account the scroll region.
    ;; The `term-scroll-end' line is part of the scrolling region, so
    ;; we need to go one line past it in order to ensure correct
    ;; scrolling.
    (if (< save-current-row term-scroll-start)
	;; If point is before scroll start,
	(progn
	  (setq lines (- lines (- term-scroll-start save-current-row)))
	  (term-down (- term-scroll-start save-current-row))
	  (setq start (point)))
      ;; The number of inserted lines shouldn't exceed the scroll region end.
      (when (> (+ save-current-row lines) (1+ term-scroll-end))
	(setq lines (- lines (- (+ save-current-row lines)(1+ term-scroll-end)))))
      (term-down (- (1+ term-scroll-end) save-current-row lines)))
    (setq start-deleted (point))
    (term-down lines)
    (delete-region start-deleted (point))
    (goto-char start)
    (setq term-current-column save-current-column)
    (setq term-start-line-column save-start-line-column)
    (setq term-current-row save-current-row)
    (term-insert-char ?\n lines)
    (goto-char start)))