[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/annotate 78fc74289f 194/372: - use iteration instead of re
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/annotate 78fc74289f 194/372: - use iteration instead of recursion in |
Date: |
Fri, 4 Feb 2022 16:58:58 -0500 (EST) |
branch: elpa/annotate
commit 78fc74289fd94aa49c9312a4529faa3612d3e3ba
Author: cage <cage-invalid@invalid>
Commit: cage <cage-invalid@invalid>
- use iteration instead of recursion in
'annotate-previous-annotation-end' and 'annotate-next-annotation-end'
---
annotate.el | 52 +++++++++++++++++++++++++++-------------------------
1 file changed, 27 insertions(+), 25 deletions(-)
diff --git a/annotate.el b/annotate.el
index 380bf26e0d..b05006aab9 100644
--- a/annotate.el
+++ b/annotate.el
@@ -1411,42 +1411,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
- [nongnu] elpa/annotate 9cc55145de 150/372: - shown, when editing annotation in summary window and asking user to, (continued)
- [nongnu] elpa/annotate 9cc55145de 150/372: - shown, when editing annotation in summary window and asking user to, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate a370187f0b 151/372: - initial working on placing an annotation on its own line if too long., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 2292d5c6c8 160/372: - changed variable name from: 'text' to a more meaningful 'annotated text'., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 54d112e8d3 174/372: [bugfix] mitigated bug that prevented rendering of annotation when, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 91412e5d65 175/372: - removed multiple, consecutive, spaces in comments., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate ed6a7dd7cc 180/372: - prevented fails of fontification of annotated regions, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate e4a7750e8c 183/372: - prevented overlapping of annotations when a symbol is already, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate eaffc1eba1 185/372: - mark buffer as modified even if the only action the user performed, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 7cf7f46be0 191/372: - removed duplicated function., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 9c2bf1bd36 192/372: - used the correct functions when recurse., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 78fc74289f 194/372: - use iteration instead of recursion in,
ELPA Syncer <=
- [nongnu] elpa/annotate 2dabb8d886 196/372: Merge branch 'master' into rethink-multiline-annotations, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate e1a0917d98 197/372: - fixed 'annotate-previous-annotation-ends' and 'annotate-next-annotation-ends', ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate e7ca823566 201/372: Merge branch 'master' into org-mode-fix, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 2cf1a0b6d2 199/372: Merge branch 'master' into rethink-multiline-annotations, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 818f66f4a3 203/372: Merge pull request #58 from cage2/master, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate de116813be 211/372: Merge branch 'master' into rethink-multiline-annotations, ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate 30f639c524 212/372: - fixed return value of 'maybe-force-newline-policy'., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate ece50f65fe 220/372: - fixed managing return value of "(get-text-property changed-face-pos 'face)", ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate b25fb1ccab 224/372: - Increased version to 0.7.0., ELPA Syncer, 2022/02/04
- [nongnu] elpa/annotate a6097f6326 237/372: - updated NEWS, Changelog and version., ELPA Syncer, 2022/02/04