]> git.eshelyaron.com Git - emacs.git/commitdiff
(diff-mouse-goto-source): New function.
authorDave Love <fx@gnu.org>
Thu, 7 Sep 2000 20:16:22 +0000 (20:16 +0000)
committerDave Love <fx@gnu.org>
Thu, 7 Sep 2000 20:16:22 +0000 (20:16 +0000)
lisp/ChangeLog
lisp/diff-mode.el

index f1cfe734b0a1fc416f8fc944dee5fa354199954d..55063e881351ef69ff558502dcd8c0f449f58151 100644 (file)
@@ -7,6 +7,8 @@
 
 2000-09-07  Dave Love  <fx@gnu.org>
 
+       * diff-mode.el (diff-mouse-goto-source): New function.
+
        * vc-sccs.el: Doc fixes.
        (vc-sccs-register-switches, vc-sccs-master-templates): Add
        :version.
index d27f401fe09469784ee71db0dcf1185d0d75f0fa..b737754f3dbab3cb079ed9670eda538e1a62fdc3 100644 (file)
@@ -206,15 +206,22 @@ when editing big diffs)."
 (defvar diff-changed-face 'diff-changed-face)
 
 (defvar diff-font-lock-keywords
-  '(("^@@ -[0-9,]+ \\+[0-9,]+ @@.*$" . diff-hunk-header-face) ;unified
-    ("^--- .+ ----$" . diff-hunk-header-face) ;context
-    ("^\\*\\*\\*\\(.+\\*\\*\\*\\|\\*\\{12\\}.*\\)\n" . diff-hunk-header-face) ;context
-    ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) .*\n" . diff-file-header-face)
+  '(("^@@ \\(-[0-9,]+ \\+[0-9,]+\\) @@\\(.*\\)$" ;unified
+     (1 diff-hunk-header-face)
+     (2 font-lock-comment-face))
+    ("^--- \\(.+\\) ----$"             ;context
+     (1 diff-hunk-header-face))
+    ("\\(\\*\\{15\\}\\)\\(.*\\)\n"     ;context
+     (1 diff-hunk-header-face)
+     (2 font-lock-comment-face))
+    ("^\\*\\*\\* \\(.+\\) \\*\\*\\*"   ;context
+      (1 diff-hunk-header-face))
+    ("^\\(---\\|\\+\\+\\+\\|\\*\\*\\*\\) \\(\\S-+\\)"  (2 diff-file-header-face))
     ("^[0-9,]+[acd][0-9,]+$" . diff-hunk-header-face)
     ("^!.*\n" . diff-changed-face)     ;context
     ("^[+>].*\n" . diff-added-face)
     ("^[-<].*\n" . diff-removed-face)
-    ("^Index: .*\n" . diff-index-face)
+    ("^Index: \\(.+\\)$"  (1 diff-index-face))
     ("^#.*" . font-lock-string-face)
     ("^[^-=+*!<>].*\n" . font-lock-comment-face)))
 
@@ -479,6 +486,12 @@ If the prefix arg is bigger than 8 (for example with \\[universal-argument] \\[u
        (push-mark (point) t t)
        (goto-line (cadr loc))))))
 
+(defun diff-mouse-goto-source (event)
+  "Run `diff-goto-source' for the diff at a mouse click."
+  (interactive "e")
+  (save-excursion
+    (mouse-set-point event)
+    (diff-goto-source)))
 
 (defun diff-ediff-patch ()
   "Call `ediff-patch-file' on the current buffer."
@@ -822,7 +835,16 @@ This mode runs `diff-mode-hook'.
   (set (make-local-variable 'outline-regexp) diff-outline-regexp)
   (set (make-local-variable 'imenu-generic-expression)
        diff-imenu-generic-expression)
- ;; compile support
+  ;; These are not perfect.  They would be better done separately for
+  ;; context diffs and unidiffs.
+  ;; (set (make-local-variable 'paragraph-start)
+  ;;        (concat "@@ "                      ; unidiff hunk
+  ;;          "\\|\\*\\*\\* "          ; context diff hunk or file start
+  ;;          "\\|--- [^\t]+\t"))      ; context or unidiff file
+  ;;                                   ; start (first or second line)
+  ;;   (set (make-local-variable 'paragraph-separate) paragraph-start)
+  ;;   (set (make-local-variable 'page-delimiter) "--- [^\t]+\t")
+  ;; compile support
   (set (make-local-variable 'compilation-file-regexp-alist)
        diff-file-regexp-alist)
   (set (make-local-variable 'compilation-error-regexp-alist)