diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-01-16 15:00:09 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-01-16 15:00:09 +0100 |
| commit | d58c355d2fff2cf78af1ac1cdd4a6299b16aba43 (patch) | |
| tree | 8fff7afedfac05a5d578317a3f49def1f15f4d05 | |
| parent | d866258cdb765ab0b377d4bc3f7c447f184e1dab (diff) | |
| download | vis-d58c355d2fff2cf78af1ac1cdd4a6299b16aba43.tar.gz vis-d58c355d2fff2cf78af1ac1cdd4a6299b16aba43.tar.xz | |
vis: move selected prompt entry to end of the file
Close #70
| -rw-r--r-- | vis-cmds.c | 2 | ||||
| -rw-r--r-- | vis-prompt.c | 8 |
2 files changed, 8 insertions, 2 deletions
@@ -1158,7 +1158,7 @@ bool vis_cmd(Vis *vis, const char *cmdline) { char *s = param; const char *argv[32] = { name }; for (int i = 1; i < LENGTH(argv); i++) { - while (s && *s && *s == ' ') + while (s && isspace((unsigned char)*s)) s++; if (s && !*s) s = NULL; diff --git a/vis-prompt.c b/vis-prompt.c index ad9c9d5..3b8717c 100644 --- a/vis-prompt.c +++ b/vis-prompt.c @@ -52,7 +52,7 @@ static const char *prompt_enter(Vis *vis, const char *keys, const Arg *arg) { Filerange range = view_selection_get(view); if (!text_range_valid(&range)) - range = text_object_line_inner(txt, view_cursor_get(view)); + range = text_object_line(txt, view_cursor_get(view)); if (text_range_valid(&range)) cmd = text_bytes_alloc0(txt, range.start, text_range_size(&range)); @@ -64,9 +64,15 @@ static const char *prompt_enter(Vis *vis, const char *keys, const Arg *arg) { return keys; } + bool lastline = (range.end == text_size(txt)); + prompt_restore(prompt); if (vis_prompt_cmd(vis, cmd)) { prompt_hide(prompt); + if (!lastline) { + text_delete(txt, range.start, text_range_size(&range)); + text_insert(txt, text_size(txt), cmd, strlen(cmd)); + } } else { vis->win = prompt; vis->mode = &vis_modes[VIS_MODE_INSERT]; |
