summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-11-21 22:02:57 +0100
committerAlbert Cervin <albert@acervin.com>2025-11-21 22:02:57 +0100
commit4f6bc6b6acd557e2fb5d38f5f963266030783319 (patch)
tree16f2659f5a0b801db286e98486dc2c591200396b /src/main
parentfa9277746ffc22b457d3c9cf96b91c5c73d5efc4 (diff)
downloaddged-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')
-rw-r--r--src/main/cmds.c23
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);