From 6d86dc94cffee3fcda48f634fb05556cb861b0b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sun, 15 Nov 2015 13:56:35 +0100 Subject: Implement command/search prompt history as a regular file --- vis-cmds.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'vis-cmds.c') diff --git a/vis-cmds.c b/vis-cmds.c index 065b9d3..8cc704b 100644 --- a/vis-cmds.c +++ b/vis-cmds.c @@ -443,13 +443,21 @@ static bool cmd_edit(Vis *vis, Filerange *range, enum CmdOpt opt, const char *ar return vis->win != oldwin; } +static bool has_windows(Vis *vis) { + for (Win *win = vis->windows; win; win = win->next) { + if (!win->file->internal) + return true; + } + return false; +} + static bool cmd_quit(Vis *vis, Filerange *range, enum CmdOpt opt, const char *argv[]) { if (!(opt & CMD_OPT_FORCE) && !is_view_closeable(vis->win)) { info_unsaved_changes(vis); return false; } vis_window_close(vis->win); - if (!vis->windows) + if (!has_windows(vis)) vis_exit(vis, EXIT_SUCCESS); return true; } @@ -473,7 +481,7 @@ static bool cmd_bdelete(Vis *vis, Filerange *range, enum CmdOpt opt, const char if (win->file->text == txt) vis_window_close(win); } - if (!vis->windows) + if (!has_windows(vis)) vis_exit(vis, EXIT_SUCCESS); return true; } @@ -484,7 +492,7 @@ static bool cmd_qall(Vis *vis, Filerange *range, enum CmdOpt opt, const char *ar if (!text_modified(vis->win->file->text) || (opt & CMD_OPT_FORCE)) vis_window_close(win); } - if (!vis->windows) + if (!has_windows(vis)) vis_exit(vis, EXIT_SUCCESS); else info_unsaved_changes(vis); @@ -1097,6 +1105,8 @@ static Command *lookup_cmd(Vis *vis, const char *name) { bool vis_cmd(Vis *vis, const char *cmdline) { enum CmdOpt opt = CMD_OPT_NONE; + while (*cmdline == ':') + cmdline++; size_t len = strlen(cmdline); char *line = malloc(len+2); if (!line) -- cgit v1.2.3