diff options
| author | Albert Cervin <albert@acervin.com> | 2025-11-21 22:02:57 +0100 |
|---|---|---|
| committer | Albert Cervin <albert@acervin.com> | 2025-11-21 22:02:57 +0100 |
| commit | 4f6bc6b6acd557e2fb5d38f5f963266030783319 (patch) | |
| tree | 16f2659f5a0b801db286e98486dc2c591200396b /src/main/cmds.c | |
| parent | fa9277746ffc22b457d3c9cf96b91c5c73d5efc4 (diff) | |
| download | dged-4f6bc6b6acd557e2fb5d38f5f963266030783319.tar.gz dged-4f6bc6b6acd557e2fb5d38f5f963266030783319.tar.xz dged-4f6bc6b6acd557e2fb5d38f5f963266030783319.zip | |
Add a save all command to the buflist
When in the buflist, you can now press 'S' to save all unsaved
buffers.
Diffstat (limited to 'src/main/cmds.c')
| -rw-r--r-- | src/main/cmds.c | 23 |
1 files changed, 23 insertions, 0 deletions
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); |
