--- vis-cmds.c | 10 ++-------- vis.c | 10 ++++++++++ vis.h | 3 +++ 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/vis-cmds.c b/vis-cmds.c index 3f612f4..b3dad5b 100644 --- a/vis-cmds.c +++ b/vis-cmds.c _AT_@ -429,19 +429,13 @@ static bool cmd_open(Vis *vis, Filerange *range, enum CmdOpt opt, const char *ar return openfiles(vis, &argv[1]); } -static bool is_view_closeable(Win *win) { - if (!text_modified(win->file->text)) - return true; - return win->file->refcount > 1; -} - static void info_unsaved_changes(Vis *vis) { vis_info_show(vis, "No write since last change (add ! to override)"); } static bool cmd_edit(Vis *vis, Filerange *range, enum CmdOpt opt, const char *argv[]) { Win *oldwin = vis->win; - if (!(opt & CMD_OPT_FORCE) && !is_view_closeable(oldwin)) { + if (!(opt & CMD_OPT_FORCE) && !vis_window_closable(oldwin)) { info_unsaved_changes(vis); return false; } _AT_@ -463,7 +457,7 @@ static bool has_windows(Vis *vis) { } static bool cmd_quit(Vis *vis, Filerange *range, enum CmdOpt opt, const char *argv[]) { - if (!(opt & CMD_OPT_FORCE) && !is_view_closeable(vis->win)) { + if (!(opt & CMD_OPT_FORCE) && !vis_window_closable(vis->win)) { info_unsaved_changes(vis); return false; } diff --git a/vis.c b/vis.c index b65724c..42bc0a0 100644 --- a/vis.c +++ b/vis.c _AT_@ -284,6 +284,12 @@ bool vis_window_new(Vis *vis, const char *filename) { return true; } +bool vis_window_closable(Win *win) { + if (!text_modified(win->file->text)) + return true; + return win->file->refcount > 1; +} + void vis_window_close(Win *win) { Vis *vis = win->vis; if (vis->event && vis->event->win_close) _AT_@ -1090,6 +1096,10 @@ View *vis_view(Vis *vis) { return vis->win->view; } +Win *vis_window(Vis *vis) { + return vis->win; +} + Text *vis_file_text(File *file) { return file->text; } diff --git a/vis.h b/vis.h index 3bcd9c7..eb84695 100644 --- a/vis.h +++ b/vis.h _AT_@ -67,6 +67,8 @@ void vis_suspend(Vis*); bool vis_window_new(Vis*, const char *filename); /* reload the file currently displayed in the window from disk */ bool vis_window_reload(Win*); +/* check whether closing the window would loose unsaved changes */ +bool vis_window_closable(Win*); /* close window, redraw user interface */ void vis_window_close(Win*); /* split the given window. changes to the displayed text will be reflected _AT_@ -405,6 +407,7 @@ bool vis_signal_handler(Vis*, int signum, const siginfo_t *siginfo, const void * /* TODO: expose proper API to iterate through files etc */ Text *vis_text(Vis*); View *vis_view(Vis*); +Win *vis_window(Vis*); Text *vis_file_text(File*); const char *vis_file_name(File*); -- 2.1.4 --BXVAT5kNtrzKuDFl Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0002-vis-implement-gf-and-C-w-gf-to-open-filename-under-c.patch"Received on Mon Sep 17 2001 - 00:00:00 CEST
This archive was generated by hypermail 2.3.0 : Sun Feb 07 2016 - 23:36:10 CET