aboutsummaryrefslogtreecommitdiff
path: root/add-interactive.h
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2026-03-02 13:13:06 +0100
committerJunio C Hamano <gitster@pobox.com>2026-03-03 15:09:35 -0800
commite3d4d7787cc3b2f0281e808042ceaa08e05c281b (patch)
tree040acc1ed301c750b52ee06c4e8b1259579af153 /add-interactive.h
parent6e4d923267ca80dd1392bf7e0673c74711e8cb68 (diff)
downloadgit-e3d4d7787cc3b2f0281e808042ceaa08e05c281b.tar.xz
add-patch: split out `struct interactive_options`
The `struct add_p_opt` is reused both by our infra for "git add -p" and "git add -i". Users of `run_add_i()` for example are expected to pass `struct add_p_opt`. This is somewhat confusing and raises the question of which options apply to what part of the stack. But things are even more confusing than that: while callers are expected to pass in `struct add_p_opt`, these options ultimately get used to initialize a `struct add_i_state` that is used by both subsystems. So we are basically going full circle here. Refactor the code and split out a new `struct interactive_options` that hosts common options used by both. These options are then applied to a `struct interactive_config` that hosts common configuration. This refactoring doesn't yet fully detangle the two subsystems from one another, as we still end up calling `init_add_i_state()` in the "git add -p" subsystem. This will be fixed in a subsequent commit. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'add-interactive.h')
-rw-r--r--add-interactive.h24
1 files changed, 3 insertions, 21 deletions
diff --git a/add-interactive.h b/add-interactive.h
index 6c62489bfe..eefa2edc7c 100644
--- a/add-interactive.h
+++ b/add-interactive.h
@@ -2,38 +2,20 @@
#define ADD_INTERACTIVE_H
#include "add-patch.h"
-#include "color.h"
struct pathspec;
struct repository;
struct add_i_state {
struct repository *r;
- enum git_colorbool use_color_interactive;
- enum git_colorbool use_color_diff;
- char header_color[COLOR_MAXLEN];
- char help_color[COLOR_MAXLEN];
- char prompt_color[COLOR_MAXLEN];
- char error_color[COLOR_MAXLEN];
- char reset_color_interactive[COLOR_MAXLEN];
-
- char fraginfo_color[COLOR_MAXLEN];
- char context_color[COLOR_MAXLEN];
- char file_old_color[COLOR_MAXLEN];
- char file_new_color[COLOR_MAXLEN];
- char reset_color_diff[COLOR_MAXLEN];
-
- int use_single_key;
- char *interactive_diff_filter, *interactive_diff_algorithm;
- int context, interhunkcontext;
- int auto_advance;
+ struct interactive_config cfg;
};
void init_add_i_state(struct add_i_state *s, struct repository *r,
- struct add_p_opt *add_p_opt);
+ struct interactive_options *opts);
void clear_add_i_state(struct add_i_state *s);
int run_add_i(struct repository *r, const struct pathspec *ps,
- struct add_p_opt *add_p_opt);
+ struct interactive_options *opts);
#endif