From 4f6bc6b6acd557e2fb5d38f5f963266030783319 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Fri, 21 Nov 2025 22:02:57 +0100 Subject: Add a save all command to the buflist When in the buflist, you can now press 'S' to save all unsaved buffers. --- src/main/cmds.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src') diff --git a/src/main/cmds.c b/src/main/cmds.c index 6505e01..989f28e 100644 --- a/src/main/cmds.c +++ b/src/main/cmds.c @@ -398,6 +398,23 @@ int32_t buflist_save_cmd(struct command_ctx ctx, int argc, const char *argv[]) { return 0; } +static void save_buffer(struct buffer *buffer, void *userdata) { + (void)userdata; + if (buffer->filename == NULL || !buffer->modified) { + return; + } + + buffer_to_file(buffer); +} + +int32_t buflist_save_all_cmd(struct command_ctx ctx, int argc, + const char *argv[]) { + (void)argc; + (void)argv; + buffers_for_each(ctx.buffers, save_buffer, NULL); + return 0; +} + int32_t buffer_list(struct command_ctx ctx, int argc, const char *argv[]) { (void)argc; (void)argv; @@ -433,11 +450,17 @@ int32_t buffer_list(struct command_ctx ctx, int argc, const char *argv[]) { .fn = buflist_save_cmd, }; + static struct command buflist_save_all = { + .name = "buflist-save-all", + .fn = buflist_save_all_cmd, + }; + struct binding bindings[] = { ANONYMOUS_BINDING(ENTER, &buflist_visit), ANONYMOUS_BINDING(None, 'k', &buflist_kill), ANONYMOUS_BINDING(None, 'q', &buflist_close), ANONYMOUS_BINDING(None, 's', &buflist_save), + ANONYMOUS_BINDING(None, 'S', &buflist_save_all), ANONYMOUS_BINDING(None, 'g', &buflist_refresh_command), }; struct keymap km = keymap_create("buflist", 8); -- cgit v1.2.3