diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/screen.c | 11 | ||||
-rw-r--r-- | src/nvim/testdir/test_diffmode.vim | 3 |
2 files changed, 12 insertions, 2 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index edddfd8ed3..fd070c6653 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -2772,8 +2772,15 @@ win_line ( if (wp->w_skipcol > 0) for (p_extra = extra; *p_extra == ' '; ++p_extra) *p_extra = '-'; - if (wp->w_p_rl) /* reverse line numbers */ - rl_mirror(extra); + if (wp->w_p_rl) { // reverse line numbers + // like rl_mirror(), but keep the space at the end + char_u *p2 = skiptowhite(extra) - 1; + for (char_u *p1 = extra; p1 < p2; p1++, p2--) { + const int t = *p1; + *p1 = *p2; + *p2 = t; + } + } p_extra = extra; c_extra = NUL; c_final = NUL; diff --git a/src/nvim/testdir/test_diffmode.vim b/src/nvim/testdir/test_diffmode.vim index b2e75265a6..00f4563f3d 100644 --- a/src/nvim/testdir/test_diffmode.vim +++ b/src/nvim/testdir/test_diffmode.vim @@ -763,6 +763,9 @@ func Test_diff_of_diff() call VerifyScreenDump(buf, 'Test_diff_of_diff_01', {}) + call term_sendkeys(buf, ":set rightleft\<cr>") + call VerifyScreenDump(buf, 'Test_diff_of_diff_02', {}) + " clean up call StopVimInTerminal(buf) call delete('Xtest_diff_diff') |