emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r103631: * lisp/progmodes/compile.el


From: Stefan Monnier
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r103631: * lisp/progmodes/compile.el (compilation--previous-directory): Fix up
Date: Fri, 11 Mar 2011 23:29:22 -0500
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 103631
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Fri 2011-03-11 23:29:22 -0500
message:
  * lisp/progmodes/compile.el (compilation--previous-directory): Fix up
  various nil/dead-marker mismatches.
  (compilation-directory-properties, compilation-error-properties):
  Don't call it at a position past the one we're about to change.
modified:
  lisp/ChangeLog
  lisp/progmodes/compile.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2011-03-12 02:59:24 +0000
+++ b/lisp/ChangeLog    2011-03-12 04:29:22 +0000
@@ -1,5 +1,10 @@
 2011-03-12  Stefan Monnier  <address@hidden>
 
+       * progmodes/compile.el (compilation--previous-directory): Fix up
+       various nil/dead-marker mismatches (bug#8014).
+       (compilation-directory-properties, compilation-error-properties):
+       Don't call it at a position past the one we're about to change.
+
        * emacs-lisp/bytecomp.el (byte-compile-make-obsolete-variable):
        Disable obsolescence warnings in the file that declares it.
 

=== modified file 'lisp/progmodes/compile.el'
--- a/lisp/progmodes/compile.el 2011-02-19 21:23:51 +0000
+++ b/lisp/progmodes/compile.el 2011-03-12 04:29:22 +0000
@@ -860,27 +860,29 @@
                        (car compilation--previous-directory-cache)))
            (prev
             (previous-single-property-change
-             pos 'compilation-directory nil cache)))
-      (cond
-       ((null cache)
-        (setq compilation--previous-directory-cache
-              (cons (copy-marker pos) (copy-marker prev)))
-        prev)
-       ((eq prev cache)
-        (if cache
-            (set-marker (car compilation--previous-directory-cache) pos)
-          (setq compilation--previous-directory-cache
-                (cons (copy-marker pos) nil)))
-        (cdr compilation--previous-directory-cache))
-       (t
-        (if cache
-            (progn
-              (set-marker (car compilation--previous-directory-cache) pos)
-              (setcdr compilation--previous-directory-cache
-                      (copy-marker prev)))
-          (setq compilation--previous-directory-cache
-                (cons (copy-marker pos) (copy-marker prev))))
-        prev)))))
+             pos 'compilation-directory nil cache))
+           (res
+            (cond
+             ((null cache)
+              (setq compilation--previous-directory-cache
+                    (cons (copy-marker pos) (if prev (copy-marker prev))))
+              prev)
+             ((and prev (= prev cache))
+              (if cache
+                  (set-marker (car compilation--previous-directory-cache) pos)
+                (setq compilation--previous-directory-cache
+                      (cons (copy-marker pos) nil)))
+              (cdr compilation--previous-directory-cache))
+             (t
+              (if cache
+                  (progn
+                    (set-marker cache pos)
+                    (setcdr compilation--previous-directory-cache
+                            (copy-marker prev)))
+                (setq compilation--previous-directory-cache
+                      (cons (copy-marker pos) (if prev (copy-marker prev)))))
+              prev))))
+      (if (markerp res) (marker-position res) res))))
 
 ;; Internal function for calculating the text properties of a directory
 ;; change message.  The compilation-directory property is important, because it
@@ -889,7 +891,7 @@
 (defun compilation-directory-properties (idx leave)
   (if leave (setq leave (match-end leave)))
   ;; find previous stack, and push onto it, or if `leave' pop it
-  (let ((dir (compilation--previous-directory (point))))
+  (let ((dir (compilation--previous-directory (match-beginning 0))))
     (setq dir (if dir (or (get-text-property (1- dir) 'compilation-directory)
                          (get-text-property dir 'compilation-directory))))
     `(font-lock-face ,(if leave
@@ -948,7 +950,8 @@
                             (match-string-no-properties file))))
          (let ((dir
            (unless (file-name-absolute-p file)
-                   (let ((pos (compilation--previous-directory (point))))
+                   (let ((pos (compilation--previous-directory
+                               (match-beginning 0))))
                      (when pos
                        (or (get-text-property (1- pos) 'compilation-directory)
                            (get-text-property pos 'compilation-directory)))))))


reply via email to

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