1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 20:32:00 -08:00

Abbreviate the VC revision in vc-annotate's buffer name

* lisp/vc/vc-hooks.el (vc-use-short-revision): New variable.
(vc-short-revision): New function.

* lisp/vc/vc-annotate.el (vc-annotate-use-short-revision): New
option...
(vc-annotate): ... use it.

* lisp/vc/vc-git.el (vc-git--rev-parse): Consult
'vc-use-short-revision'.

* etc/NEWS: Announce this change (bug#67062).
This commit is contained in:
Jim Porter 2023-12-14 11:31:27 -08:00
parent 9e0eeb2d49
commit ea4cbb3aae
4 changed files with 32 additions and 3 deletions

View file

@ -497,6 +497,12 @@ switch is used, commands to see the diff of the old revision ('d'),
check out an old file version ('f') or annotate it right away ('a'),
also work on revisions which precede renames.
---
*** 'vc-annotate' now abbreviates the Git revision in the buffer name.
When using the Git backend, 'vc-annotate' will use an abbreviated
revision identifier in its buffer name. To restore the previous
behavior, set 'vc-annotate-use-short-revision' to nil.
*** New option 'vc-git-file-name-changes-switches'.
It allows tweaking the thresholds for rename and copy detection.

View file

@ -162,6 +162,11 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'."
:type '(repeat number)
:group 'vc)
(defcustom vc-annotate-use-short-revision t
"If non-nil, \\[vc-annotate] will use short revisions in its buffer name."
:type 'boolean
:group 'vc)
(defvar-keymap vc-annotate-mode-map
:doc "Local keymap used for VC-Annotate mode."
"a" #'vc-annotate-revision-previous-to-line
@ -397,7 +402,10 @@ should be applied to the background or to the foreground."
(save-current-buffer
(vc-ensure-vc-buffer)
(list buffer-file-name
(let ((def (vc-working-revision buffer-file-name)))
(let ((def (funcall (if vc-annotate-use-short-revision
#'vc-short-revision
#'vc-working-revision)
buffer-file-name)))
(if (null current-prefix-arg) def
(vc-read-revision
(format-prompt "Annotate from revision" def)

View file

@ -1857,8 +1857,11 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
(defun vc-git--rev-parse (rev)
(with-temp-buffer
(and
(vc-git--out-ok "rev-parse" rev)
(buffer-substring-no-properties (point-min) (+ (point-min) 40)))))
(apply #'vc-git--out-ok "rev-parse"
(append (when vc-use-short-revision '("--short"))
(list rev)))
(goto-char (point-min))
(buffer-substring-no-properties (point) (pos-eol)))))
(defun vc-git-next-revision (file rev)
"Git-specific version of `vc-next-revision'."

View file

@ -506,6 +506,18 @@ If FILE is not registered, this function always returns nil."
(vc-call-backend
backend 'working-revision file))))))
(defvar vc-use-short-revision nil
"If non-nil, VC backend functions should return short revisions if possible.
This is set to t when calling `vc-short-revision', which will
then call the \\=`working-revision' backend function.")
(defun vc-short-revision (file &optional backend)
"Return the repository version for FILE in a shortened form.
If FILE is not registered, this function always returns nil."
(let ((vc-use-short-revision t))
(vc-call-backend (or backend (vc-backend file))
'working-revision file)))
(defun vc-default-registered (backend file)
"Check if FILE is registered in BACKEND using vc-BACKEND-master-templates."
(let ((sym (vc-make-backend-sym backend 'master-templates)))