- [ ] teach input to allow a repeat command to be registered so that e.g.
search/replace and do a bit of work, then ask to be called again.
input pboard_waican cancel this on suitable input.
-- [ ] Searching for \U0001f5d1 crashes, [\U0001f5d1] fails.
+- [X] Searching for \U0001f5d1 crashes, [\U0001f5d1] fails.
- [ ] ctrl-z in elc doesn't ask edlib to release the terminal
- [ ] use iconv(3) for char-set conversion
- [ ] "copy:get" can hang: xs_copy_get_func->gtk_clipboard_wait_for_text->
st->sets[st->set] = l;
} else {
/* We have a set, not empty. Store size */
- st->sets[st->set] = st->len;
+ st->sets[st->set] = st->len | (plane << 11);
}
}
st->set += st->len+1;
#ifdef DEBUG
#include <locale.h>
-static void printc(unsigned short c)
+static void printc(unsigned int c)
{
if (c <= ' ' || c >= 0x7f)
printf("\\x%02x", c);
int len = *set++;
int invert = len & 0x8000;
+ if (invert)
+ printf("^ ");
len &= 0x7fff;
if (len)
- printf("[%s", invert?"^":"");
+ printf("[");
while (len--) {
unsigned short class = *set++;
printf(":%d", class);
printf("]");
}
while ((len = *set++) != 0) {
+ unsigned int plane = (len & 0xF800) << 5;
+ len &= 0x7ff;
printf("%d:[", len);
while (len > 0) {
- printc(*set);
+ printc(*set | plane);
if (len > 1) {
printf(",");
set += 1;
- printc(set[0]);
+ printc(set[0] + plane);
len -= 1;
}
set += 1;
if (len)
printf(";");
}
- printf("]");
+ printf("]; ");
}
}
{ "spa\\hce", "spa\nce spa ce", 0, 7, 6},
// \s matches newline
{ "spa\\sce", "spa\nce spa ce", 0, 0, 6},
- { "x🗑x\U0001f5d1\\U0001f5d1x\U0001f5d1x", "x🗑x🗑🗑x🗑x", 0, 0, 8},
+ { "x🗑x\U0001f5d1\\U0001f5d1x[x\U0001f5d1y]x", "x🗑x🗑🗑x🗑x", 0, 0, 8},
};
static void run_tests(bool trace)