diff --git a/NEWS.adoc b/NEWS.adoc index d8249baaa..62201bfc2 100644 --- a/NEWS.adoc +++ b/NEWS.adoc @@ -8,6 +8,7 @@ Bug fixes: - Fix `stat-*` coloring file names in `tig status` instead of just markers (regression in 2.5.9). (#1326) + - Fix keybinding with +[cmd] not triggering view refreshing. (#1324) tig-2.5.9 --------- diff --git a/src/display.c b/src/display.c index eb252674a..53c4d7443 100644 --- a/src/display.c +++ b/src/display.c @@ -73,16 +73,13 @@ open_external_viewer(const char *argv[], const char *dir, bool silent, bool conf bool ok; if (echo) { + struct io io; char buf[SIZEOF_STR] = ""; - io_run_buf(argv, buf, sizeof(buf), dir, false); - if (*buf) { + ok = io_exec(&io, IO_RD, dir, NULL, argv, IO_RD_WITH_STDERR) && io_read_buf(&io, buf, sizeof(buf), true); + if (*buf) report("%s", buf); - return true; - } else { - report("No output"); - return false; - } + } else if (silent || is_script_executing()) { ok = io_run_bg(argv, dir); diff --git a/src/view.c b/src/view.c index 6e419fae0..3944e5f3e 100644 --- a/src/view.c +++ b/src/view.c @@ -851,9 +851,10 @@ load_view(struct view *view, struct view *prev, enum open_flags flags) * the screen. */ werase(view->win); /* Do not clear the position if it is the first view. */ - if (view->prev && !(flags & (OPEN_RELOAD | OPEN_REFRESH))) + if (view->prev && !(flags & (OPEN_RELOAD | OPEN_REFRESH))) { clear_position(&view->prev_pos); - report_clear(); + report_clear(); + } } else if (view_is_displayed(view)) { redraw_view(view); report_clear();