diff options
-rw-r--r-- | src/nvim/statusline.c | 14 | ||||
-rw-r--r-- | test/functional/ui/statuscolumn_spec.lua | 9 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/nvim/statusline.c b/src/nvim/statusline.c index 6857bef810..7647c1fcfb 100644 --- a/src/nvim/statusline.c +++ b/src/nvim/statusline.c @@ -1502,8 +1502,14 @@ int build_stl_str_hl(win_T *wp, char *out, size_t outlen, char *fmt, char *opt_n case STL_LINE: // Overload %l with v:lnum for 'statuscolumn' - num = opt_name != NULL && strcmp(opt_name, "statuscolumn") == 0 ? get_vim_var_nr(VV_LNUM) - : (wp->w_buffer->b_ml.ml_flags & ML_EMPTY) ? 0L : (long)(wp->w_cursor.lnum); + if (opt_name != NULL && strcmp(opt_name, "statuscolumn") == 0) { + if (wp->w_p_nu) { + num = get_vim_var_nr(VV_LNUM); + } + } else { + num = (wp->w_buffer->b_ml.ml_flags & ML_EMPTY) ? 0L : (long)(wp->w_cursor.lnum); + } + break; case STL_NUMLINES: @@ -1603,7 +1609,9 @@ int build_stl_str_hl(win_T *wp, char *out, size_t outlen, char *fmt, char *opt_n case STL_ROFLAG_ALT: // Overload %r with v:relnum for 'statuscolumn' if (opt_name != NULL && strcmp(opt_name, "statuscolumn") == 0) { - num = get_vim_var_nr(VV_RELNUM); + if (wp->w_p_rnu) { + num = get_vim_var_nr(VV_RELNUM); + } } else { itemisflag = true; if (wp->w_buffer->b_p_ro) { diff --git a/test/functional/ui/statuscolumn_spec.lua b/test/functional/ui/statuscolumn_spec.lua index 74e6d61ff3..a9d796c10b 100644 --- a/test/functional/ui/statuscolumn_spec.lua +++ b/test/functional/ui/statuscolumn_spec.lua @@ -77,6 +77,9 @@ describe('statuscolumn', function() 16│aaaaa | | ]]) + command([[set stc=%l%=%{&rnu?'\ ':''}%r│]]) + screen:expect_unchanged() + command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]]) command('set relativenumber') screen:expect([[ 4 4│aaaaa | @@ -94,6 +97,9 @@ describe('statuscolumn', function() 16 8│aaaaa | | ]]) + command([[set stc=%l%=%{&rnu?'\ ':''}%r│]]) + screen:expect_unchanged() + command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]]) command('norm 12GH') screen:expect([[ 4 0│^aaaaa | @@ -111,6 +117,9 @@ describe('statuscolumn', function() 16 12│aaaaa | | ]]) + command([[set stc=%l%=%{&rnu?'\ ':''}%r│]]) + screen:expect_unchanged() + command([[set stc=%{&nu?v:lnum:''}%=%{&rnu?'\ '.v:relnum:''}│]]) end) it('works with highlighted \'statuscolumn\'', function() |