@@ -2498,6 +2498,61 @@ set_term_option_sctx_idx(char *name, int opt_idx)
24982498}
24992499#endif
25002500
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+
25012556/*
25022557 * Set the value of a boolean option, and take care of side effects.
25032558 * Returns NULL for success, or an error message for an error.
@@ -3071,45 +3126,10 @@ set_bool_option(
30713126 options [opt_idx ].flags |= P_WAS_SET ;
30723127
30733128#if defined(FEAT_EVAL )
3074- // Don't do this while starting up or recursively.
3075- if (!starting && * get_vim_var_str (VV_OPTION_TYPE ) == NUL )
3076- {
3077- char_u buf_old [2 ], buf_old_global [2 ], buf_new [2 ], buf_type [7 ];
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- }
3129+ apply_optionset_autocmd (opt_idx , opt_flags ,
3130+ (long )(old_value ? TRUE : FALSE),
3131+ (long )(old_global_value ? TRUE : FALSE),
3132+ (long )(value ? TRUE : FALSE), NULL );
31133133#endif
31143134
31153135 comp_col (); // in case 'ruler' or 'showcmd' changed
@@ -3666,42 +3686,8 @@ set_num_option(
36663686 options [opt_idx ].flags |= P_WAS_SET ;
36673687
36683688#if defined(FEAT_EVAL )
3669- // Don't do this while starting up, failure or recursively.
3670- if (!starting && errmsg == NULL && * get_vim_var_str (VV_OPTION_TYPE ) == NUL )
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- }
3689+ apply_optionset_autocmd (opt_idx , opt_flags , old_value , old_global_value ,
3690+ value , errmsg );
37053691#endif
37063692
37073693 comp_col (); // in case 'columns' or 'ls' changed
0 commit comments