summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Zle/zle_main.c')
-rw-r--r--Src/Zle/zle_main.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c
index cec44c0ed..7ccfb686a 100644
--- a/Src/Zle/zle_main.c
+++ b/Src/Zle/zle_main.c
@@ -1119,7 +1119,7 @@ zlecore(void)
char *
zleread(char **lp, char **rp, int flags, int context, char *init, char *finish)
{
- char *s;
+ char *s, **bracket;
int old_errno = errno;
int tmout = getiparam("TMOUT");
@@ -1248,6 +1248,9 @@ zleread(char **lp, char **rp, int flags, int context, char *init, char *finish)
zlecallhook(init, NULL);
+ if ((bracket = getaparam("zle_bracketed_paste")) && arrlen(bracket) == 2)
+ fputs(*bracket, shout);
+
zrefresh();
zlecore();
@@ -1257,6 +1260,9 @@ zleread(char **lp, char **rp, int flags, int context, char *init, char *finish)
"ZLE_VARED_ABORTED" :
"ZLE_LINE_ABORTED", zlegetline(NULL, NULL));
+ if ((bracket = getaparam("zle_bracketed_paste")) && arrlen(bracket) == 2)
+ fputs(bracket[1], shout);
+
if (done && !exit_pending && !errflag)
zlecallhook(finish, NULL);
@@ -2004,6 +2010,8 @@ static struct features module_features = {
int
setup_(UNUSED(Module m))
{
+ char **bpaste;
+
/* Set up editor entry points */
zle_entry_ptr = zle_main_entry;
zle_load_state = 1;
@@ -2028,6 +2036,11 @@ setup_(UNUSED(Module m))
clwords = (char **) zshcalloc((clwsize = 16) * sizeof(char *));
+ bpaste = zshcalloc(3*sizeof(char *));
+ bpaste[0] = ztrdup("\033[?2004h");
+ bpaste[1] = ztrdup("\033[?2004l");
+ setaparam("zle_bracketed_paste", bpaste);
+
return 0;
}