Don't load diff-mode so eagerly (bug#81222)

* .dir-locals.el (diff-add-log-use-relative-names): Move to `diff-mode`.

* lisp/vc/vc-git.el: Don't require `diff-mode`.
(vc-git-region-history-mode-map): Don't set the keymap parent yet.
(vc-git-region-history-font-lock): Declare `diff-font-lock-keywords` to
silence the compiler warning.
(vc-git-region-history-mode): Require `diff-mode` and set the keymap
parent here.
This commit is contained in:
Stefan Monnier 2026-06-13 13:22:31 -04:00
parent 0bc48084fb
commit 233b00a683
2 changed files with 14 additions and 10 deletions

View file

@ -7,7 +7,6 @@
(emacs-lisp-docstring-fill-column . 72)
(vc-git-annotate-switches . "-w")
(bug-reference-url-format . "https://debbugs.gnu.org/%s")
(diff-add-log-use-relative-names . t)
(etags-regen-regexp-alist
.
((("c" "objc") .
@ -57,7 +56,8 @@
(change-log-mode . ((add-log-time-zone-rule . t)
(fill-column . 74)
(mode . bug-reference)))
(diff-mode . ((mode . whitespace)))
(diff-mode . ((mode . whitespace)
(diff-add-log-use-relative-names . t)))
(emacs-lisp-mode . ((indent-tabs-mode . nil)
(electric-quote-comment . nil)
(electric-quote-string . nil)

View file

@ -2070,12 +2070,8 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
(vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported?
(format "-L%d,%d:%s" lfrom lto (file-relative-name file))))
(require 'diff-mode)
(defvar vc-git-region-history-mode-map
(let ((map (make-composed-keymap
nil (make-composed-keymap
(list diff-mode-map vc-git-log-view-mode-map)))))
(let ((map (make-sparse-keymap)))
map))
(defvar vc-git--log-view-long-font-lock-keywords nil)
@ -2083,6 +2079,7 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
'((vc-git-region-history-font-lock)))
(defun vc-git-region-history-font-lock (limit)
(defvar diff-font-lock-keywords)
(let ((in-diff (save-excursion
(beginning-of-line)
(or (looking-at "^\\(?:diff\\|commit\\)\\>")
@ -2094,8 +2091,9 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
limit t)
(match-beginning 1)
limit))))
(let ((font-lock-keywords (if in-diff diff-font-lock-keywords
vc-git--log-view-long-font-lock-keywords)))
(let ((font-lock-keywords
(if in-diff diff-font-lock-keywords
vc-git--log-view-long-font-lock-keywords)))
(font-lock-fontify-keywords-region (point) end))
(goto-char end)
(prog1 (< (point) limit)
@ -2103,8 +2101,14 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
nil))
(define-derived-mode vc-git-region-history-mode
vc-git-log-view-mode "Git-Region-History"
vc-git-log-view-mode "Git-Region-History"
"Major mode to browse Git's \"log -p\" output."
(require 'diff-mode)
(defvar diff-mode-map)
(unless (keymap-parent vc-git-region-history-mode-map)
(set-keymap-parent vc-git-region-history-mode-map
(make-composed-keymap
(list diff-mode-map vc-git-log-view-mode-map))))
(setq-local vc-git--log-view-long-font-lock-keywords
log-view-font-lock-keywords)
(setq-local font-lock-defaults