Date: Thursday, February 22, 2018 @ 22:20:54
  Author: svenstaro
Revision: 297128

upgpkg: neovim 0.2.2-3

Try to fix mouse wheel not working (FS#57599)

Added:
  neovim/trunk/3a5721e91ba890718319213154ba6964c9dca4d2.patch
Modified:
  neovim/trunk/PKGBUILD

------------------------------------------------+
 3a5721e91ba890718319213154ba6964c9dca4d2.patch |   41 +++++++++++++++++++++++
 PKGBUILD                                       |   14 ++++++-
 2 files changed, 52 insertions(+), 3 deletions(-)

Added: 3a5721e91ba890718319213154ba6964c9dca4d2.patch
===================================================================
--- 3a5721e91ba890718319213154ba6964c9dca4d2.patch                              
(rev 0)
+++ 3a5721e91ba890718319213154ba6964c9dca4d2.patch      2018-02-22 22:20:54 UTC 
(rev 297128)
@@ -0,0 +1,41 @@
+From 3a5721e91ba890718319213154ba6964c9dca4d2 Mon Sep 17 00:00:00 2001
+From: Chih-Hsuan Yen <yan12...@gmail.com>
+Date: Mon, 29 Jan 2018 22:47:25 +0800
+Subject: [PATCH] tui: libtermkey: force CSI driver for mouse input #7948
+
+Fixes #7932
+
+Nvim (tui.c) always enables SGR mouse (TUIData.unibi_ext.enable_mouse).
+But if libtermkey sees key_mouse (kmous) in terminfo its terminfo driver
+(driver-ti.c) will be activated, which by accident only supports X10
+protocol. The libtermkey CSI driver (driver-csi.c), in contrast,
+supports SGR.
+
+We can force libtermkey to ignore the terminfo key_mouse entry by
+returning NULL in the tui_tk_ti_getstr hook. That forces the CSI driver.
+
+What is the effect of returning NULL from `tui_tk_ti_getstr()`?
+- libtermkey `driver-ti.c:load_terminfo()` skips the entry.
+- `termkey.c:peekkey()` iterates through all drivers, it finds
+  `TERMKEY_RES_NONE` for the ti driver and falls back to the CSI driver.
+---
+ src/nvim/tui/tui.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
+index 2dfe7faa04c..70e19e1d932 100644
+--- a/src/nvim/tui/tui.c
++++ b/src/nvim/tui/tui.c
+@@ -1813,6 +1813,12 @@ static const char *tui_tk_ti_getstr(const char *name, 
const char *value,
+     if (value != NULL && strequal(stty_erase, value)) {
+       return stty_erase[0] == DEL ? CTRL_H_STR : DEL_STR;
+     }
++  } else if (strequal(name, "key_mouse")) {
++    DLOG("libtermkey:kmous=%s", value);
++    // If key_mouse is found, libtermkey uses its terminfo driver 
(driver-ti.c)
++    // for mouse input, which by accident only supports X10 protocol.
++    // Force libtermkey to fallback to its CSI driver (driver-csi.c). #7948
++    return NULL;
+   }
+ 
+   return value;

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2018-02-22 22:14:47 UTC (rev 297127)
+++ PKGBUILD    2018-02-22 22:20:54 UTC (rev 297128)
@@ -4,7 +4,7 @@
 
 pkgname=neovim
 pkgver=0.2.2
-pkgrel=2
+pkgrel=3
 pkgdesc='Fork of Vim aiming to improve user experience, plugins, and GUIs'
 arch=('x86_64')
 url='https://neovim.io'
@@ -15,10 +15,18 @@
             'python-neovim: for Python 3 plugin support (see :help python)'
             'xclip: for clipboard support (or xsel) (see :help clipboard)'
             'xsel: for clipboard support (or xclip) (see :help clipboard)')
-source=("https://github.com/neovim/neovim/archive/v${pkgver}.tar.gz";)
-sha512sums=('5609defe86ac98356f1b9ae9adc6049bb4df920a9a2ae3104f761d52d4dd54cbc84d2596231595dd9b0aa97201fef2121e6c5c86a19267ab6b871dbf4b568209')
+source=(https://github.com/neovim/neovim/archive/v${pkgver}.tar.gz
+        3a5721e91ba890718319213154ba6964c9dca4d2.patch)
+sha512sums=('5609defe86ac98356f1b9ae9adc6049bb4df920a9a2ae3104f761d52d4dd54cbc84d2596231595dd9b0aa97201fef2121e6c5c86a19267ab6b871dbf4b568209'
+            
'f3dabd1bbe195a45a10efacfc4bb78007e32b91c32c01e42f8045c6e39d7a5f7e20eea1c4407c313d7ec0bb6d951a0b4e10b402f50d2022a5b4770ec62594a8a')
 install=neovim.install
 
+prepare() {
+  cd "${srcdir}/neovim-${pkgver}"
+
+  patch -Np1 < "${srcdir}/3a5721e91ba890718319213154ba6964c9dca4d2.patch"
+}
+
 build() {
   mkdir -p "${srcdir}/build"
   cd "${srcdir}/build"

Reply via email to