aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-03-31 11:00:14 -0400
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2019-03-31 12:40:54 -0400
commitc5db02d79276a06854907805d011aa2605a0b14b (patch)
treee8a69f33e5f8c21ae72bf75c6380e656820e3b6c
parent157034bd6ce48e7138171627713672ccdea730aa (diff)
downloadrneovim-c5db02d79276a06854907805d011aa2605a0b14b.tar.gz
rneovim-c5db02d79276a06854907805d011aa2605a0b14b.tar.bz2
rneovim-c5db02d79276a06854907805d011aa2605a0b14b.zip
vim-patch:8.1.1073: space in number column is on wrong side with 'rightleft' set
Problem: Space in number column is on wrong side with 'rightleft' set. Solution: Move the space to the text side. Add a test. https://github.com/vim/vim/commit/e73f911c53de1c87e39456ba20782f72a0ca8f4f
-rw-r--r--src/nvim/screen.c11
-rw-r--r--src/nvim/testdir/test_diffmode.vim3
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')