From 7d5a22ce09c457a2c33a26cef1764b4e20e603f7 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Sat, 19 Nov 2016 18:36:27 -0500 Subject: [PATCH] added middle click execution logic for tags --- Makefile | 2 +- inc/edit.h | 7 +++++++ libedit/view.c | 16 ++++++++++++++++ xedit | Bin 0 -> 66100 bytes xedit.c | 45 +++++++++++++++++++++++++++++++++------------ 5 files changed, 57 insertions(+), 13 deletions(-) create mode 100755 xedit diff --git a/Makefile b/Makefile index 3208b11..59f1c1e 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,7 @@ test: unittests ./unittests xedit: xedit.o libx.a libedit.a -xpick: xpick.o libx.a libedit.a +#xpick: xpick.o libx.a libedit.a libedit.a: $(LIBEDIT_OBJS) $(AR) $(ARFLAGS) $@ $^ diff --git a/inc/edit.h b/inc/edit.h index 7113db2..aaa9e45 100644 --- a/inc/edit.h +++ b/inc/edit.h @@ -156,6 +156,7 @@ void view_setcursor(View* view, size_t row, size_t col); void view_selext(View* view, size_t row, size_t col); void view_selword(View* view, size_t row, size_t col); void view_select(View* view, size_t row, size_t col); +char* view_fetch(View* view, size_t row, size_t col); void view_find(View* view, size_t row, size_t col); void view_insert(View* view, Rune rune); void view_delete(View* view); @@ -228,6 +229,12 @@ typedef struct { View view; } Region; +typedef struct { + char* tag; + void (*action)(void); +} Tag; + + /* Configuration *****************************************************************************/ enum { diff --git a/libedit/view.c b/libedit/view.c index 428e09e..8398daf 100644 --- a/libedit/view.c +++ b/libedit/view.c @@ -307,6 +307,22 @@ void view_select(View* view, size_t row, size_t col) { view->selection = sel; } +char* view_fetch(View* view, size_t row, size_t col) { + char* str = NULL; + size_t off = getoffset(view, row, col); + if (off != SIZE_MAX) { + Sel sel = { .beg = off, .end = off }; + if (in_selection(view->selection, off)) { + sel = view->selection; + } else { + selcontext(view, &sel); + sel.end++; + } + str = view_getstr(view, &sel); + } + return str; +} + void view_find(View* view, size_t row, size_t col) { size_t off = getoffset(view, row, col); if (off != SIZE_MAX) { diff --git a/xedit b/xedit new file mode 100755 index 0000000000000000000000000000000000000000..b04166f51f8dbf38616563e88e7575698c44b69c GIT binary patch literal 66100 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�YQv{x)NlS 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 literal 0 HcmV?d00001 diff --git a/xedit.c b/xedit.c index fd44d89..8740686 100644 --- a/xedit.c +++ b/xedit.c @@ -64,6 +64,7 @@ static enum RegionId getregion(size_t x, size_t y) { } return NREGIONS; } + /* UI Callbacks *****************************************************************************/ static void delete(void) { @@ -104,15 +105,9 @@ static void page_dn(void) { static void change_focus(void) { if (Focused == TAGS) { - if (TagWinExpanded) { - TagWinExpanded = false; - Focused = EDIT; - } else { - TagWinExpanded = true; - } + Focused = EDIT; } else { Focused = TAGS; - TagWinExpanded = true; } } @@ -160,6 +155,30 @@ static void paste(void) { free(str); } +/* Builtin Tags + *****************************************************************************/ +Tag Builtins[] = { + { "Quit", quit }, + { "Save", save }, + { "Cut", cut }, + { "Copy", copy }, + { "Paste", paste }, + //{ "Find", NULL }, + { NULL, NULL } +}; + +static void tagexec(char* cmd) { + Tag* tags = Builtins; + while (tags->tag) { + if (!strcmp(tags->tag, cmd)) { + Focused = EDIT; + tags->action(); + break; + } + tags++; + } +} + /* Mouse Handling *****************************************************************************/ static void mouse_left(enum RegionId id, size_t count, size_t row, size_t col) { @@ -175,9 +194,11 @@ static void mouse_left(enum RegionId id, size_t count, size_t row, size_t col) { static void mouse_middle(enum RegionId id, size_t count, size_t row, size_t col) { if (MouseBtns[MOUSE_BTN_LEFT].pressed) cut(); - else - puts("exec"); - // view_exec(getview(id), row, col); + else { + char* str = view_fetch(getview(id), row, col); + tagexec(str); + free(str); + } } static void mouse_right(enum RegionId id, size_t count, size_t row, size_t col) { @@ -188,11 +209,11 @@ static void mouse_right(enum RegionId id, size_t count, size_t row, size_t col) } static void mouse_wheelup(enum RegionId id, size_t count, size_t row, size_t col) { - view_scroll(getview(id), -1); + view_scroll(getview(id), -ScrollLines); } static void mouse_wheeldn(enum RegionId id, size_t count, size_t row, size_t col) { - view_scroll(getview(id), 1); + view_scroll(getview(id), +ScrollLines); } void (*MouseActs[MOUSE_BTN_COUNT])(enum RegionId id, size_t count, size_t row, size_t col) = { -- 2.54.0