branch: elpa/magit
commit 2dd886c28debeabba711c6e4b257cc8c08ab8368
Author: Jonas Bernoulli <[email protected]>
Commit: Jonas Bernoulli <[email protected]>
magit-blame-styles: Support %h to truncate hashes
Closes #4057.
---
lisp/magit-blame.el | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/lisp/magit-blame.el b/lisp/magit-blame.el
index 5695046a181..e87bd4fc4ec 100644
--- a/lisp/magit-blame.el
+++ b/lisp/magit-blame.el
@@ -94,12 +94,17 @@ The following %-specs can be used in `heading-format' and
`margin-format':
%H hash using face `magit-blame-hash'
+ %h truncated hash using face `magit-blame-hash'
%s summary using face `magit-blame-summary'
%a author using face `magit-blame-name'
%A author time using face `magit-blame-date'
%c committer using face `magit-blame-name'
%C committer time using face `magit-blame-date'
+Note that for performance reasons %h results in truncated
+hashes, as opposed to properly abbreviated hashes that are
+guaranteed to uniquely identify a commit.
+
Additionally if `margin-format' ends with %f, then the string
that is displayed in the margin is made at least `margin-width'
characters wide, which may be desirable if the used face sets
@@ -701,6 +706,7 @@ modes is toggled, then this mode also gets toggled
automatically.
(cdr (assoc k2 revinfo)))
f)))
`((?H . ,(p0 rev 'magit-blame-hash))
+ (?h . ,(p0 (magit-blame--abbrev-hash rev) 'magit-blame-hash))
(?s . ,(p1 "summary" 'magit-blame-summary))
(?a . ,(p1 "author" 'magit-blame-name))
(?c . ,(p1 "committer" 'magit-blame-name))
@@ -731,6 +737,13 @@ modes is toggled, then this mode also gets toggled
automatically.
(seconds-to-time (string-to-number time))
tz-in-second)))
+(defvar-local magit-blame--abbrev-length nil)
+
+(defun magit-blame--abbrev-hash (rev)
+ (substring rev 0 (or magit-blame--abbrev-length
+ (setq magit-blame--abbrev-length
+ (magit-abbrev-length)))))
+
(defun magit-blame--remove-overlays (&optional beg end)
(save-restriction
(widen)