diff options
| author | Quentin Carbonneaux | 2014-07-21 13:38:06 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux | 2014-07-21 13:38:06 -0400 |
| commit | 0ded73d3f053ccd3403c018cdbb20f9222aa6761 (patch) | |
| tree | dd9218a6936ca1625b33d26f691dd054c8dca24e | |
| parent | 6d1da4517ff54c09de38516b4f274fa9316bbf10 (diff) | |
fix undo in runev and prevent empty commits
| -rw-r--r-- | edit.c | 7 | ||||
| -rw-r--r-- | exec.c | 3 |
2 files changed, 6 insertions, 4 deletions
@@ -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; @@ -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) { |
