aboutsummaryrefslogtreecommitdiff
path: root/vis-prompt.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-01-16 15:00:09 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-01-16 15:00:09 +0100
commitd58c355d2fff2cf78af1ac1cdd4a6299b16aba43 (patch)
tree8fff7afedfac05a5d578317a3f49def1f15f4d05 /vis-prompt.c
parentd866258cdb765ab0b377d4bc3f7c447f184e1dab (diff)
downloadvis-d58c355d2fff2cf78af1ac1cdd4a6299b16aba43.tar.gz
vis-d58c355d2fff2cf78af1ac1cdd4a6299b16aba43.tar.xz
vis: move selected prompt entry to end of the file
Close #70
Diffstat (limited to 'vis-prompt.c')
-rw-r--r--vis-prompt.c8
1 files changed, 7 insertions, 1 deletions
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];