]> git.pld-linux.org Git - packages/screen.git/commitdiff
- backport of bracketed paste mode support to 4.8.0 auto/th/screen-4.8.0-2
authorAdam Osuchowski <adwol@pld-linux.org>
Sun, 1 Nov 2020 18:33:11 +0000 (19:33 +0100)
committerAdam Osuchowski <adwol@pld-linux.org>
Sun, 1 Nov 2020 18:33:11 +0000 (19:33 +0100)
- rel 2

screen-bracketed_paste_mode.patch [new file with mode: 0644]
screen.spec

diff --git a/screen-bracketed_paste_mode.patch b/screen-bracketed_paste_mode.patch
new file mode 100644 (file)
index 0000000..6d1bed6
--- /dev/null
@@ -0,0 +1,247 @@
+diff -ruNp screen-4.8.0.orig/ansi.c screen-4.8.0/ansi.c
+--- screen-4.8.0.orig/ansi.c   2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/ansi.c        2020-11-01 19:13:54.023721138 +0100
+@@ -195,6 +195,8 @@ register struct win *p;
+   p->w_insert = 0;
+   p->w_revvid = 0;
+   p->w_mouse = 0;
++  p->w_bracketed = 0;
++  p->w_cursorstyle = 0;
+   p->w_curinv = 0;
+   p->w_curvvis = 0;
+   p->w_autolf = 0;
+@@ -1346,6 +1348,12 @@ int c, intermediate;
+         break;
+       }
+       break;
++    case ' ':
++      if (c == 'q') {
++        curr->w_cursorstyle = a1;
++        LCursorStyle(&curr->w_layer, curr->w_cursorstyle);
++      }
++      break;
+     case '?':
+       for (a2 = 0; a2 < curr->w_NumArgs; a2++)
+       {
+@@ -1477,6 +1485,10 @@ int c, intermediate;
+               LExtMouseMode(&curr->w_layer, curr->w_extmouse);
+                 break;
+        /* case 1015:     UXRVT mouse mode rejected */
++            case 2004:  /* bracketed paste mode */
++                curr->w_bracketed = i ? 1 : 0;
++                LBracketedPasteMode(&curr->w_layer, curr->w_bracketed);
++                break;
+           }
+       }
+       break;
+diff -ruNp screen-4.8.0.orig/display.c screen-4.8.0/display.c
+--- screen-4.8.0.orig/display.c        2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/display.c     2020-11-01 19:20:51.953148789 +0100
+@@ -130,6 +130,8 @@ struct display TheDisplay;
+ int defobuflimit = OBUF_MAX;
+ int defnonblock = -1;
+ int defmousetrack = 0;
++int defbracketed = 0;
++int defcursorstyle = 0;
+ #ifdef AUTO_NUKE
+ int defautonuke = 0;
+ #endif
+@@ -192,6 +194,8 @@ DefRestore()
+   LCursorkeysMode(flayer, 0);
+   LCursorVisibility(flayer, 0);
+   LMouseMode(flayer, 0);
++  LBracketedPasteMode(flayer, 0);
++  LCursorStyle(flayer, 0);
+   LSetRendition(flayer, &mchar_null);
+   LSetFlow(flayer, nwin_default.flowflag & FLOW_NOW);
+ }
+@@ -323,6 +327,8 @@ struct mode *Mode;
+   D_user = *u;
+   D_processinput = ProcessInput;
+   D_mousetrack = defmousetrack;
++  D_bracketed = defbracketed;
++  D_cursorstyle = defcursorstyle;
+   return display;
+ }
+@@ -497,6 +503,8 @@ FinitTerm()
+       D_mousetrack = 0;
+       MouseMode(0);
+       ExtMouseMode(0);
++      BracketedPasteMode(0);
++      CursorStyle(0);
+       SetRendition(&mchar_null);
+       SetFlow(FLOW_NOW);
+ #ifdef MAPKEYS
+@@ -871,6 +879,42 @@ ExtMouseMode(mode)
+     }
+ }
++void BracketedPasteMode(int mode)
++{
++    if (!display)
++        return;
++
++    if (D_bracketed != mode) {
++        if (!D_CXT)
++            return;
++        if (D_bracketed) {
++            AddStr("\033[?2004l");
++        }
++        if (mode) {
++            AddStr("\033[?2004h");
++        }
++        D_bracketed = mode;
++    }
++}
++
++void CursorStyle(int mode)
++{
++    char buf[32];
++
++    if (!display)
++        return;
++
++    if (D_cursorstyle != mode) {
++        if (!D_CXT)
++            return;
++        if (mode < 0)
++            return;
++        sprintf(buf, "\033[%d q", mode);
++        AddStr(buf);
++        D_cursorstyle = mode;
++    }
++}
++
+ static int StrCost;
+ /* ARGSUSED */
+@@ -1297,6 +1341,8 @@ int cur_only;
+   CursorVisibility(0);
+   MouseMode(0);
+   ExtMouseMode(0);
++  BracketedPasteMode(0);
++  CursorStyle(0);
+   SetRendition(&mchar_null);
+   SetFlow(FLOW_NOW);
+@@ -3198,6 +3244,8 @@ NukePending()
+   int oldcurvis = D_curvis;
+   int oldmouse = D_mouse;
+   int oldextmouse = D_extmouse;
++  int oldbracketed = D_bracketed;
++  int oldcursorstyle = D_cursorstyle;
+   oldrend = D_rend;
+   len = D_obufp - D_obuf;
+@@ -3261,6 +3309,8 @@ NukePending()
+   CursorVisibility(oldcurvis);
+   MouseMode(oldmouse);
+   ExtMouseMode(oldextmouse);
++  BracketedPasteMode(oldbracketed);
++  CursorStyle(oldcursorstyle);
+   if (D_CWS)
+     {
+       debug("ResizeDisplay: using WS\n");
+diff -ruNp screen-4.8.0.orig/display.h screen-4.8.0/display.h
+--- screen-4.8.0.orig/display.h        2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/display.h     2020-11-01 19:21:49.009918688 +0100
+@@ -111,6 +111,8 @@ struct display
+   struct mouse_parse d_mouse_parse;           /* state of mouse code parsing */
+   int d_mousetrack;           /* set when user wants to use mouse even when the window
+                                  does not */
++  int   d_bracketed;          /* bracketed paste mode */
++  int   d_cursorstyle;                /* cursor style */
+ #ifdef RXVT_OSC
+   int   d_xtermosc[4];                /* osc used */
+ #endif
+@@ -198,6 +200,8 @@ extern struct display TheDisplay;
+ #define D_user                DISPLAY(d_user)
+ #define D_username    (DISPLAY(d_user) ? DISPLAY(d_user)->u_name : 0)
++#define D_bracketed   DISPLAY(d_bracketed)
++#define D_cursorstyle DISPLAY(d_cursorstyle)
+ #define D_canvas      DISPLAY(d_canvas)
+ #define D_cvlist      DISPLAY(d_cvlist)
+ #define D_layout      DISPLAY(d_layout)
+diff -ruNp screen-4.8.0.orig/extern.h screen-4.8.0/extern.h
+--- screen-4.8.0.orig/extern.h 2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/extern.h      2020-11-01 19:22:46.794689164 +0100
+@@ -291,6 +291,8 @@ extern void  ReverseVideo __P((int));
+ extern void  CursorVisibility __P((int));
+ extern void  MouseMode __P((int));
+ extern void  ExtMouseMode __P((int));
++extern void  BracketedPasteMode (int);
++extern void  CursorStyle (int);
+ extern void  SetFont __P((int));
+ extern void  SetAttr __P((int));
+ extern void  SetColor __P((int, int));
+@@ -452,6 +454,8 @@ extern void  LKeypadMode __P((struct lay
+ extern void  LCursorkeysMode __P((struct layer *, int));
+ extern void  LMouseMode __P((struct layer *, int));
+ extern void  LExtMouseMode __P((struct layer *, int));
++extern void  LBracketedPasteMode (struct layer *, int);
++extern void  LCursorStyle (struct layer *, int);
+ #if defined(USEVARARGS)
+ extern void  LMsg __P((int, const char *, ...)) __attribute__((format(printf, 2, 3)));
+ #else
+diff -ruNp screen-4.8.0.orig/layer.c screen-4.8.0/layer.c
+--- screen-4.8.0.orig/layer.c  2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/layer.c       2020-11-01 19:23:49.096422746 +0100
+@@ -840,6 +840,32 @@ void LMouseMode(struct layer *l, int on)
+   }
+ }
++void LBracketedPasteMode(struct layer *l, int on)
++{
++    struct canvas *cv;
++    for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
++        display = cv->c_display;
++        if (D_blocked)
++            continue;
++        if (cv != D_forecv)
++            continue;
++        BracketedPasteMode(on);
++    }
++}
++
++void LCursorStyle(struct layer *l, int style)
++{
++    struct canvas *cv;
++    for (cv = l->l_cvlist; cv; cv = cv->c_lnext) {
++        display = cv->c_display;
++        if (D_blocked)
++            continue;
++        if (cv != D_forecv)
++            continue;
++        CursorStyle(style);
++    }
++}
++
+ void LClearAll(struct layer *l, int uself)
+ {
+   LClearArea(l, 0, 0, l->l_width - 1, l->l_height - 1, 0, uself);
+diff -ruNp screen-4.8.0.orig/window.c screen-4.8.0/window.c
+--- screen-4.8.0.orig/window.c 2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/window.c      2020-11-01 19:25:26.665004901 +0100
+@@ -509,6 +509,8 @@ WinRestore()
+       CursorVisibility(fore->w_curinv ? -1 : fore->w_curvvis);
+       MouseMode(fore->w_mouse);
+       ExtMouseMode(fore->w_extmouse);
++      BracketedPasteMode(fore->w_bracketed);
++      CursorStyle(fore->w_cursorstyle);
+     }
+ }
+diff -ruNp screen-4.8.0.orig/window.h screen-4.8.0/window.h
+--- screen-4.8.0.orig/window.h 2020-02-05 21:09:38.000000000 +0100
++++ screen-4.8.0/window.h      2020-11-01 19:26:23.990767940 +0100
+@@ -241,6 +241,8 @@ struct win
+ #endif
+   int    w_mouse;             /* mouse mode 0,9,1000 */
+   int    w_extmouse;          /* extended mouse mode 0,1006 */
++  int  w_bracketed;           /* bracketed paste mode */
++  int  w_cursorstyle;         /* cursor style */
+ #ifdef HAVE_BRAILLE
+   int  w_bd_x, w_bd_y;        /* Braille cursor position */
+ #endif
index 9a8452c7daf4e70fdbb34050ac6201ecc2055650..bc6f06d88b12b16a94f49b3e9b485ed6c2fe65ed 100644 (file)
@@ -11,7 +11,7 @@ Summary(tr.UTF-8):    Bir uçbirimde birden fazla oturumu düzenler
 Summary(uk.UTF-8):     Менеджер екрану, що підтримує кілька логінів з одного терміналу
 Name:          screen
 Version:       4.8.0
-Release:       1
+Release:       2
 License:       GPL v3+
 Group:         Applications/Terminal
 Source0:       https://ftp.gnu.org/gnu/screen/%{name}-%{version}.tar.gz
@@ -33,6 +33,7 @@ Patch15:      %{name}-statusline-encoding.patch
 Patch17:       %{name}-E3.patch
 Patch18:       %{name}-4.1.0-suppress_remap.patch
 Patch22:       52fix_%{name}_utf8_nfd.patch
+Patch23:       %{name}-bracketed_paste_mode.patch
 URL:           http://www.gnu.org/software/screen/
 BuildRequires: autoconf >= 2.60
 BuildRequires: automake
@@ -114,6 +115,7 @@ Screen корисний користувачам, які заходять на 
 %patch17 -p2
 %patch18 -p1
 %patch22 -p1
+%patch23 -p1
 
 %build
 %{__aclocal}
This page took 0.110204 seconds and 4 git commands to generate.