diff --git a/src/gui/curses/gui-curses-key.c b/src/gui/curses/gui-curses-key.c index a24a105dd..7c07ffd3e 100644 --- a/src/gui/curses/gui-curses-key.c +++ b/src/gui/curses/gui-curses-key.c @@ -578,19 +578,16 @@ gui_key_read_cb (const void *pointer, void *data, int fd) /* remove the code for end of bracketed paste (ESC[201~) */ gui_key_buffer_remove (pos, GUI_KEY_BRACKETED_PASTE_LENGTH); - /* remove final newline (if needed) */ - gui_key_paste_remove_newline (); - - /* replace tabs by spaces */ - gui_key_paste_replace_tabs (); - /* stop bracketed mode */ gui_key_paste_bracketed_timer_remove (); gui_key_paste_bracketed_stop (); /* if paste confirmation not displayed, flush buffer now */ if (!gui_key_paste_pending) + { + gui_key_paste_finish (); gui_key_flush (1); + } } } diff --git a/src/gui/gui-key.c b/src/gui/gui-key.c index 5455b6d13..30e30a8e0 100644 --- a/src/gui/gui-key.c +++ b/src/gui/gui-key.c @@ -2841,12 +2841,21 @@ gui_key_paste_replace_tabs () void gui_key_paste_start () { - gui_key_paste_remove_newline (); - gui_key_paste_replace_tabs (); gui_key_paste_pending = 1; gui_input_paste_pending_signal (); } +/* + * Finishes paste of text. Does necessary modifications before flush of text. + */ + +void +gui_key_paste_finish () +{ + gui_key_paste_remove_newline (); + gui_key_paste_replace_tabs (); +} + /* * Returns real number of lines in buffer. * @@ -3008,6 +3017,7 @@ gui_key_paste_accept () gui_key_paste_pending = 0; gui_input_paste_pending_signal (); + gui_key_paste_finish (); } /* diff --git a/src/gui/gui-key.h b/src/gui/gui-key.h index 4684c8301..e767c6150 100644 --- a/src/gui/gui-key.h +++ b/src/gui/gui-key.h @@ -135,6 +135,7 @@ extern void gui_key_buffer_remove (int index, int number); extern void gui_key_paste_remove_newline (); extern void gui_key_paste_replace_tabs (); extern void gui_key_paste_start (); +extern void gui_key_paste_finish (); extern int gui_key_get_paste_lines (); extern int gui_key_paste_check (int bracketed_paste); extern void gui_key_paste_bracketed_timer_remove ();