diff options
author | Bram Moolenaar <Bram@vim.org> | 2013-01-30 12:31:36 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2013-01-30 12:31:36 +0100 |
commit | 700e7345ded4e2af25e63409b81c1ce516410a28 (patch) | |
tree | 7114fd74a87924918c9ab798d0ee75deb9a4d17b | |
parent | 02366255c9bd16120c5025106f7ac5d5a06774d7 (diff) |
updated for version 7.3.787v7.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)
-rw-r--r-- | src/screen.c | 30 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 23 insertions, 9 deletions
diff --git a/src/screen.c b/src/screen.c index 7e11fa4d8c..6d2345cbe5 100644 --- a/src/screen.c +++ b/src/screen.c @@ -2319,6 +2319,7 @@ fold_line(wp, fold_count, foldinfo, lnum, row) { 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, row) /* 'number' */ num = (long)lnum; else + { /* 'relativenumber', don't use negative numbers */ num = labs((long)get_cursor_rel_lnum(wp, lnum)); + if (num == 0) + { + num = lnum; + fmt = "%-*ld "; + } + } - sprintf((char *)buf, "%*ld ", w, num); + 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, nochange) ) { 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)); + if (num == 0) + { + num = lnum; + fmt = "%-*ld "; + } + } - sprintf((char *)extra, "%*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, nochange) * 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; diff --git a/src/version.c b/src/version.c index 8115020bf3..ed6b493e87 100644 --- 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, |