emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[nongnu] elpa/annotate 2dabb8d886 196/372: Merge branch 'master' into re


From: ELPA Syncer
Subject: [nongnu] elpa/annotate 2dabb8d886 196/372: Merge branch 'master' into rethink-multiline-annotations
Date: Fri, 4 Feb 2022 16:58:58 -0500 (EST)

branch: elpa/annotate
commit 2dabb8d886d73310e57a8c7313aea77b33c85347
Merge: 2ccdad1504 31e3c24726
Author: cage <cage-invalid@invalid>
Commit: cage <cage-invalid@invalid>

    Merge branch 'master' into rethink-multiline-annotations
---
 Changelog   | 20 +++++++++++++++-----
 NEWS.org    |  8 ++++++++
 README.org  |  3 +++
 annotate.el | 56 +++++++++++++++++++++++++++++---------------------------
 4 files changed, 55 insertions(+), 32 deletions(-)

diff --git a/Changelog b/Changelog
index 9d9f09e3fd..c616997871 100644
--- a/Changelog
+++ b/Changelog
@@ -2,8 +2,18 @@
 
         * annotate.el (annotate--font-lock-matcher):
         - fixed error for regexp search
-         Sometimes some modes/package puts overlay on the last character of a
-         buffer (notably SLIME when the parenthesis of a form are not
-          balanced). This will make 're-search-forward' in the aforementioned
-          function fails and font lock becomes a mess (e.g. text color
-          disappears).
+       Sometimes some modes/package puts overlay on the last character of a
+       buffer (notably SLIME when the parenthesis of a form are not
+        balanced). This will make 're-search-forward' in the aforementioned
+        function fails and font lock becomes a mess (e.g. text color
+        disappears).
+
+2020-02-10 Bastian Bechtold, cage
+       * annotate.el (annotate--font-lock-matcher annotate-bounds 
nnotate-symbol-strictly-at-point annotate-next-annotation-change 
annotate-previous-annotation-change annotate-clear-annotations 
annotate-annotate)
+       - prevented fails of fontification of annotated regions
+       As we walk across the overlays we can get past the limit;
+       - mark buffer as modified even if the only action the user performed
+       was clearing annotation (and at least an annotation was present in
+       the file)
+       - prevented annotation of text marked with a region that overlap with
+       an existing annotation.
diff --git a/NEWS.org b/NEWS.org
index 14f9889c14..15ff059ff9 100644
--- a/NEWS.org
+++ b/NEWS.org
@@ -85,3 +85,11 @@
 - 2020-01-22 V0.5.1 Bastian Bechtold, cage ::
   - fixed bug that prevented correct fontifications for major modes
     that puts overlays on the buffer's text (e.g. SLIME).
+
+- 2020-02-10 V0.5.2 Bastian Bechtold, cage ::
+
+  - fixed bugs that makes some annotations overlaps;
+  - fixed some bugs in fontifications of multiline annotation;
+  - when the only user interactions, before saving, with a visited file was
+    the call of 'annotate-clear-annotations' the annotations
+    will shows again at reload, this should be fixed now.
diff --git a/README.org b/README.org
index 4439f50aa1..1345d344d8 100644
--- a/README.org
+++ b/README.org
@@ -114,6 +114,9 @@ as comments into the current buffer, like this:
    incompatibility with the way source blocks are highlighted and the
    way annotations are displayed.
 
+   Annotating a region that contains newline(s) can results in various
+   issues.
+
    Deleting the first  character of an annotated text  will remove the
    annotation (this turned out to be useful, though).
 
diff --git a/annotate.el b/annotate.el
index 5fb812e37b..e8146b83d4 100644
--- a/annotate.el
+++ b/annotate.el
@@ -7,7 +7,7 @@
 ;; Maintainer: Bastian Bechtold
 ;; URL: https://github.com/bastibe/annotate.el
 ;; Created: 2015-06-10
-;; Version: 0.5.1
+;; Version: 0.5.2
 
 ;; This file is NOT part of GNU Emacs.
 
@@ -52,7 +52,7 @@
 ;;;###autoload
 (defgroup annotate nil
   "Annotate files without changing them."
-  :version "0.5.1"
+  :version "0.5.2"
   :group 'text)
 
 ;;;###autoload
@@ -1493,42 +1493,44 @@ The searched interval can be customized setting the 
variable:
         (make-string prefix-length ? )))))
 
 (defun annotate-annotations-at (pos)
+  "Returns the annotations (overlay where (annotationp overlay) -> t)
+   at positions pos or nil if no annotations exists at pos"
   (cl-remove-if-not #'annotationp
                     (overlays-at pos)))
 
 (defun annotate-previous-annotation-ends (pos)
-  "Return the previous annotation that ends before pos or nil if no annotation
+  "Returns the previous annotation that ends before pos or nil if no annotation
 was found.
 NOTE this assumes that annotations never overlaps"
   (cl-labels ((previous-annotation-ends (start)
-               (let ((all-annotations (annotate-annotations-at start)))
-                 (if all-annotations
-                     (cl-first all-annotations)
-                   (if (> (1- start)
-                          (point-min))
-                       (previous-annotation-ends (1- start))
-                     nil)))))
-  (let ((all-annotations (annotate-annotations-at pos)))
-    (if all-annotations
-        (previous-annotation-ends (1- (overlay-start (cl-first 
all-annotations))))
-      (previous-annotation-ends pos)))))
+                (let ((all-annotations (annotate-annotations-at start)))
+                  (while (and (>= (1- start)
+                                  (point-min))
+                              (null all-annotations))
+                    (setf start (1- start))
+                    (setf all-annotations (annotate-annotations-at (1- 
start))))
+                  all-annotations)))
+    (let ((all-annotations (annotate-annotations-at pos)))
+      (if all-annotations
+          (previous-annotation-ends (1- (overlay-start (cl-first 
all-annotations))))
+        (previous-annotation-ends pos)))))
 
 (defun annotate-next-annotation-starts (pos)
-  "Return the previous annotation that ends before pos or nil if no annotation
+  "Returns the previous annotation that ends before pos or nil if no annotation
 was found.
 NOTE this assumes that annotations never overlaps"
-  (cl-labels ((next-annotation-starts (start)
-               (let ((all-annotations (annotate-annotations-at start)))
-                 (if all-annotations
-                     (cl-first all-annotations)
-                   (if (> (1+ start)
-                          (point-max))
-                       (previous-annotation-ends (1+ start))
-                     nil)))))
-  (let ((all-annotations (annotate-annotations-at pos)))
-    (if all-annotations
-        (next-annotation-starts (overlay-ends (cl-first all-annotations)))
-      (next-annotation-starts pos)))))
+  (cl-labels ((next-annotation-ends (start)
+                (let ((all-annotations (annotate-annotations-at start)))
+                  (while (and (<= (1+ start)
+                                  (point-max))
+                              (null all-annotations))
+                    (setf start (1+ start))
+                    (setf all-annotations (annotate-annotations-at (1+ 
start))))
+                  all-annotations)))
+    (let ((all-annotations (annotate-annotations-at pos)))
+      (if all-annotations
+          (next-annotation-ends (overlay-end (cl-first all-annotations)))
+        (next-annotation-ends pos)))))
 
 (defun annotate-symbol-strictly-at-point ()
  "Return non nil if a symbol is at char immediately following



reply via email to

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