]> git.pld-linux.org Git - packages/screen.git/blob - screen-bracketed_paste_mode.patch
6d1bed6ecc0bfaf85522dce9287edfb42f74fe5e
[packages/screen.git] / screen-bracketed_paste_mode.patch
1 diff -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;
37 diff -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");
146 diff -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
156    int   d_xtermosc[4];         /* osc used */
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)
167 diff -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
188 diff -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);
224 diff -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  
236 diff -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.0763 seconds and 2 git commands to generate.