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)