- [ ] selection-menu sub-menu for UPPER lower Caps ??
- [ ] selection-menu item for text-fill
- [ ] selection-menu item for spell-check ??
+- [ ] notmuch - capture errors about multiple Subject lines and
+ display them better.
### Small
Core features
-------------
+- [ ] universal times_up tests might cause Close_mark or similar
+ not to be called. How can we avoid that?
- [ ] If a pane wants to block mouse events from parents, as lib-view
does, it shouldn't need to catch all the combinations, or it
should be much easier
I need a simple way to intercept any change.
- [X] switch-buffer in pop-up window - shouldn't kill the popup (does it?)
- [X] explicitly guard against infinite loops in consistency checks
-- [ ] skip consistency checks after several with no stop for input.
+- [X] skip consistency checks after several with no stop for input.
- [ ] unwanted docs too easily appear high in recent-list - *Output*
- [ ] design a way for a keystroke to interrupt a long-running function.
- [ ] extend Draw:measure protocol to allow constant-width-fonts to
int max = 1000;
static bool warned = False;
+ if (pane_no_consistency(safe_cast container_of(d, struct pane, doc)))
+ return;
+
hlist_for_each_entry(m, &d->marks, all) {
ASSERT(m->seq >= seq);
ASSERT(&m->owner->doc == d);
if (p->timestamp <= 1)
p->timestamp = 2;
}
+
+DEF_CB(clear_consistency)
+{
+ ci->focus->consistency_checks = 0;
+ return 1;
+}
+
+bool pane_no_consistency(struct pane *p safe)
+{
+ p->consistency_checks += 1;
+ if (p->consistency_checks == 50)
+ call_comm("event:on-idle", p, &clear_consistency, 2);
+ return p->consistency_checks > 60;
+}
short damaged;
short alloc_size;
+ short consistency_checks;
int marks;
int refs;
};
};
+bool pane_no_consistency(struct pane *p safe);
bool pane_too_long(struct pane *p safe, unsigned int msec);
void pane_set_time(struct pane *p safe);
static inline void pane_end_time(struct pane *p safe)
struct doc *d = &t->doc;
int loops = 10000;
+ if (pane_no_consistency(safe_cast container_of(d, struct pane, doc)))
+ return;
+
list_for_each_entry(c, &t->text, lst) {
check_allocated(t, c->txt, c->end);
if (c->start >= c->end)