aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-11-05 18:12:07 -0500
committerGlenn Morris2014-11-05 18:12:07 -0500
commite1418d0e252b8f2b42eea18f16b25a78ca2ac721 (patch)
treea2bb7d21c04ceec58aa80fbc2a88e8496507da12
parent8b86268b69acdb63697dbcb9def2582fa1be517f (diff)
downloademacs-e1418d0e252b8f2b42eea18f16b25a78ca2ac721.tar.gz
emacs-e1418d0e252b8f2b42eea18f16b25a78ca2ac721.zip
* lisp/vc/vc/git.el: Fix previous.
Move new code after vc-git-log-view-mode definition to avoid bootstrap error. Ref: http://hydra.nixos.org/build/16795500
-rw-r--r--lisp/vc/vc-git.el94
1 files changed, 48 insertions, 46 deletions
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 5d7c0ef5c7b..be0211c1132 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -869,52 +869,6 @@ If LIMIT is non-nil, show no more than this many entries."
869 "@{upstream}" 869 "@{upstream}"
870 remote-location)))) 870 remote-location))))
871 871
872(defun vc-git-region-history (file buffer lfrom lto)
873 (vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported?
874 (format "-L%d,%d:%s" lfrom lto (file-relative-name file))))
875
876(require 'diff-mode)
877
878(defvar vc-git-region-history-mode-map
879 (let ((map (make-composed-keymap
880 nil (make-composed-keymap
881 (list diff-mode-map vc-git-log-view-mode-map)))))
882 map))
883
884(defvar vc-git--log-view-long-font-lock-keywords nil)
885(defvar font-lock-keywords)
886(defvar vc-git-region-history-font-lock-keywords
887 `((vc-git-region-history-font-lock)))
888
889(defun vc-git-region-history-font-lock (limit)
890 (let ((in-diff (save-excursion
891 (beginning-of-line)
892 (or (looking-at "^\\(?:diff\\|commit\\)\\>")
893 (re-search-backward "^\\(?:diff\\|commit\\)\\>" nil t))
894 (eq ?d (char-after (match-beginning 0))))))
895 (while
896 (let ((end (save-excursion
897 (if (re-search-forward "\n\\(diff\\|commit\\)\\>"
898 limit t)
899 (match-beginning 1)
900 limit))))
901 (let ((font-lock-keywords (if in-diff diff-font-lock-keywords
902 vc-git--log-view-long-font-lock-keywords)))
903 (font-lock-fontify-keywords-region (point) end))
904 (goto-char end)
905 (prog1 (< (point) limit)
906 (setq in-diff (eq ?d (char-after))))))
907 nil))
908
909(define-derived-mode vc-git-region-history-mode
910 vc-git-log-view-mode "Git-Region-History"
911 "Major mode to browse Git's \"log -p\" output."
912 (setq-local vc-git--log-view-long-font-lock-keywords
913 log-view-font-lock-keywords)
914 (setq-local font-lock-defaults
915 (cons 'vc-git-region-history-font-lock-keywords
916 (cdr font-lock-defaults))))
917
918(defvar log-view-message-re) 872(defvar log-view-message-re)
919(defvar log-view-file-re) 873(defvar log-view-file-re)
920(defvar log-view-font-lock-keywords) 874(defvar log-view-font-lock-keywords)
@@ -987,6 +941,54 @@ or BRANCH^ (where \"^\" can be repeated)."
987 (indent-region (point-min) (point-max) 2) 941 (indent-region (point-min) (point-max) 2)
988 (buffer-string)))) 942 (buffer-string))))
989 943
944
945(defun vc-git-region-history (file buffer lfrom lto)
946 (vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported?
947 (format "-L%d,%d:%s" lfrom lto (file-relative-name file))))
948
949(require 'diff-mode)
950
951(defvar vc-git-region-history-mode-map
952 (let ((map (make-composed-keymap
953 nil (make-composed-keymap
954 (list diff-mode-map vc-git-log-view-mode-map)))))
955 map))
956
957(defvar vc-git--log-view-long-font-lock-keywords nil)
958(defvar font-lock-keywords)
959(defvar vc-git-region-history-font-lock-keywords
960 `((vc-git-region-history-font-lock)))
961
962(defun vc-git-region-history-font-lock (limit)
963 (let ((in-diff (save-excursion
964 (beginning-of-line)
965 (or (looking-at "^\\(?:diff\\|commit\\)\\>")
966 (re-search-backward "^\\(?:diff\\|commit\\)\\>" nil t))
967 (eq ?d (char-after (match-beginning 0))))))
968 (while
969 (let ((end (save-excursion
970 (if (re-search-forward "\n\\(diff\\|commit\\)\\>"
971 limit t)
972 (match-beginning 1)
973 limit))))
974 (let ((font-lock-keywords (if in-diff diff-font-lock-keywords
975 vc-git--log-view-long-font-lock-keywords)))
976 (font-lock-fontify-keywords-region (point) end))
977 (goto-char end)
978 (prog1 (< (point) limit)
979 (setq in-diff (eq ?d (char-after))))))
980 nil))
981
982(define-derived-mode vc-git-region-history-mode
983 vc-git-log-view-mode "Git-Region-History"
984 "Major mode to browse Git's \"log -p\" output."
985 (setq-local vc-git--log-view-long-font-lock-keywords
986 log-view-font-lock-keywords)
987 (setq-local font-lock-defaults
988 (cons 'vc-git-region-history-font-lock-keywords
989 (cdr font-lock-defaults))))
990
991
990(autoload 'vc-switches "vc") 992(autoload 'vc-switches "vc")
991 993
992(defun vc-git-diff (files &optional rev1 rev2 buffer) 994(defun vc-git-diff (files &optional rev1 rev2 buffer)