emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/log-view.el,v


From: Dan Nicolaescu
Subject: [Emacs-diffs] Changes to emacs/lisp/log-view.el,v
Date: Sat, 25 Aug 2007 20:07:25 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Dan Nicolaescu <dann>   07/08/25 20:07:25

Index: log-view.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/log-view.el,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- log-view.el 24 Aug 2007 17:28:00 -0000      1.40
+++ log-view.el 25 Aug 2007 20:07:22 -0000      1.41
@@ -178,8 +178,6 @@
 (defconst log-view-font-lock-defaults
   '(log-view-font-lock-keywords t nil nil nil))
 
-(defvar log-view-marked-list nil)
-
 ;;;;
 ;;;; Actual code
 ;;;;
@@ -188,7 +186,6 @@
 (define-derived-mode log-view-mode fundamental-mode "Log-View"
   "Major mode for browsing CVS log output."
   (setq buffer-read-only t)
-  (make-local-variable 'log-view-marked-list)
   (set (make-local-variable 'font-lock-defaults) log-view-font-lock-defaults)
   (set (make-local-variable 'cvs-minor-wrap-function) 'log-view-minor-wrap))
 
@@ -236,12 +233,11 @@
     (forward-line 1)
     (let ((pt (point)))
       (when (re-search-backward log-view-message-re nil t)
-       (let ((rev (match-string 1)))
+       (let ((rev (match-string-no-properties 1)))
          (unless (re-search-forward log-view-file-re pt t)
            rev))))))
 
 (defun log-view-toggle-mark-entry ()
-  "Toggle marking for on log entry."
   (interactive)
   (save-excursion
     (forward-line 1)
@@ -250,24 +246,13 @@
        (let ((beg (match-beginning 0))
              end ov ovlist found tag)
          (unless (re-search-forward log-view-file-re pt t)
-           ;; Look to see if the current entry is marked by looking
-           ;; at the overlays at point.
-           (setq ovlist (overlays-at (point)))
-           (dolist (ovl ovlist)
-             (when (overlay-get ovl 'log-view-marked)
-               (setq found ovl)))
+           ;; Look to see if the current entry is marked.
+           (setq found (get-char-property (point) 'log-view-self))
            (if found
-               (progn
-                 ;; Remove this entry from the marked list and remove
-                 ;; the overlay.
-                 (setq log-view-marked-list 
-                       (delq (overlay-get found 'log-view-marked)
-                             log-view-marked-list))
-                 (delete-overlay found))
-             ;; Add this entry to the marked list and create an
-             ;; overlay that covers it.
+               (delete-overlay found)
+             ;; Create an overlay that covers this entry and change
+             ;; it's color.
              (setq tag (log-view-current-tag (point)))
-             (push tag log-view-marked-list)
              (forward-line 1)
              (setq end 
                    (if (re-search-forward log-view-message-re nil t)
@@ -275,8 +260,20 @@
                      (point-max)))
              (setq ov (make-overlay beg end))
              (overlay-put ov 'face 'log-view-file)
+             ;; This is used to check if the overlay is present.
+             (overlay-put ov 'log-view-self ov)
              (overlay-put ov 'log-view-marked tag))))))))
 
+(defun log-view-get-marked ()
+  (save-excursion
+    (let ((pos (point-min))
+         marked-list ov)
+      (while (setq pos (next-single-property-change pos 'face))
+       (when (setq ov (get-char-property pos 'log-view-self))
+         (push (overlay-get ov 'log-view-marked) marked-list)
+         (setq pos (overlay-end ov))))
+      marked-list)))
+
 (defvar cvs-minor-current-files)
 (defvar cvs-branch-prefix)
 (defvar cvs-secondary-branch-prefix)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]