diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-02-07 16:06:31 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-02-07 23:14:30 +0100 |
| commit | a9128846c27307bae1a8154c8bfe8c71acd2c88e (patch) | |
| tree | 239ee9cba0eaf5f3329748d78987e7cbfb4c21da | |
| parent | 0ca5c66a71aa6ed9b2cfc621c26d4fc4ff47ec93 (diff) | |
| download | vis-a9128846c27307bae1a8154c8bfe8c71acd2c88e.tar.gz vis-a9128846c27307bae1a8154c8bfe8c71acd2c88e.tar.xz | |
vis: export vis_window_closable
| -rw-r--r-- | vis-cmds.c | 10 | ||||
| -rw-r--r-- | vis.c | 10 | ||||
| -rw-r--r-- | vis.h | 3 |
3 files changed, 15 insertions, 8 deletions
@@ -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; } @@ -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; } @@ -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) @@ -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; } @@ -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 @@ -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*); |
