1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs

This commit is contained in:
Eli Zaretskii 2025-08-30 13:46:34 +03:00
commit 7efaa4657a
7 changed files with 241 additions and 2 deletions

View file

@ -3718,7 +3718,7 @@ for which LSP on-type-formatting should be requested."
(let ((case-fold-search nil))
(and (search-forward parlabel (line-end-position) t)
(list (match-beginning 0) (match-end 0))))
(mapcar #'1+ (append parlabel nil)))))
(list (aref parlabel 0) (aref parlabel 1)))))
(if (and beg end)
(add-face-text-property
beg end

View file

@ -952,6 +952,8 @@ In the latter case, VC mode is deactivated for this buffer."
"O" #'vc-log-outgoing
"M L" #'vc-log-mergebase
"M D" #'vc-diff-mergebase
"B =" #'vc-diff-outgoing-base
"B D" #'vc-root-diff-outgoing-base
"m" #'vc-merge
"r" #'vc-retrieve-tag
"s" #'vc-create-tag

View file

@ -2575,6 +2575,9 @@ When unspecified REMOTE-LOCATION is the place \\[vc-push] would push to.
When called interactively with a prefix argument, prompt for REMOTE-LOCATION.
In some version control systems REMOTE-LOCATION can be a remote branch name.
This command is like `vc-root-diff-outgoing-base' except that it does
not include uncommitted changes.
See `vc-use-incoming-outgoing-prefixes' regarding giving this command a
global binding."
(interactive (list (vc--maybe-read-remote-location)))
@ -2589,6 +2592,9 @@ When called interactively with a prefix argument, prompt for REMOTE-LOCATION.
In some version control systems REMOTE-LOCATION can be a remote branch name.
When called from Lisp optional argument FILESET overrides the VC fileset.
This command is like `vc-diff-outgoing-base' except that it does not
include uncommitted changes.
See `vc-use-incoming-outgoing-prefixes' regarding giving this command a
global binding."
;; For this command, for distributed VCS, we want to ignore
@ -2629,6 +2635,71 @@ global binding."
(car fileset))
(called-interactively-p 'interactive))))
;; For the following two commands, the default meaning for
;; REMOTE-LOCATION may become dependent on whether we are on a
;; shorter-lived or longer-lived ("trunk") branch. If we are on the
;; trunk then it will always be the place `vc-push' would push to. If
;; we are on a shorter-lived branch, it may instead become the remote
;; trunk branch from which the shorter-lived branch was branched. That
;; way you can use these commands to get a summary of all unmerged work
;; outstanding on the short-lived branch.
;;
;; The obstacle to doing this is that VC lacks any distinction between
;; shorter-lived and trunk branches. But we all work with both of
;; these, for almost any VCS workflow. E.g. modern workflows which
;; eschew traditional feature branches still have a long-lived trunk
;; plus shorter-lived local branches for merge requests or patch series.
;; --spwhitton
;;;###autoload
(defun vc-root-diff-outgoing-base (&optional remote-location)
"Report diff of all changes since the merge base with REMOTE-LOCATION.
The merge base with REMOTE-LOCATION means the common ancestor of the
working revision and REMOTE-LOCATION.
Uncommitted changes are included in the diff.
When unspecified REMOTE-LOCATION is the place \\[vc-push] would push to.
This default meaning for REMOTE-LOCATION may change in a future release
of Emacs.
When called interactively with a prefix argument, prompt for
REMOTE-LOCATION. In some version control systems, REMOTE-LOCATION can
be a remote branch name.
This command is like `vc-root-diff-outgoing' except that it includes
uncommitted changes."
(interactive (list (vc--maybe-read-remote-location)))
(vc--with-backend-in-rootdir "VC root-diff"
(vc-diff-outgoing-base remote-location `(,backend (,rootdir)))))
;;;###autoload
(defun vc-diff-outgoing-base (&optional remote-location fileset)
"Report changes to VC fileset since the merge base with REMOTE-LOCATION.
The merge base with REMOTE-LOCATION means the common ancestor of the
working revision and REMOTE-LOCATION.
Uncommitted changes are included in the diff.
When unspecified REMOTE-LOCATION is the place \\[vc-push] would push to.
This default meaning for REMOTE-LOCATION may change in a future release
of Emacs.
When called interactively with a prefix argument, prompt for
REMOTE-LOCATION. In some version control systems, REMOTE-LOCATION can
be a remote branch name.
This command is like to `vc-fileset-diff-outgoing' except that it
includes uncommitted changes."
(interactive (list (vc--maybe-read-remote-location) nil))
(let* ((fileset (or fileset (vc-deduce-fileset t)))
(backend (car fileset))
(incoming (vc--incoming-revision backend
(or remote-location ""))))
(vc-diff-internal vc-allow-async-diff fileset
(vc-call-backend backend 'mergebase incoming)
nil
(called-interactively-p 'interactive))))
(declare-function ediff-load-version-control "ediff" (&optional silent))
(declare-function ediff-vc-internal "ediff-vers"
(rev1 rev2 &optional startup-hooks))