update magit
[emacs.git] / .emacs.d / elisp / magit / magit-blame.el
index e17f068..8518dcb 100644 (file)
@@ -1,4 +1,4 @@
-;;; magit-blame.el --- blame support for Magit
+;;; magit-blame.el --- blame support for magit
 
 ;; Copyright (C) 2012  RĂ¼diger Sonderfeld
 ;; Copyright (C) 2012  Yann Hodique
@@ -9,6 +9,7 @@
 ;; Copyright (C) 2008  Marius Vollmer
 
 ;; Author: Yann Hodique <yann.hodique@gmail.com>
+;; Keywords:
 
 ;; Magit is free software; you can redistribute it and/or modify it
 ;; under the terms of the GNU General Public License as published by
 
 ;;; Commentary:
 
-;; Control git-blame from Magit.
-;; This code has been backported from Egg (Magit fork) to Magit.
+;; This code has been backported from Egg (Magit fork) to Magit
 
 ;;; Code:
 
-(eval-when-compile (require 'cl-lib))
+(eval-when-compile (require 'cl))
 (require 'magit)
-(require 'easymenu)
 
 (defface magit-blame-header
   '((t :inherit magit-header))
     map)
   "Keymap for an annotated section.\\{magit-blame-map}")
 
-(easy-menu-define magit-blame-mode-menu magit-blame-map
-  "Magit blame menu"
-  '("Blame"
-    ["Locate Commit" magit-blame-locate-commit t]
-    ["Next" magit-blame-next-chunk t]
-    ["Previous" magit-blame-previous-chunk t]
-    "---"
-    ["Quit" magit-blame-mode t]))
-
 (defvar magit-blame-buffer-read-only)
 (make-variable-buffer-local 'magit-blame-buffer-read-only)
 
     (if sha1
         (magit-show-commit sha1))))
 
-(defun magit-find-next-overlay-change (beg end prop)
+(defun magit-find-next-overlay-change (BEG END PROP)
   "Return the next position after BEG where an overlay matching a
 property PROP starts or ends. If there are no matching overlay
 boundaries from BEG to END, the return value is nil."
-  (when (> beg end)
-    (let ((swap beg))
-      (setq beg end end swap)))
   (save-excursion
-    (goto-char beg)
+    (goto-char BEG)
     (catch 'found
-      (let ((ov-pos beg))
-        ;; iterate through overlay changes from BEG to END
-        (while (< ov-pos end)
-          (let* ((next-ov-pos (next-overlay-change ov-pos))
-                 ;; search for an overlay with a PROP property
-                 (next-ov
-                  (let ((overlays (overlays-at next-ov-pos)))
-                    (while (and overlays
-                                (not (overlay-get (car overlays) prop)))
-                      (setq overlays (cdr overlays)))
-                    (car overlays))))
-            (if next-ov
-                ;; found the next overlay with prop PROP at next-ov-pos
-                (throw 'found next-ov-pos)
-              ;; no matching overlay found, keep looking
-              (setq ov-pos next-ov-pos))))))))
+      (flet ((overlay-change (pos)
+                             (if (< BEG END) (next-overlay-change pos)
+                               (previous-overlay-change pos)))
+             (within-bounds-p (pos)
+                              (if (< BEG END) (< pos END)
+                                (> pos END))))
+        (let ((ov-pos BEG))
+          ;; iterate through overlay changes from BEG to END
+          (while (within-bounds-p ov-pos)
+            (let* ((next-ov-pos (overlay-change ov-pos))
+                   ;; search for an overlay with a PROP property
+                   (next-ov
+                    (let ((overlays (overlays-at next-ov-pos)))
+                      (while (and overlays
+                                  (not (overlay-get (car overlays) PROP)))
+                        (setq overlays (cdr overlays)))
+                      (car overlays))))
+              (if next-ov
+                  ;; found the next overlay with prop PROP at next-ov-pos
+                  (throw 'found next-ov-pos)
+                ;; no matching overlay found, keep looking
+                (setq ov-pos next-ov-pos)))))))))
 
 (defun magit-blame-next-chunk (pos)
   "Go to the next blame chunk."
@@ -186,8 +179,8 @@ boundaries from BEG to END, the return value is nil."
 
 The second argument TZ can be used to add the timezone in (-)HHMM
 format to UNIXTIME.  UNIXTIME should be either a number
-containing seconds since epoch or Emacs's (HIGH LOW . IGNORED)
-format."
+containing seconds since epoch or Emacs's (HIGH LOW
+. IGNORED) format."
   (when (numberp tz)
     (unless (numberp unixtime)
       (setq unixtime (float-time unixtime)))