summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Carbonneaux2014-07-21 13:38:06 -0400
committerQuentin Carbonneaux2014-07-21 13:38:06 -0400
commit0ded73d3f053ccd3403c018cdbb20f9222aa6761 (patch)
treedd9218a6936ca1625b33d26f691dd054c8dca24e
parent6d1da4517ff54c09de38516b4f274fa9316bbf10 (diff)
fix undo in runev and prevent empty commits
-rw-r--r--edit.c7
-rw-r--r--exec.c3
2 files changed, 6 insertions, 4 deletions
diff --git a/edit.c b/edit.c
index 7800608..4b4e3ff 100644
--- a/edit.c
+++ b/edit.c
@@ -213,7 +213,8 @@ eb_ins_utf8(EBuf *eb, unsigned p0, unsigned char *data, int len)
void
eb_commit(EBuf *eb)
{
- log_commit(eb->undo);
+ if (eb->undo->type != Commit)
+ log_commit(eb->undo);
}
void
@@ -522,7 +523,7 @@ main() {
break;
case '!':
if (eb->undo->type != Commit)
- eb_commit(eb);
+ log_commit(eb->undo);
eb_undo(eb, 1, 0);
break;
case '?':
@@ -535,7 +536,7 @@ main() {
while (buf_get(&eb->b, i-1) != '\n');
break;
case 'c':
- eb_commit(eb);
+ log_commit(eb->undo);
break;
case '#':
break;
diff --git a/exec.c b/exec.c
index 3196c44..07f31cb 100644
--- a/exec.c
+++ b/exec.c
@@ -210,7 +210,7 @@ runev(int fd, int flag, void *data)
p = buf;
p0 = rn->p;
while ((dec = utf8_decode_rune(&r, p, n))) {
- buf_ins(&rn->eb->b, rn->p++, r);
+ eb_ins(rn->eb, rn->p++, r);
p += dec;
n -= dec;
}
@@ -219,6 +219,7 @@ runev(int fd, int flag, void *data)
memcpy(rn->in, p, n);
eb_setmark(rn->eb, SelBeg, p0);
eb_setmark(rn->eb, SelEnd, rn->p);
+ eb_commit(rn->eb);
win_redraw_frame();
}
if (flag & EWrite) {