diff options
author | luukvbaal <31730729+luukvbaal@users.noreply.github.com> | 2023-01-13 10:41:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-13 09:41:19 +0000 |
commit | 4a12372ccf70236c1c23144129984a3629cc45f3 (patch) | |
tree | 32424128ea775bf73ea171c9e6f20aa48538db00 | |
parent | 449c0762d351bca94438813f9226b8906b46adb5 (diff) | |
download | rneovim-4a12372ccf70236c1c23144129984a3629cc45f3.tar.gz rneovim-4a12372ccf70236c1c23144129984a3629cc45f3.tar.bz2 rneovim-4a12372ccf70236c1c23144129984a3629cc45f3.zip |
fix(statuscolumn): make %l/%r respect 'number'/'relativenumber' (#21747)
Resolve https://github.com/neovim/neovim/issues/21745.
-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() |