]> git.neil.brown.name Git - edlib.git/commitdiff
Remove doc arg from mark_to_mark.
authorNeilBrown <neil@brown.name>
Thu, 26 Nov 2015 06:10:50 +0000 (17:10 +1100)
committerNeilBrown <neil@brown.name>
Thu, 26 Nov 2015 06:16:25 +0000 (17:16 +1100)
It isn't really neded.
We can easily remove doc from doc_next_mark_all() as it isn't used.
We can also have a version of doc_prev_mark_all() that only gets
called when we *know* there is a previos mark, as we do ni mark_to_mark.

Signed-off-by: NeilBrown <neil@brown.name>
core-doc.c
core-mark.c
core.h
doc-dir.c
doc-text.c
render-complete.c

index 84084d8d5213eba127a01ca1ce88e78de3e96f86..41a7bff256ac64625dea094111e5b743198eb1ea 100644 (file)
@@ -765,7 +765,7 @@ static void docs_release(struct doc *d)
 
        for (m = doc_first_mark_all(ed->docs);
             m;
-            m = doc_next_mark_all(ed->docs, m))
+            m = doc_next_mark_all(m))
                if (m->ref.p == d->home) {
                        mark_step2(ed->docs, m, 1, 1);
                        doc_notify_change(ed->docs, m);
@@ -786,7 +786,7 @@ static void docs_attach(struct doc *d)
                return;
        for (m = doc_first_mark_all(ed->docs);
             m;
-            m = doc_next_mark_all(ed->docs, m))
+            m = doc_next_mark_all(m))
                if (p->siblings.next == &m->ref.p->siblings) {
                        mark_step2(ed->docs, m, 0, 1);
                        doc_notify_change(ed->docs, m);
index 82298ac42165cede0124fac8e91014f1c18283c1..e12928ac69c57483689a221fe8c5a1c4e5852d59 100644 (file)
@@ -364,20 +364,26 @@ struct mark *doc_first_mark_all(struct doc *d)
        return NULL;
 }
 
-struct mark *doc_next_mark_all(struct doc *d, struct mark *m)
+struct mark *doc_next_mark_all(struct mark *m)
 {
        if (m->all.next)
                return hlist_next_entry(m, all);
        return NULL;
 }
 
-struct mark *doc_prev_mark_all(struct doc *d, struct mark *m)
+struct mark *doc_prev_mark_all_safe(struct doc *d, struct mark *m)
 {
        if (d->marks.first != &m->all)
                return hlist_prev_entry(m, all);
        return NULL;
 }
 
+struct mark *doc_prev_mark_all(struct mark *m)
+{
+       /* Must never be called on first mark */
+       return hlist_prev_entry(m, all);
+}
+
 
 struct mark *doc_new_mark(struct doc *d, int view)
 {
@@ -681,7 +687,7 @@ void point_to_mark(struct point *p, struct mark *m)
        p->m.rpos = m->rpos;
 }
 
-void mark_to_mark(struct doc *d, struct mark *m, struct mark *target)
+void mark_to_mark(struct mark *m, struct mark *target)
 {
 
        if (m->viewnum == MARK_POINT) {
@@ -690,11 +696,11 @@ void mark_to_mark(struct doc *d, struct mark *m, struct mark *target)
                return;
        }
        while (mark_ordered(m, target)) {
-               struct mark *n = doc_next_mark_all(d, m);
+               struct mark *n = doc_next_mark_all(m);
                mark_forward_over(m, n);
        }
        while (mark_ordered(target, m)) {
-               struct mark *n = doc_prev_mark_all(d, m);
+               struct mark *n = doc_prev_mark_all(m);
                mark_backward_over(m, n);
        }
        m->ref = target->ref;
diff --git a/core.h b/core.h
index a6b8f5a57a96d6ef0e105d73b765c037dd64d435..2974754b2d770484264e7cafbddbfbbb923726a7 100644 (file)
--- a/core.h
+++ b/core.h
@@ -146,8 +146,9 @@ struct mark *mark_dup(struct mark *m, int notype);
 void mark_free(struct mark *m);
 struct mark *doc_new_mark(struct doc *d, int view);
 struct mark *doc_first_mark_all(struct doc *d);
-struct mark *doc_next_mark_all(struct doc *d, struct mark *m);
-struct mark *doc_prev_mark_all(struct doc *d, struct mark *m);
+struct mark *doc_next_mark_all(struct mark *m);
+struct mark *doc_prev_mark_all(struct mark *m);
+struct mark *doc_prev_mark_all_safe(struct doc *d, struct mark *m);
 struct mark *doc_first_mark(struct doc *d, int viewnum);
 struct mark *doc_next_mark(struct doc *d, struct mark *m);
 struct mark *doc_prev_mark(struct doc *d, struct mark *m);
@@ -160,7 +161,7 @@ void point_notify_change(struct point *p, struct mark *m);
 void doc_notify_change(struct doc *d, struct mark *m);
 void doc_check_consistent(struct doc *d);
 void point_to_mark(struct point *p, struct mark *m);
-void mark_to_mark(struct doc *d, struct mark *m, struct mark *target);
+void mark_to_mark(struct mark *m, struct mark *target);
 int mark_same(struct doc *d, struct mark *m1, struct mark *m2);
 int mark_same2(struct doc *d, struct mark *m1, struct mark *m2, struct cmd_info *ci);
 int mark_same_pane(struct pane *p, struct mark *m1, struct mark *m2,
index 21cee9d8f809a056bbe870ab35fc73d6d70198f7..4a694286dfa198df01d388607d04b8d741254058 100644 (file)
--- a/doc-dir.c
+++ b/doc-dir.c
@@ -175,7 +175,7 @@ DEF_CMD(dir_load_file)
                        else
                                de1 = list_next_entry(de1, lst);
                        for (m2 = m; m2 && m2->ref.d == de;
-                            m2 = doc_next_mark_all(d, m2))
+                            m2 = doc_next_mark_all(m2))
                                m2->ref.d = de1;
                        attr_free(&de->attrs);
                        free(de->name);
@@ -213,7 +213,7 @@ DEF_CMD(dir_load_file)
                de2 = list_first_entry_or_null(&new, struct dir_ent, lst);
                while (m && m->ref.d && de1 && strcmp(m->ref.d->name, de1->name) < 0) {
                        prev = m;
-                       m = doc_next_mark_all(d, m);
+                       m = doc_next_mark_all(m);
                }
        }
        if (!donotify) {
index aeab50aca02f0ff8e0bec4d3b31205b13e02eb7a..4fda303230274d96a8b7395bc8cc4c62b2d14d91 100644 (file)
@@ -815,7 +815,7 @@ DEF_CMD(text_reundo)
                                i = text_advance_towards(t, &m->ref, &end);
                                if (i == 0)
                                        break;
-                               while ((m2 = doc_next_mark_all(d, m)) != NULL &&
+                               while ((m2 = doc_next_mark_all(m)) != NULL &&
                                       m2->ref.c == m->ref.c &&
                                       m2->ref.o <= m->ref.o)
                                        mark_forward_over(m, m2);
@@ -825,7 +825,7 @@ DEF_CMD(text_reundo)
                                i = text_retreat_towards(t, &m->ref, &end);
                                if (i == 0)
                                        break;
-                               while ((m2 = doc_prev_mark_all(d, m)) != NULL &&
+                               while ((m2 = doc_prev_mark_all_safe(d, m)) != NULL &&
                                       m2->ref.c == m->ref.c &&
                                       m2->ref.o >= m->ref.o)
                                        mark_backward_over(m, m2);
@@ -848,7 +848,7 @@ DEF_CMD(text_reundo)
                                                               &start, &end) == 0)
                                break;
 
-               early = doc_prev_mark_all(d, m);
+               early = doc_prev_mark_all_safe(d, m);
                if (early && !text_ref_same(t, &early->ref, &start))
                        early = NULL;
 
@@ -1335,11 +1335,11 @@ static void text_check_consistent(struct text *t)
                }
        }
 
-       for (m = doc_first_mark_all(d); m; m = doc_next_mark_all(d, m))
+       for (m = doc_first_mark_all(d); m; m = doc_next_mark_all(m))
                text_ref_consistent(t, &m->ref);
 
        prev = NULL;
-       for (m = doc_first_mark_all(d); m; m = doc_next_mark_all(d, m)) {
+       for (m = doc_first_mark_all(d); m; m = doc_next_mark_all(m)) {
                if (prev) {
                        struct doc_ref r = prev->ref;
                        int i;
@@ -1372,24 +1372,24 @@ DEF_CMD(text_replace)
 
                if (!mark_ordered(pm, end)) {
                        myend = mark_dup(pm, 1);
-                       mark_to_mark(d, pm, end);
+                       mark_to_mark(pm, end);
                } else
                        myend = mark_dup(end, 1);
                l = count_bytes(t, pm, myend);
                mark_free(myend);
                text_del(t, &pm->ref, l, &first);
 
-               for (m = doc_prev_mark_all(d, pm);
+               for (m = doc_prev_mark_all_safe(d, pm);
                     m && text_update_prior_after_change(t, &m->ref, &pm->ref, &pm->ref);
-                    m = doc_prev_mark_all(d, m))
+                    m = doc_prev_mark_all_safe(d, m))
                        ;
-               for (m = doc_next_mark_all(d, pm);
+               for (m = doc_next_mark_all(pm);
                     m && text_update_following_after_change(t, &m->ref, &pm->ref, &pm->ref);
-                    m = doc_next_mark_all(d, m))
+                    m = doc_next_mark_all(m))
                        ;
                text_check_consistent(t);
        }
-       early = doc_prev_mark_all(d, pm);
+       early = doc_prev_mark_all_safe(d, pm);
        if (early && !mark_same(d, early, pm))
                early = NULL;
 
@@ -1398,13 +1398,13 @@ DEF_CMD(text_replace)
                struct mark *m;
 
                text_add_str(t, &pm->ref, str, &start, &first);
-               for (m = doc_prev_mark_all(d, pm);
+               for (m = doc_prev_mark_all_safe(d, pm);
                     m && text_update_prior_after_change(t, &m->ref, &start, &pm->ref);
-                    m = doc_prev_mark_all(d, m))
+                    m = doc_prev_mark_all_safe(d, m))
                        ;
-               for (m = doc_next_mark_all(d, pm);
+               for (m = doc_next_mark_all(pm);
                     m && text_update_following_after_change(t, &m->ref, &start, &pm->ref);
-                    m = doc_next_mark_all(d, m))
+                    m = doc_next_mark_all(m))
                        ;
                text_check_consistent(t);
 
@@ -1569,7 +1569,7 @@ DEF_CMD(render_line_prev)
                /* need to use the boundary */
                if (!boundary)
                        return 1;
-               mark_to_mark(d, m, boundary);
+               mark_to_mark(m, boundary);
                mark_free(boundary);
                return 1;
        }
index 81c67cb9f6618ac53e6c89b87292efae7d408fd3..99b0eece4fd31ae7ff6e9c72a0563c54a9571904 100644 (file)
@@ -57,7 +57,7 @@ DEF_CMD(render_complete_line)
                    strncmp(ci2.str, cd->prefix, plen) == 0)
                        break;
                /* have a match, so move the mark to here. */
-               mark_to_mark(d, ci->mark, ci2.mark);
+               mark_to_mark(ci->mark, ci2.mark);
        }
        mark_free(ci2.mark);
        return 1;
@@ -72,8 +72,6 @@ DEF_CMD(render_complete_prev)
         */
        struct cmd_info ci2 = {0}, ci3 = {0};
        struct complete_data *cd = ci->home->data;
-       struct pane *dp = doc_get_pane(ci->home);
-       struct doc *d = dp->data;
        int plen;
        int ret;
 
@@ -118,7 +116,7 @@ DEF_CMD(render_complete_prev)
        if (ci2.mark != ci->mark) {
                if (ret > 0)
                        /* move ci->mark back to ci2.mark */
-                       mark_to_mark(d, ci->mark, ci2.mark);
+                       mark_to_mark(ci->mark, ci2.mark);
                mark_free(ci2.mark);
        }
        return ret;