Skip to content

Commit

Permalink
app-shells/fzy: add snapshot with working utf-8
Browse files Browse the repository at this point in the history
Package-Manager: Portage-2.3.41, Repoman-2.3.9
  • Loading branch information
gyakovlev committed Jul 1, 2018
1 parent 13d5af8 commit c38398c
Show file tree
Hide file tree
Showing 3 changed files with 130 additions and 0 deletions.
1 change: 1 addition & 0 deletions app-shells/fzy/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST fzy-0.9.tar.gz 42992 BLAKE2B ebc7e73e0387101da65896a4108705048bb72b01261ea86a0abeaee22fe4517ac54351d508bb79419b05a15aa9c93c5d815c34d15353d01c02381e5d342e75b7 SHA512 71a44bc3bbef3a2d82476a69b5c9e28753e760bbb8d453a9e44b57f34a79dd8ebcd510a869dfeae95f522ba6ccb4b8f10f79c081ce6bc6cfae9a41f4071fefc0
DIST fzy-2697c02618d908e5bdcae93ab4815b04c49bd25e.tar.gz 45814 BLAKE2B bb4dbc668dd93c71d16c3affdaf148212e3fbdef27110314b8145fd4a20991bb368f7aef1d1f7bd147afa23900800c468b4d9b2999de2226ce9a312a02d344b4 SHA512 34520dc3b4bcbad3479cce1fbeb014b1851edc1b1f4460c21a645297bf9ec01a1483f108a562f6ac6d3c0def97427740b74e9a3b83c85223d14ac3e1586e3d8e
89 changes: 89 additions & 0 deletions app-shells/fzy/files/fzy-add-utf-8-support.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
From 8dd7a9f49c2b65f28025902106f364ff11d4170d Mon Sep 17 00:00:00 2001
From: syrrim <[email protected]>
Date: Mon, 23 Apr 2018 01:25:48 -0400
Subject: [PATCH] add utf-8 support to input, fixes #21

- non ascii bytes won't be ignored
- one can seek over and delete whole utf-8 codepoints at a time
- the cursor will be positioned properly around double width chars
---
src/tty_interface.c | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)

diff --git a/src/tty_interface.c b/src/tty_interface.c
index a7d506e..35f2919 100644
--- a/src/tty_interface.c
+++ b/src/tty_interface.c
@@ -7,6 +7,14 @@
#include "tty_interface.h"
#include "../config.h"

+static int isprint_unicode(char c){
+ return isprint(c) || c & (1<<7);
+}
+
+static int is_boundary(char c) {
+ return ~c & (1<<7) || c & (1<<6);
+}
+
static void clear(tty_interface_t *state) {
tty_t *tty = state->tty;

@@ -95,7 +103,10 @@ static void draw(tty_interface_t *state) {
tty_moveup(tty, num_lines);
}

- tty_setcol(tty, strlen(options->prompt) + state->cursor);
+ tty_setcol(tty, 0);
+ fputs(options->prompt, tty->fout);
+ for(size_t i=0; i<state->cursor; i++)
+ fputc(state->search[i], tty->fout);
tty_flush(tty);
}

@@ -138,9 +149,13 @@ static void action_del_char(tty_interface_t *state) {
if(state->cursor == 0) {
return;
}
+ size_t original_cursor = state->cursor;

state->cursor--;
- memmove(&state->search[state->cursor], &state->search[state->cursor + 1], length - state->cursor);
+ while(!is_boundary(state->search[state->cursor]) && state->cursor)
+ state->cursor--;
+
+ memmove(&state->search[state->cursor], &state->search[original_cursor], length - original_cursor + 1);
}
}

@@ -178,13 +193,19 @@ static void action_next(tty_interface_t *state) {
}

static void action_left(tty_interface_t *state) {
- if (state->cursor > 0)
+ if (state->cursor > 0){
state->cursor--;
+ while(!is_boundary(state->search[state->cursor]) && state->cursor)
+ state->cursor--;
+ }
}

static void action_right(tty_interface_t *state) {
- if (state->cursor < strlen(state->search))
+ if (state->cursor < strlen(state->search)){
state->cursor++;
+ while(!is_boundary(state->search[state->cursor]))
+ state->cursor++;
+ }
}

static void action_beginning(tty_interface_t *state) {
@@ -315,7 +336,7 @@ static void handle_input(tty_interface_t *state, const char *s) {

/* No matching keybinding, add to search */
for (int i = 0; input[i]; i++)
- if (isprint(input[i]))
+ if (isprint_unicode(input[i]))
append_search(state, input[i]);

/* We have processed the input, so clear it */
40 changes: 40 additions & 0 deletions app-shells/fzy/fzy-0.10_pre20180618.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

inherit savedconfig toolchain-funcs

EGIT_COMMIT="2697c02618d908e5bdcae93ab4815b04c49bd25e"

DESCRIPTION="Fuzzy text selector (interactive grep) for console"
HOMEPAGE="https://github.com/jhawthorn/fzy"
SRC_URI="https://github.com/jhawthorn/fzy/archive/${EGIT_COMMIT}.tar.gz -> ${PN}-${EGIT_COMMIT}.tar.gz"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="test"

PATCHES=(
"${FILESDIR}"/fzy-0.9-cflags.patch
"${FILESDIR}"/fzy-add-utf-8-support.patch
)

S="${WORKDIR}/${PN}-${EGIT_COMMIT}"

src_prepare() {
default
restore_config config.h
tc-export CC
}

src_install() {
local DOCS=( ALGORITHM.md CHANGELOG.md README.md )
emake DESTDIR="${D}" PREFIX="${EPREFIX}"/usr install
exeinto /usr/share/fzy
doexe contrib/fzy-tmux
doexe contrib/fzy-dvtm
einstalldocs
save_config config.h
}

0 comments on commit c38398c

Please sign in to comment.