branch: elpa/magit
commit bb11a56df421607bb52e54af6dd6801e03e4cdaf
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-{diff,log}{,-refresh}: Pick up all buffer arguments
When the value of a diff or log menu was being initialized from the
arguments in the current buffer and the diff/log was already limited
to a set of files, then all other arguments were discarded.
The value of the prefix's `value' slot is a flat list of arguments
and in that list the "--" argument is represented as a list beginning
with "--", followed by the files.
This is different from `magit-{diff,log}-arguments', which returns
(ARGS FILES), which is probably how this bug came to be (but note that
the order is also different and that FILES is just a list of files,
without a "--" at its head.
Closes #5304.
---
CHANGELOG | 4 ++++
lisp/magit-diff.el | 4 ++--
lisp/magit-log.el | 4 ++--
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 3526ff73e25..e4a3a3e5e81 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -84,6 +84,10 @@ Bug fixes:
exists in Emacs since 29.1, so this will only help users stuck
on Emacs 28. #5300
+- When the value of a diff or log menu was being initialized from the
+ arguments in the current buffer and the diff/log was already limited
+ to a set of files, then all other arguments were discarded. #5304
+
* v4.2.0 2025-01-01
- At least Git 2.25.0 is required now. 033a0c0cdc
diff --git a/lisp/magit-diff.el b/lisp/magit-diff.el
index a573c7f6c4c..cd1dd9c19b9 100644
--- a/lisp/magit-diff.el
+++ b/lisp/magit-diff.el
@@ -817,12 +817,12 @@ and `:slant'."
(when-let (((not (eq transient-current-command 'magit-dispatch)))
(file (magit-file-relative-name)))
(setq files (list file)))
- (oset obj value (if files `(("--" ,@files) ,args) args))))
+ (oset obj value (if files `(("--" ,@files) ,@args) args))))
(cl-defmethod transient-init-value ((obj magit-diff-refresh-prefix))
(oset obj value (if magit-buffer-diff-files
`(("--" ,@magit-buffer-diff-files)
- ,magit-buffer-diff-args)
+ ,@magit-buffer-diff-args)
magit-buffer-diff-args)))
(cl-defmethod transient-set-value ((obj magit-diff-prefix))
diff --git a/lisp/magit-log.el b/lisp/magit-log.el
index 1113697ef44..37a4f04c9e0 100644
--- a/lisp/magit-log.el
+++ b/lisp/magit-log.el
@@ -376,12 +376,12 @@ commits before and half after."
(when-let (((not (eq transient-current-command 'magit-dispatch)))
(file (magit-file-relative-name)))
(setq files (list file)))
- (oset obj value (if files `(("--" ,@files) ,args) args))))
+ (oset obj value (if files `(("--" ,@files) ,@args) args))))
(cl-defmethod transient-init-value ((obj magit-log-refresh-prefix))
(oset obj value (if magit-buffer-log-files
`(("--" ,@magit-buffer-log-files)
- ,magit-buffer-log-args)
+ ,@magit-buffer-log-args)
magit-buffer-log-args)))
(cl-defmethod transient-set-value ((obj magit-log-prefix))