duplicate-line: fix optional argument and add test (bug#46621)

The test assumes that the current semantics are intended and desired,
which may or may not be true, but it's better than not having any at
all.

* lisp/misc.el (duplicate-line): Don't crash if called with no argument.
* test/lisp/misc-tests.el (misc--duplicate-line): New test.
This commit is contained in:
Mattias Engdegård 2022-06-22 15:55:19 +02:00
parent 55c2102560
commit 47374d4416
2 changed files with 18 additions and 0 deletions

View file

@ -69,6 +69,8 @@ Also see the `duplicate-line' command."
Interactively, N is the prefix numeric argument, and defaults to 1.
Also see the `copy-from-above-command' command."
(interactive "p")
(unless n
(setq n 1))
(let ((line (buffer-substring (line-beginning-position) (line-end-position))))
(save-excursion
(forward-line 1)

View file

@ -80,5 +80,21 @@
(backward-to-word 3)
(should (equal (point) 1))))
(ert-deftest misc--duplicate-line ()
;; Duplicate a line (twice).
(with-temp-buffer
(insert "abc\ndefg\nh\n")
(goto-char 7)
(duplicate-line 2)
(should (equal (buffer-string) "abc\ndefg\ndefg\ndefg\nh\n"))
(should (equal (point) 7)))
;; Duplicate a non-terminated line.
(with-temp-buffer
(insert "abc")
(goto-char 2)
(duplicate-line)
(should (equal (buffer-string) "abc\nabc\n"))
(should (equal (point) 2))))
(provide 'misc-tests)
;;; misc-tests.el ends here