master 233b00a683a: Don't load `diff-mode` so eagerly (bug#81222)

Stefan Monnier via Mailing list for Emacs changes <[email protected]>
Newsgroups gmane.emacs.diffs
Message-ID <[email protected]>
branch: master
commit 233b00a683a1a92ab693e0ba5d485c19a0eb8c4b
Author: Stefan Monnier <[email protected]>
Commit: Stefan Monnier <[email protected]>

    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.
---
 .dir-locals.el    |  4 ++--
 lisp/vc/vc-git.el | 20 ++++++++++++--------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/.dir-locals.el b/.dir-locals.el
index b1123032443..d1cc520e232 100644
--- a/.dir-locals.el
+++ b/.dir-locals.el
@@ -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)
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index b66f13f7268..e68945cda8d 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.