diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 513fbb23fe..0b8a8d83e3 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -3391,14 +3391,24 @@ vc-prepare-patch as the default subject for the message (and it will be prompted for when called interactively). Otherwise a separate message will be composed for each revision, with SUBJECT derived from the -invidividual commits. - -When invoked interactively in a Log View buffer with marked -revisions, those revisions will be used." +invidividual commits. When invoked with a numerical prefix +argument, the last N revisions will be used. When invoked +interactively in a Log View buffer with marked revisions, those +revisions will be used." (interactive (let ((revs (vc-read-multiple-revisions "Revisions: " nil nil nil - (or (and-let* ((revs (log-view-get-marked))) + (or (and-let* ((arg current-prefix-arg) + (fs (vc-deduce-fileset t))) + (cl-loop with file = (caadr fs) + repeat (prefix-numeric-value arg) + for rev = (vc-working-revision file) + then (vc-call-backend + (car fs) 'previous-revision + file rev) + when rev collect it into revs + finally return (mapconcat #'identity revs ","))) + (and-let* ((revs (log-view-get-marked))) (mapconcat #'identity revs ",")) (and-let* ((file (buffer-file-name))) (vc-working-revision file)))))