diff options
-rw-r--r-- | PKGBUILD | 13 | ||||
-rw-r--r-- | fullwidth-emoji.patch | 62 |
2 files changed, 42 insertions, 33 deletions
@@ -1,26 +1,27 @@ -# $Id: PKGBUILD 161489 2016-02-13 22:22:08Z jelle $ +# $Id: PKGBUILD 161489 2016-04-05 22:22:08Z jelle $ # Maintainer: Ray Song <i@maskray.me> pkgname=vte3-ng-fullwidth-emoji -_basever=0.42.4 +_basever=0.44.0 pkgver=$_basever.a pkgrel=1 pkgdesc="Enhanced Virtual Terminal Emulator widget for use with GTK3 (patched with support for fullwidth emoji)" arch=('i686' 'x86_64') license=('LGPL') options=('!emptydirs') -depends=('gtk3' 'vte-common') +depends=('gtk3' 'vte-common' 'pcre2') makedepends=('intltool' 'gobject-introspection' 'gtk3' 'vala' 'gtk-doc' 'gperf') url="https://github.com/thestinger/vte-ng" source=(https://github.com/thestinger/vte-ng/archive/$pkgver.tar.gz fullwidth-emoji.patch) -sha256sums=('97f1572b1080614b9dcf261a8abe4c7bfd840f7dc91e9bb29ffe310525b28443' - 'dfa3510b1c0839a337e1c12faa10b1a3049f0e44881d4ff2496eb0a3ad4335e1') +sha256sums=('bfa4f4148a63e8b730ab272792f55d03c8afa632bb5c28a440e1a5a8134c4b1b' + '07a07525516576c34469a1ca9c554c740bc7fa89055a00002216fd6f89684785') provides=(vte3=$_basever vte3-select-text=$_basever vte3-ng) conflicts=(vte3 vte3-select-text vte3-ng) replaces=(vte3-select-text vte3-ng) prepare() { - patch -p1 < ../fullwidth-emoji.patch + cd "vte-ng-$pkgver" + patch -p1 < $srcdir/fullwidth-emoji.patch } build() { diff --git a/fullwidth-emoji.patch b/fullwidth-emoji.patch index 15b28e9e5454..89ba62d84c32 100644 --- a/fullwidth-emoji.patch +++ b/fullwidth-emoji.patch @@ -1,5 +1,5 @@ ---- a/vte-ng-0.42.4.a/src/vte.cc 2016-03-21 19:49:00.390775386 +0800 -+++ b/vte-ng-0.42.4.a/src/vte.cc 2016-03-21 19:50:22.627904117 +0800 +--- a/src/vte.cc 2016-03-21 19:49:00.390775386 +0800 ++++ b/src/vte.cc 2016-03-21 19:50:22.627904117 +0800 @@ -206,6 +206,11 @@ return 0; if (G_UNLIKELY (g_unichar_iswide (c))) @@ -12,33 +12,41 @@ if (G_LIKELY (utf8_ambiguous_width == 1)) return 1; if (G_UNLIKELY (g_unichar_iswide_cjk (c))) ---- a/vte-ng-0.42.4.a/src/vteseq.cc 2016-03-21 22:23:38.886288772 +0800 -+++ b/vte-ng-0.42.4.a/src/vteseq.cc 2016-03-21 23:02:19.447553445 +0800 -@@ -1533,12 +1533,23 @@ - static void - vte_sequence_handler_backspace (VteTerminal *terminal, GValueArray *params) +--- a/src/vteseq.cc 2016-04-05 10:56:49.875097322 +0800 ++++ b/src/vteseq.cc 2016-04-05 10:56:39.522122540 +0800 +@@ -25,6 +25,7 @@ + #ifdef HAVE_SYS_SYSLIMITS_H + #include <sys/syslimits.h> + #endif ++#include <termios.h> + + #include <glib.h> + +@@ -1589,12 +1590,23 @@ + void + VteTerminalPrivate::seq_backspace() { -+ struct termios tio; - _vte_terminal_ensure_cursor_is_onscreen(terminal); -- -- if (terminal->pvt->screen->cursor.col > 0) { -- /* There's room to move left, so do so. */ -+ g_assert(tcgetattr(vte_pty_get_fd(terminal->pvt->pty), &tio) == 0); -+ if (tio.c_lflag & ICANON && tio.c_iflag & IUTF8) { -+ VteRowData *rowdata = _vte_terminal_ensure_row(terminal); -+ int col = terminal->pvt->screen->cursor.col; -+ if (col == 0) -+ ; -+ else if (col > rowdata->len) -+ col--; -+ else -+ col = MAX(col - rowdata->cells[col-1].attr.columns, 0); -+ terminal->pvt->screen->cursor.col = col; -+ } else if (terminal->pvt->screen->cursor.col > 0) { -+ /* There's room to move left, so do so. */ - terminal->pvt->screen->cursor.col--; +- ensure_cursor_is_onscreen(); ++ ensure_cursor_is_onscreen(); + +- if (m_screen->cursor.col > 0) { ++ struct termios tio; ++ g_assert(tcgetattr(vte_pty_get_fd(m_pty), &tio) == 0); ++ if (tio.c_lflag & ICANON && tio.c_iflag & IUTF8) { ++ VteRowData *rowdata = ensure_row(); ++ int col = m_screen->cursor.col; ++ if (col == 0) ++ ; ++ else if (col > rowdata->len) ++ col--; ++ else ++ col = MAX(col - rowdata->cells[col-1].attr.columns, 0); ++ m_screen->cursor.col = col; ++ } else if (m_screen->cursor.col > 0) + /* There's room to move left, so do so. */ +- m_screen->cursor.col--; - } -+ } ++ m_screen->cursor.col--; } /* Cursor left N columns. */ |