И это всё МОЁ

Как сделать, чтобы функция, которая дублирует строку, не заносила её в буфер обмена (в буфере должно остаться то, что там было)?


(defun duplicate-line (&optional n)
"Дублировать текущую строку или область, если активна.
С аргументом N, сделает N копий.
Передать аргумент можно посредством C-u `аргумент'
С отрицательным значением N будет закомментирована исходная строка/область and use the absolute value."
(interactive "*p";)
(let ((use-region (use-region-p)))
(save-excursion
(let ((text (if use-region ;Get region if active, otherwise line
(buffer-substring (region-beginning) (region-end))
(prog1 (thing-at-point 'line)
(end-of-line)
(if (< 0 (forward-line 1)) ;Go to beginning of next line, or make a new one
(newline))))))
(dotimes (i (abs (or n 1))) ;Insert N times, or once if not specified
(insert text))))
(if use-region nil ;Only if we're working with a line (not a region)
(let ((pos (- (point) (line-beginning-position)))) ;Save column
(if (> 0 n) ;Comment out original with negative arg
(comment-region (line-beginning-position) (line-end-position)))
(forward-line 1)
(forward-char pos)))))










 ,