| 325 | } |
| 326 | |
| 327 | void interactive_config_init(struct interactive_config *cfg, |
| 328 | struct repository *r, |
| 329 | struct interactive_options *opts) |
| 330 | { |
| 331 | cfg->context = -1; |
| 332 | cfg->interhunkcontext = -1; |
| 333 | cfg->auto_advance = opts->auto_advance; |
| 334 | |
| 335 | cfg->use_color_interactive = check_color_config(r, "color.interactive"); |
| 336 | |
| 337 | init_color(r, cfg->use_color_interactive, "interactive.header", |
| 338 | cfg->header_color, GIT_COLOR_BOLD); |
| 339 | init_color(r, cfg->use_color_interactive, "interactive.help", |
| 340 | cfg->help_color, GIT_COLOR_BOLD_RED); |
| 341 | init_color(r, cfg->use_color_interactive, "interactive.prompt", |
| 342 | cfg->prompt_color, GIT_COLOR_BOLD_BLUE); |
| 343 | init_color(r, cfg->use_color_interactive, "interactive.error", |
| 344 | cfg->error_color, GIT_COLOR_BOLD_RED); |
| 345 | strlcpy(cfg->reset_color_interactive, |
| 346 | want_color(cfg->use_color_interactive) ? GIT_COLOR_RESET : "", COLOR_MAXLEN); |
| 347 | |
| 348 | cfg->use_color_diff = check_color_config(r, "color.diff"); |
| 349 | |
| 350 | init_color(r, cfg->use_color_diff, "diff.frag", cfg->fraginfo_color, |
| 351 | diff_get_color(cfg->use_color_diff, DIFF_FRAGINFO)); |
| 352 | init_color(r, cfg->use_color_diff, "diff.context", cfg->context_color, |
| 353 | "fall back"); |
| 354 | if (!strcmp(cfg->context_color, "fall back")) |
| 355 | init_color(r, cfg->use_color_diff, "diff.plain", |
| 356 | cfg->context_color, |
| 357 | diff_get_color(cfg->use_color_diff, DIFF_CONTEXT)); |
| 358 | init_color(r, cfg->use_color_diff, "diff.old", cfg->file_old_color, |
| 359 | diff_get_color(cfg->use_color_diff, DIFF_FILE_OLD)); |
| 360 | init_color(r, cfg->use_color_diff, "diff.new", cfg->file_new_color, |
| 361 | diff_get_color(cfg->use_color_diff, DIFF_FILE_NEW)); |
| 362 | strlcpy(cfg->reset_color_diff, |
| 363 | want_color(cfg->use_color_diff) ? GIT_COLOR_RESET : "", COLOR_MAXLEN); |
| 364 | |
| 365 | FREE_AND_NULL(cfg->interactive_diff_filter); |
| 366 | repo_config_get_string(r, "interactive.difffilter", |
| 367 | &cfg->interactive_diff_filter); |
| 368 | |
| 369 | FREE_AND_NULL(cfg->interactive_diff_algorithm); |
| 370 | repo_config_get_string(r, "diff.algorithm", |
| 371 | &cfg->interactive_diff_algorithm); |
| 372 | |
| 373 | if (!repo_config_get_int(r, "diff.context", &cfg->context)) |
| 374 | if (cfg->context < 0) |
| 375 | die(_("%s cannot be negative"), "diff.context"); |
| 376 | if (!repo_config_get_int(r, "diff.interHunkContext", &cfg->interhunkcontext)) |
| 377 | if (cfg->interhunkcontext < 0) |
| 378 | die(_("%s cannot be negative"), "diff.interHunkContext"); |
| 379 | |
| 380 | repo_config_get_bool(r, "interactive.singlekey", &cfg->use_single_key); |
| 381 | if (cfg->use_single_key) |
| 382 | setbuf(stdin, NULL); |
| 383 | |
| 384 | if (opts->context != -1) { |
no test coverage detected