1
0
forked from aniani/vim

updated for version 7.3.1115

Problem:    Many users don't like the cursor line number when 'relativenumber'
            is set.
Solution:   Have four combinations with 'number' and 'relativenumber'.
            (Christian Brabandt)
This commit is contained in:
Bram Moolenaar
2013-06-04 22:13:50 +02:00
parent b76591ef4a
commit 5ebc09b450
5 changed files with 25 additions and 42 deletions

View File

@@ -7647,35 +7647,6 @@ set_bool_option(opt_idx, varp, value, opt_flags)
} }
#endif #endif
/* If 'number' is set, reset 'relativenumber'. */
/* If 'relativenumber' is set, reset 'number'. */
else if ((int *)varp == &curwin->w_p_nu && curwin->w_p_nu)
{
curwin->w_p_rnu = FALSE;
/* Only reset the global value if the own value is set globally. */
if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
curwin->w_allbuf_opt.wo_rnu = FALSE;
}
else if ((int *)varp == &curwin->w_p_rnu && curwin->w_p_rnu)
{
curwin->w_p_nu = FALSE;
/* Only reset the global value if the own value is set globally. */
if (((opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0))
curwin->w_allbuf_opt.wo_nu = FALSE;
}
else if ((int *)varp == &curwin->w_allbuf_opt.wo_nu
&& curwin->w_allbuf_opt.wo_nu)
{
curwin->w_allbuf_opt.wo_rnu = FALSE;
}
else if ((int *)varp == &curwin->w_allbuf_opt.wo_rnu
&& curwin->w_allbuf_opt.wo_rnu)
{
curwin->w_allbuf_opt.wo_nu = FALSE;
}
else if ((int *)varp == &curbuf->b_p_ro) else if ((int *)varp == &curbuf->b_p_ro)
{ {
/* when 'readonly' is reset globally, also reset readonlymode */ /* when 'readonly' is reset globally, also reset readonlymode */

View File

@@ -2329,15 +2329,17 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
if (len > w + 1) if (len > w + 1)
len = w + 1; len = w + 1;
if (wp->w_p_nu) if (wp->w_p_nu && !wp->w_p_rnu)
/* 'number' */ /* 'number' + 'norelativenumber' */
num = (long)lnum; num = (long)lnum;
else else
{ {
/* 'relativenumber', don't use negative numbers */ /* 'relativenumber', don't use negative numbers */
num = labs((long)get_cursor_rel_lnum(wp, lnum)); num = labs((long)get_cursor_rel_lnum(wp, lnum));
if (num == 0) if (num == 0 && wp->w_p_nu && wp->w_p_rnu)
{ {
/* 'number' + 'relativenumber': cursor line shows absolute
* line number */
num = lnum; num = lnum;
fmt = "%-*ld "; fmt = "%-*ld ";
} }
@@ -3499,15 +3501,16 @@ win_line(wp, lnum, startrow, endrow, nochange)
long num; long num;
char *fmt = "%*ld "; char *fmt = "%*ld ";
if (wp->w_p_nu) if (wp->w_p_nu && !wp->w_p_rnu)
/* 'number' */ /* 'number' + 'norelativenumber' */
num = (long)lnum; num = (long)lnum;
else else
{ {
/* 'relativenumber', don't use negative numbers */ /* 'relativenumber', don't use negative numbers */
num = labs((long)get_cursor_rel_lnum(wp, lnum)); num = labs((long)get_cursor_rel_lnum(wp, lnum));
if (num == 0) if (num == 0 && wp->w_p_nu && wp->w_p_rnu)
{ {
/* 'number' + 'relativenumber' */
num = lnum; num = lnum;
fmt = "%-*ld "; fmt = "%-*ld ";
} }
@@ -10260,6 +10263,11 @@ number_width(wp)
int n; int n;
linenr_T lnum; linenr_T lnum;
if (wp->w_p_rnu && !wp->w_p_nu)
/* cursor line shows "0" */
lnum = wp->w_height;
else
/* cursor line shows absolute line number */
lnum = wp->w_buffer->b_ml.ml_line_count; lnum = wp->w_buffer->b_ml.ml_line_count;
if (lnum == wp->w_nrwidth_line_count) if (lnum == wp->w_nrwidth_line_count)

View File

@@ -1,4 +1,6 @@
Some tests for setting 'number' and 'relativenumber' Some tests for setting 'number' and 'relativenumber'
This is not all that useful now that the options are no longer reset when
setting the other.
STARTTEST STARTTEST
:so small.vim :so small.vim

View File

@@ -1,9 +1,9 @@
results: results:
nonumber number
relativenumber relativenumber
nonumber number
relativenumber relativenumber
:setlocal must NOT reset the other global value :setlocal must NOT reset the other global value
@@ -12,11 +12,11 @@ nonumber
relativenumber relativenumber
:setglobal MUST reset the other global value :setglobal MUST reset the other global value
nonumber number
norelativenumber relativenumber
:set MUST reset the other global value :set MUST reset the other global value
nonumber number
norelativenumber relativenumber

View File

@@ -728,6 +728,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1115,
/**/ /**/
1114, 1114,
/**/ /**/