diff options
author | pommicket <pommicket@gmail.com> | 2022-03-26 15:50:07 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-03-26 15:50:07 -0400 |
commit | 6617f77adbaeb0dc79c7b07f6ec3a107adb117db (patch) | |
tree | d35c0cea859ff0c3fe0bf178111a0abd59ef9ce2 /command.c | |
parent | 53ce10723f8d683dda4194fc969b4a8500b76b19 (diff) |
fixed ctrl+w behavior with find/build
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 36 |
1 files changed, 21 insertions, 15 deletions
@@ -301,23 +301,29 @@ void command_execute(Ted *ted, Command c, i64 argument) { case CMD_TAB_CLOSE: { if (ted->menu) { menu_close(ted); - } else { - if (node) { - u16 tab_idx = node->active_tab; - buffer = &ted->buffers[node->tabs[tab_idx]]; - // (an argument of 2 overrides the unsaved changes dialog) - if (argument != 2 && buffer_unsaved_changes(buffer)) { - // there are unsaved changes! - ted->warn_unsaved = CMD_TAB_CLOSE; - strbuf_printf(ted->warn_unsaved_names, "%s", path_filename(buffer->filename)); - menu_open(ted, MENU_WARN_UNSAVED); - } else { - node_tab_close(ted, node, node->active_tab); - } + } else if (ted->find) { + find_close(ted); + } else if (node) { + u16 tab_idx = node->active_tab; + buffer = &ted->buffers[node->tabs[tab_idx]]; + // (an argument of 2 overrides the unsaved changes dialog) + if (argument != 2 && buffer_unsaved_changes(buffer)) { + // there are unsaved changes! + ted->warn_unsaved = CMD_TAB_CLOSE; + strbuf_printf(ted->warn_unsaved_names, "%s", path_filename(buffer->filename)); + menu_open(ted, MENU_WARN_UNSAVED); } else { - command_execute(ted, CMD_QUIT, 1); - return; + node_tab_close(ted, node, node->active_tab); } + } else if (ted->build_shown) { + build_stop(ted); + } else if (ted->nodes_used[0]) { + // there are nodes open, but no active node. + // do nothing. + } else { + // no nodes open + command_execute(ted, CMD_QUIT, 1); + return; } } break; case CMD_TAB_NEXT: |