Support bracketed paste mode of xterm in mcedit.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Egmont Koblinger 2013-10-01 13:58:37 +04:00 committed by Andrew Borodin
parent 8f35c90b94
commit 5b47861101
2 changed files with 16 additions and 2 deletions

View File

@ -3457,14 +3457,14 @@ edit_execute_cmd (WEdit * edit, unsigned long command, int char_for_insertion)
if (option_auto_para_formatting)
{
edit_double_newline (edit);
if (option_return_does_auto_indent)
if (option_return_does_auto_indent && !bracketed_pasting_in_progress)
edit_auto_indent (edit);
format_paragraph (edit, FALSE);
}
else
{
edit_insert (edit, '\n');
if (option_return_does_auto_indent)
if (option_return_does_auto_indent && !bracketed_pasting_in_progress)
edit_auto_indent (edit);
}
break;

View File

@ -1065,6 +1065,15 @@ edit_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, v
ret = edit_dialog_command_execute (h, command);
}
/*
* Due to the "end of bracket" escape the editor sees input with is_idle() == false
* (expects more characters) and hence doesn't yet refresh the screen, but then
* no further characters arrive (there's only an "end of bracket" which is swallowed
* by tty_get_event()), so you end up with a screen that's not refreshed after pasting.
* So let's trigger an IDLE signal.
*/
if (!is_idle ())
widget_want_idle (w, TRUE);
return ret;
}
@ -1080,6 +1089,11 @@ edit_dialog_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, v
edit_dlg_deinit ();
return MSG_HANDLED;
case MSG_IDLE:
widget_want_idle (w, FALSE);
edit_update_screen ((WEdit *) h->current->data);
return MSG_HANDLED;
default:
return dlg_default_callback (w, sender, msg, parm, data);
}