Mercurial > vim
comparison src/option.c @ 19405:08f4dc2ba716 v8.2.0260
patch 8.2.0260: several lines of code are duplicated
Commit: https://github.com/vim/vim/commit/f4140488c72cad4dbf5449dba099cfa7de7bbb22
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Feb 15 23:06:45 2020 +0100
patch 8.2.0260: several lines of code are duplicated
Problem: Several lines of code are duplicated.
Solution: Move duplicated code to a function. (Yegappan Lakshmanan,
closes #5330)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 15 Feb 2020 23:15:04 +0100 |
parents | 2ef19eed524a |
children | aadd1cae2ff5 |
comparison
equal
deleted
inserted
replaced
19404:7be3663e2f2b | 19405:08f4dc2ba716 |
---|---|
2496 if (idx >= 0) | 2496 if (idx >= 0) |
2497 set_option_sctx_idx(idx, OPT_GLOBAL, current_sctx); | 2497 set_option_sctx_idx(idx, OPT_GLOBAL, current_sctx); |
2498 } | 2498 } |
2499 #endif | 2499 #endif |
2500 | 2500 |
2501 #if defined(FEAT_EVAL) | |
2502 /* | |
2503 * Apply the OptionSet autocommand. | |
2504 */ | |
2505 static void | |
2506 apply_optionset_autocmd( | |
2507 int opt_idx, | |
2508 long opt_flags, | |
2509 long oldval, | |
2510 long oldval_g, | |
2511 long newval, | |
2512 char *errmsg) | |
2513 { | |
2514 char_u buf_old[12], buf_old_global[12], buf_new[12], buf_type[12]; | |
2515 | |
2516 // Don't do this while starting up, failure or recursively. | |
2517 if (starting || errmsg != NULL || *get_vim_var_str(VV_OPTION_TYPE) != NUL) | |
2518 return; | |
2519 | |
2520 vim_snprintf((char *)buf_old, sizeof(buf_old), "%ld", oldval); | |
2521 vim_snprintf((char *)buf_old_global, sizeof(buf_old_global), "%ld", | |
2522 oldval_g); | |
2523 vim_snprintf((char *)buf_new, sizeof(buf_new), "%ld", newval); | |
2524 vim_snprintf((char *)buf_type, sizeof(buf_type), "%s", | |
2525 (opt_flags & OPT_LOCAL) ? "local" : "global"); | |
2526 set_vim_var_string(VV_OPTION_NEW, buf_new, -1); | |
2527 set_vim_var_string(VV_OPTION_OLD, buf_old, -1); | |
2528 set_vim_var_string(VV_OPTION_TYPE, buf_type, -1); | |
2529 if (opt_flags & OPT_LOCAL) | |
2530 { | |
2531 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1); | |
2532 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
2533 } | |
2534 if (opt_flags & OPT_GLOBAL) | |
2535 { | |
2536 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1); | |
2537 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1); | |
2538 } | |
2539 if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) | |
2540 { | |
2541 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1); | |
2542 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
2543 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1); | |
2544 } | |
2545 if (opt_flags & OPT_MODELINE) | |
2546 { | |
2547 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1); | |
2548 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
2549 } | |
2550 apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname, | |
2551 NULL, FALSE, NULL); | |
2552 reset_v_option_vars(); | |
2553 } | |
2554 #endif | |
2555 | |
2501 /* | 2556 /* |
2502 * Set the value of a boolean option, and take care of side effects. | 2557 * Set the value of a boolean option, and take care of side effects. |
2503 * Returns NULL for success, or an error message for an error. | 2558 * Returns NULL for success, or an error message for an error. |
2504 */ | 2559 */ |
2505 static char * | 2560 static char * |
3069 // after handling side effects, call autocommand | 3124 // after handling side effects, call autocommand |
3070 | 3125 |
3071 options[opt_idx].flags |= P_WAS_SET; | 3126 options[opt_idx].flags |= P_WAS_SET; |
3072 | 3127 |
3073 #if defined(FEAT_EVAL) | 3128 #if defined(FEAT_EVAL) |
3074 // Don't do this while starting up or recursively. | 3129 apply_optionset_autocmd(opt_idx, opt_flags, |
3075 if (!starting && *get_vim_var_str(VV_OPTION_TYPE) == NUL) | 3130 (long)(old_value ? TRUE : FALSE), |
3076 { | 3131 (long)(old_global_value ? TRUE : FALSE), |
3077 char_u buf_old[2], buf_old_global[2], buf_new[2], buf_type[7]; | 3132 (long)(value ? TRUE : FALSE), NULL); |
3078 | |
3079 vim_snprintf((char *)buf_old, 2, "%d", old_value ? TRUE: FALSE); | |
3080 vim_snprintf((char *)buf_old_global, 2, "%d", | |
3081 old_global_value ? TRUE: FALSE); | |
3082 vim_snprintf((char *)buf_new, 2, "%d", value ? TRUE: FALSE); | |
3083 vim_snprintf((char *)buf_type, 7, "%s", | |
3084 (opt_flags & OPT_LOCAL) ? "local" : "global"); | |
3085 set_vim_var_string(VV_OPTION_NEW, buf_new, -1); | |
3086 set_vim_var_string(VV_OPTION_OLD, buf_old, -1); | |
3087 set_vim_var_string(VV_OPTION_TYPE, buf_type, -1); | |
3088 if (opt_flags & OPT_LOCAL) | |
3089 { | |
3090 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1); | |
3091 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3092 } | |
3093 if (opt_flags & OPT_GLOBAL) | |
3094 { | |
3095 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1); | |
3096 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1); | |
3097 } | |
3098 if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) | |
3099 { | |
3100 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1); | |
3101 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3102 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1); | |
3103 } | |
3104 if (opt_flags & OPT_MODELINE) | |
3105 { | |
3106 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1); | |
3107 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3108 } | |
3109 apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname, | |
3110 NULL, FALSE, NULL); | |
3111 reset_v_option_vars(); | |
3112 } | |
3113 #endif | 3133 #endif |
3114 | 3134 |
3115 comp_col(); // in case 'ruler' or 'showcmd' changed | 3135 comp_col(); // in case 'ruler' or 'showcmd' changed |
3116 if (curwin->w_curswant != MAXCOL | 3136 if (curwin->w_curswant != MAXCOL |
3117 && (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0) | 3137 && (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0) |
3664 *(long *)get_varp_scope(&(options[opt_idx]), OPT_GLOBAL) = *pp; | 3684 *(long *)get_varp_scope(&(options[opt_idx]), OPT_GLOBAL) = *pp; |
3665 | 3685 |
3666 options[opt_idx].flags |= P_WAS_SET; | 3686 options[opt_idx].flags |= P_WAS_SET; |
3667 | 3687 |
3668 #if defined(FEAT_EVAL) | 3688 #if defined(FEAT_EVAL) |
3669 // Don't do this while starting up, failure or recursively. | 3689 apply_optionset_autocmd(opt_idx, opt_flags, old_value, old_global_value, |
3670 if (!starting && errmsg == NULL && *get_vim_var_str(VV_OPTION_TYPE) == NUL) | 3690 value, errmsg); |
3671 { | |
3672 char_u buf_old[11], buf_old_global[11], buf_new[11], buf_type[7]; | |
3673 vim_snprintf((char *)buf_old, 10, "%ld", old_value); | |
3674 vim_snprintf((char *)buf_old_global, 10, "%ld", old_global_value); | |
3675 vim_snprintf((char *)buf_new, 10, "%ld", value); | |
3676 vim_snprintf((char *)buf_type, 7, "%s", (opt_flags & OPT_LOCAL) ? "local" : "global"); | |
3677 set_vim_var_string(VV_OPTION_NEW, buf_new, -1); | |
3678 set_vim_var_string(VV_OPTION_OLD, buf_old, -1); | |
3679 set_vim_var_string(VV_OPTION_TYPE, buf_type, -1); | |
3680 if (opt_flags & OPT_LOCAL) | |
3681 { | |
3682 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setlocal", -1); | |
3683 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3684 } | |
3685 if (opt_flags & OPT_GLOBAL) | |
3686 { | |
3687 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"setglobal", -1); | |
3688 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old, -1); | |
3689 } | |
3690 if ((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0) | |
3691 { | |
3692 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"set", -1); | |
3693 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3694 set_vim_var_string(VV_OPTION_OLDGLOBAL, buf_old_global, -1); | |
3695 } | |
3696 if (opt_flags & OPT_MODELINE) | |
3697 { | |
3698 set_vim_var_string(VV_OPTION_COMMAND, (char_u *)"modeline", -1); | |
3699 set_vim_var_string(VV_OPTION_OLDLOCAL, buf_old, -1); | |
3700 } | |
3701 apply_autocmds(EVENT_OPTIONSET, (char_u *)options[opt_idx].fullname, | |
3702 NULL, FALSE, NULL); | |
3703 reset_v_option_vars(); | |
3704 } | |
3705 #endif | 3691 #endif |
3706 | 3692 |
3707 comp_col(); // in case 'columns' or 'ls' changed | 3693 comp_col(); // in case 'columns' or 'ls' changed |
3708 if (curwin->w_curswant != MAXCOL | 3694 if (curwin->w_curswant != MAXCOL |
3709 && (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0) | 3695 && (options[opt_idx].flags & (P_CURSWANT | P_RALL)) != 0) |