@@ -7631,22 +7631,33 @@ set_bool_option(opt_idx, varp, value, opt_flags)
76317631 }
76327632#endif
76337633
7634- /* 'number', 'relativenumber' */
7635- else if (( int * ) varp == & curwin -> w_p_nu
7636- || ( int * )varp == & curwin -> w_p_rnu )
7634+ /* If 'number' is set, reset 'relativenumber'. */
7635+ /* If 'relativenumber' is set, reset 'number'. */
7636+ else if (( int * )varp == & curwin -> w_p_nu && curwin -> w_p_nu )
76377637 {
7638- /* If 'number' is set, reset 'relativenumber'. */
7639- /* If 'relativenumber' is set, reset 'number'. */
7640- if ((int * )varp == & curwin -> w_p_nu && curwin -> w_p_nu )
7641- {
7642- curwin -> w_p_rnu = FALSE;
7638+ curwin -> w_p_rnu = FALSE;
7639+
7640+ /* Only reset the global value if the own value is set globally. */
7641+ if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL )) == 0 ))
76437642 curwin -> w_allbuf_opt .wo_rnu = FALSE;
7644- }
7645- if ((int * )varp == & curwin -> w_p_rnu && curwin -> w_p_rnu )
7646- {
7647- curwin -> w_p_nu = FALSE;
7643+ }
7644+ else if ((int * )varp == & curwin -> w_p_rnu && curwin -> w_p_rnu )
7645+ {
7646+ curwin -> w_p_nu = FALSE;
7647+
7648+ /* Only reset the global value if the own value is set globally. */
7649+ if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL )) == 0 ))
76487650 curwin -> w_allbuf_opt .wo_nu = FALSE;
7649- }
7651+ }
7652+ else if ((int * )varp == & curwin -> w_allbuf_opt .wo_nu
7653+ && curwin -> w_allbuf_opt .wo_nu )
7654+ {
7655+ curwin -> w_allbuf_opt .wo_rnu = FALSE;
7656+ }
7657+ else if ((int * )varp == & curwin -> w_allbuf_opt .wo_rnu
7658+ && curwin -> w_allbuf_opt .wo_rnu )
7659+ {
7660+ curwin -> w_allbuf_opt .wo_nu = FALSE;
76507661 }
76517662
76527663 else if ((int * )varp == & curbuf -> b_p_ro )
0 commit comments