]> git.pld-linux.org Git - packages/screen.git/blame - screen-bracketed_paste_mode.patch
Release 2 (by relup.sh)
[packages/screen.git] / screen-bracketed_paste_mode.patch
CommitLineData
8cce8322
AO
1diff -ruNp screen-4.8.0.orig/ansi.c screen-4.8.0/ansi.c
2--- screen-4.8.0.orig/ansi.c 2020-02-05 21:09:38.000000000 +0100
3+++ screen-4.8.0/ansi.c 2020-11-01 19:13:54.023721138 +0100
4@@ -195,6 +195,8 @@ register struct win *p;
5 p->w_insert = 0;
6 p->w_revvid = 0;
7 p->w_mouse = 0;
8+ p->w_bracketed = 0;
9+ p->w_cursorstyle = 0;
10 p->w_curinv = 0;
11 p->w_curvvis = 0;
12 p->w_autolf = 0;
13@@ -1346,6 +1348,12 @@ int c, intermediate;
14 break;
15 }
16 break;
17+ case ' ':
18+ if (c == 'q') {
19+ curr->w_cursorstyle = a1;
20+ LCursorStyle(&curr->w_layer, curr->w_cursorstyle);
21+ }
22+ break;
23 case '?':
24 for (a2 = 0; a2 < curr->w_NumArgs; a2++)
25 {
26@@ -1477,6 +1485,10 @@ int c, intermediate;
27 LExtMouseMode(&curr->w_layer, curr->w_extmouse);
28 break;
29 /* case 1015: UXRVT mouse mode rejected */
30+ case 2004: /* bracketed paste mode */
31+ curr->w_bracketed = i ? 1 : 0;
32+ LBracketedPasteMode(&curr->w_layer, curr->w_bracketed);
33+ break;
34 }
35 }
36 break;
37diff -ruNp screen-4.8.0.orig/display.c screen-4.8.0/display.c
38--- screen-4.8.0.orig/display.c 2020-02-05 21:09:38.000000000 +0100
39+++ screen-4.8.0/display.c 2020-11-01 19:20:51.953148789 +0100
40@@ -130,6 +130,8 @@ struct display TheDisplay;
41 int defobuflimit = OBUF_MAX;
42 int defnonblock = -1;
43 int defmousetrack = 0;
44+int defbracketed = 0;
45+int defcursorstyle = 0;
46 #ifdef AUTO_NUKE
47 int defautonuke = 0;
48 #endif
49@@ -192,6 +194,8 @@ DefRestore()
50 LCursorkeysMode(flayer, 0);
51 LCursorVisibility(flayer, 0);
52 LMouseMode(flayer, 0);
53+ LBracketedPasteMode(flayer, 0);
54+ LCursorStyle(flayer, 0);
55 LSetRendition(flayer, &mchar_null);
56 LSetFlow(flayer, nwin_default.flowflag & FLOW_NOW);
57 }
58@@ -323,6 +327,8 @@ struct mode *Mode;
59 D_user = *u;
60 D_processinput = ProcessInput;
61 D_mousetrack = defmousetrack;
62+ D_bracketed = defbracketed;
63+ D_cursorstyle = defcursorstyle;
64 return display;
65 }
66
67@@ -497,6 +503,8 @@ FinitTerm()
68 D_mousetrack = 0;
69 MouseMode(0);
70 ExtMouseMode(0);
71+ BracketedPasteMode(0);
72+ CursorStyle(0);
73 SetRendition(&mchar_null);
74 SetFlow(FLOW_NOW);
75 #ifdef MAPKEYS
76@@ -871,6 +879,42 @@ ExtMouseMode(mode)
77 }
78 }
79
80+void BracketedPasteMode(int mode)
81+{
82+ if (!display)
83+ return;
84+
85+ if (D_bracketed != mode) {
86+ if (!D_CXT)
87+ return;
88+ if (D_bracketed) {
89+ AddStr("\033[?2004l");
90+ }
91+ if (mode) {
92+ AddStr("\033[?2004h");
93+ }
94+ D_bracketed = mode;
95+ }
96+}
97+
98+void CursorStyle(int mode)
99+{
100+ char buf[32];
101+
102+ if (!display)
103+ return;
104+
105+ if (D_cursorstyle != mode) {
106+ if (!D_CXT)
107+ return;
108+ if (mode < 0)
109+ return;
110+ sprintf(buf, "\033[%d q", mode);
111+ AddStr(buf);
112+ D_cursorstyle = mode;
113+ }
114+}
115+
116 static int StrCost;
117
118 /* ARGSUSED */
119@@ -1297,6 +1341,8 @@ int cur_only;
120 CursorVisibility(0);
121 MouseMode(0);
122 ExtMouseMode(0);
123+ BracketedPasteMode(0);
124+ CursorStyle(0);
125 SetRendition(&mchar_null);
126 SetFlow(FLOW_NOW);
127
128@@ -3198,6 +3244,8 @@ NukePending()
129 int oldcurvis = D_curvis;
130 int oldmouse = D_mouse;
131 int oldextmouse = D_extmouse;
132+ int oldbracketed = D_bracketed;
133+ int oldcursorstyle = D_cursorstyle;
134
135 oldrend = D_rend;
136 len = D_obufp - D_obuf;
137@@ -3261,6 +3309,8 @@ NukePending()
138 CursorVisibility(oldcurvis);
139 MouseMode(oldmouse);
140 ExtMouseMode(oldextmouse);
141+ BracketedPasteMode(oldbracketed);
142+ CursorStyle(oldcursorstyle);
143 if (D_CWS)
144 {
145 debug("ResizeDisplay: using WS\n");
146diff -ruNp screen-4.8.0.orig/display.h screen-4.8.0/display.h
147--- screen-4.8.0.orig/display.h 2020-02-05 21:09:38.000000000 +0100
148+++ screen-4.8.0/display.h 2020-11-01 19:21:49.009918688 +0100
149@@ -111,6 +111,8 @@ struct display
150 struct mouse_parse d_mouse_parse; /* state of mouse code parsing */
151 int d_mousetrack; /* set when user wants to use mouse even when the window
152 does not */
153+ int d_bracketed; /* bracketed paste mode */
154+ int d_cursorstyle; /* cursor style */
155 #ifdef RXVT_OSC
a565711b 156 int d_xtermosc[5]; /* osc used */
8cce8322
AO
157 #endif
158@@ -198,6 +200,8 @@ extern struct display TheDisplay;
159
160 #define D_user DISPLAY(d_user)
161 #define D_username (DISPLAY(d_user) ? DISPLAY(d_user)->u_name : 0)
162+#define D_bracketed DISPLAY(d_bracketed)
163+#define D_cursorstyle DISPLAY(d_cursorstyle)
164 #define D_canvas DISPLAY(d_canvas)
165 #define D_cvlist DISPLAY(d_cvlist)
166 #define D_layout DISPLAY(d_layout)
167diff -ruNp screen-4.8.0.orig/extern.h screen-4.8.0/extern.h
168--- screen-4.8.0.orig/extern.h 2020-02-05 21:09:38.000000000 +0100
169+++ screen-4.8.0/extern.h 2020-11-01 19:22:46.794689164 +0100
170@@ -291,6 +291,8 @@ extern void ReverseVideo __P((int));
171 extern void CursorVisibility __P((int));
172 extern void MouseMode __P((int));
173 extern void ExtMouseMode __P((int));
174+extern void BracketedPasteMode (int);
175+extern void CursorStyle (int);
176 extern void SetFont __P((int));
177 extern void SetAttr __P((int));
178 extern void SetColor __P((int, int));
179@@ -452,6 +454,8 @@ extern void LKeypadMode __P((struct lay
180 extern void LCursorkeysMode __P((struct layer *, int));
181 extern void LMouseMode __P((struct layer *, int));
182 extern void LExtMouseMode __P((struct layer *, int));
183+extern void LBracketedPasteMode (struct layer *, int);
184+extern void LCursorStyle (struct layer *, int);
185 #if defined(USEVARARGS)
186 extern void LMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3)));
187 #else
188diff -ruNp screen-4.8.0.orig/layer.c screen-4.8.0/layer.c
189--- screen-4.8.0.orig/layer.c 2020-02-05 21:09:38.000000000 +0100
190+++ screen-4.8.0/layer.c 2020-11-01 19:23:49.096422746 +0100
191@@ -840,6 +840,32 @@ void LMouseMode(struct layer *l, int on)
192 }
193 }
194
195+void LBracketedPasteMode(struct layer *l, int on)
196+{
197+ struct canvas *cv;
198+ for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
199+ display = cv->c_display;
200+ if (D_blocked)
201+ continue;
202+ if (cv != D_forecv)
203+ continue;
204+ BracketedPasteMode(on);
205+ }
206+}
207+
208+void LCursorStyle(struct layer *l, int style)
209+{
210+ struct canvas *cv;
211+ for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
212+ display = cv->c_display;
213+ if (D_blocked)
214+ continue;
215+ if (cv != D_forecv)
216+ continue;
217+ CursorStyle(style);
218+ }
219+}
220+
221 void LClearAll(struct layer *l, int uself)
222 {
223 LClearArea(l, 0, 0, l->l_width - 1, l->l_height - 1, 0, uself);
224diff -ruNp screen-4.8.0.orig/window.c screen-4.8.0/window.c
225--- screen-4.8.0.orig/window.c 2020-02-05 21:09:38.000000000 +0100
226+++ screen-4.8.0/window.c 2020-11-01 19:25:26.665004901 +0100
227@@ -509,6 +509,8 @@ WinRestore()
228 CursorVisibility(fore->w_curinv ? -1 : fore->w_curvvis);
229 MouseMode(fore->w_mouse);
230 ExtMouseMode(fore->w_extmouse);
231+ BracketedPasteMode(fore->w_bracketed);
232+ CursorStyle(fore->w_cursorstyle);
233 }
234 }
235
236diff -ruNp screen-4.8.0.orig/window.h screen-4.8.0/window.h
237--- screen-4.8.0.orig/window.h 2020-02-05 21:09:38.000000000 +0100
238+++ screen-4.8.0/window.h 2020-11-01 19:26:23.990767940 +0100
239@@ -241,6 +241,8 @@ struct win
240 #endif
241 int w_mouse; /* mouse mode 0,9,1000 */
242 int w_extmouse; /* extended mouse mode 0,1006 */
243+ int w_bracketed; /* bracketed paste mode */
244+ int w_cursorstyle; /* cursor style */
245 #ifdef HAVE_BRAILLE
246 int w_bd_x, w_bd_y; /* Braille cursor position */
247 #endif
This page took 0.153524 seconds and 4 git commands to generate.