changeset 4065:e1b98967a985 v7.3.787

updated for version 7.3.787 Problem: With 'relativenumber' set it is not possible to see the absolute line number. Solution: For the cursor line show the absolute line number instead of a zero. (Nazri Ramliy)
author Bram Moolenaar <bram@vim.org>
date Wed, 30 Jan 2013 12:31:36 +0100
parents dc8b68cb1054
children 9318d797e2e3
files src/screen.c src/version.c
diffstat 2 files changed, 25 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/screen.c
+++ b/src/screen.c
@@ -2319,6 +2319,7 @@ fold_line(wp, fold_count, foldinfo, lnum
 	{
 	    int	    w = number_width(wp);
 	    long num;
+	    char *fmt = "%*ld ";
 
 	    if (len > w + 1)
 		len = w + 1;
@@ -2327,10 +2328,17 @@ fold_line(wp, fold_count, foldinfo, lnum
 		/* 'number' */
 		num = (long)lnum;
 	    else
+	    {
 		/* 'relativenumber', don't use negative numbers */
 		num = labs((long)get_cursor_rel_lnum(wp, lnum));
-
-	    sprintf((char *)buf, "%*ld ", w, num);
+		if (num == 0)
+		{
+		    num = lnum;
+		    fmt = "%-*ld ";
+		}
+	    }
+
+	    sprintf((char *)buf, fmt, w, num);
 #ifdef FEAT_RIGHTLEFT
 	    if (wp->w_p_rl)
 		/* the line number isn't reversed */
@@ -3484,15 +3492,23 @@ win_line(wp, lnum, startrow, endrow, noc
 			    )
 		    {
 			long num;
+			char *fmt = "%*ld ";
 
 			if (wp->w_p_nu)
 			    /* 'number' */
 			    num = (long)lnum;
 			else
+			{
 			    /* 'relativenumber', don't use negative numbers */
 			    num = labs((long)get_cursor_rel_lnum(wp, lnum));
-
-			sprintf((char *)extra, "%*ld ",
+			    if (num == 0)
+			    {
+				num = lnum;
+				fmt = "%-*ld ";
+			    }
+			}
+
+			sprintf((char *)extra, fmt,
 						number_width(wp), num);
 			if (wp->w_skipcol > 0)
 			    for (p_extra = extra; *p_extra == ' '; ++p_extra)
@@ -3513,7 +3529,8 @@ win_line(wp, lnum, startrow, endrow, noc
 		     * the current line differently.
 		     * TODO: Can we use CursorLine instead of CursorLineNr
 		     * when CursorLineNr isn't set? */
-		    if (wp->w_p_cul && lnum == wp->w_cursor.lnum)
+		    if ((wp->w_p_cul || wp->w_p_rnu)
+						 && lnum == wp->w_cursor.lnum)
 			char_attr = hl_attr(HLF_CLN);
 #endif
 		}
@@ -10238,12 +10255,7 @@ number_width(wp)
     int		n;
     linenr_T	lnum;
 
-    if (wp->w_p_nu)
-	/* 'number' */
-	lnum = wp->w_buffer->b_ml.ml_line_count;
-    else
-	/* 'relativenumber' */
-	lnum = wp->w_height;
+    lnum = wp->w_buffer->b_ml.ml_line_count;
 
     if (lnum == wp->w_nrwidth_line_count)
 	return wp->w_nrwidth_width;
--- a/src/version.c
+++ b/src/version.c
@@ -726,6 +726,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    787,
+/**/
     786,
 /**/
     785,