diff options
-rw-r--r-- | src/nvim/diff.c | 16 | ||||
-rw-r--r-- | src/nvim/po/fr.po | 13 | ||||
-rw-r--r-- | src/nvim/testdir/test_diffmode.vim | 16 | ||||
-rw-r--r-- | src/nvim/version.c | 4 | ||||
-rw-r--r-- | src/nvim/window.c | 11 |
5 files changed, 51 insertions, 9 deletions
diff --git a/src/nvim/diff.c b/src/nvim/diff.c index aafd50687e..5940dc55da 100644 --- a/src/nvim/diff.c +++ b/src/nvim/diff.c @@ -1007,6 +1007,10 @@ void ex_diffsplit(exarg_T *eap) bufref_T old_curbuf; set_bufref(&old_curbuf, curbuf); + // Need to compute w_fraction when no redraw happened yet. + validate_cursor(); + set_fraction(curwin); + // don't use a new tab page, each tab page has its own diffs cmdmod.tab = 0; @@ -1032,6 +1036,9 @@ void ex_diffsplit(exarg_T *eap) curwin->w_cursor.lnum); } } + // Now that lines are folded scroll to show the cursor at the same + // relative position. + scroll_to_fraction(curwin, curwin->w_height); } } } @@ -1154,10 +1161,13 @@ void ex_diffoff(exarg_T *eap) } foldUpdateAll(wp); - - // make sure topline is not halfway through a fold - changed_window_setting_win(wp); } + // remove filler lines + wp->w_topfill = 0; + + // make sure topline is not halfway a fold and cursor is + // invalidated + changed_window_setting_win(wp); // Note: 'sbo' is not restored, it's a global option. diff_buf_adjust(wp); diff --git a/src/nvim/po/fr.po b/src/nvim/po/fr.po index 61920697d0..ca346f63bd 100644 --- a/src/nvim/po/fr.po +++ b/src/nvim/po/fr.po @@ -5264,12 +5264,21 @@ msgstr "Vim est un logiciel libre" msgid "Help poor children in Uganda!" msgstr "Aidez les enfants pauvres d'Ouganda !" -msgid "type :help iccf<Enter> for information " -msgstr "tapez :help iccf<Entrée> pour plus d'informations " +msgid "type :help nvim<Enter> if you are new! " +msgstr "tapez :help nvim<Entrée> si vous êtes nouveau! " + +msgid "type :CheckHealth<Enter> to optimize Nvim" +msgstr "tapez :CheckHealth<Entrée> pour optimiser Nvim " msgid "type :q<Enter> to exit " msgstr "tapez :q<Entrée> pour sortir du programme " +msgid "type :help<Enter> for help " +msgstr "tapez :help<Entrée> pour optenir de l'aide " + +msgid "type :help iccf<Enter> for information " +msgstr "tapez :help iccf<Entrée> pour plus d'informations " + msgid "type :help<Enter> or <F1> for on-line help" msgstr "tapez :help<Entrée> ou <F1> pour accéder à l'aide en ligne " diff --git a/src/nvim/testdir/test_diffmode.vim b/src/nvim/testdir/test_diffmode.vim index 7666594862..5de394de8e 100644 --- a/src/nvim/testdir/test_diffmode.vim +++ b/src/nvim/testdir/test_diffmode.vim @@ -202,3 +202,19 @@ func Test_diffget_diffput() bwipe! enew! endfunc + +func Test_diffoff() + enew! + call setline(1, ['Two', 'Three']) + let normattr = screenattr(1, 1) + diffthis + botright vert new + call setline(1, ['One', '', 'Two', 'Three']) + diffthis + redraw + diffoff! + redraw + call assert_equal(normattr, screenattr(1, 1)) + bwipe! + bwipe! +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 042c0f00a3..5e33597568 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -161,11 +161,11 @@ static int included_patches[] = { // 2282 NA // 2281 NA // 2280, - // 2279, + 2279, // 2278 NA 2277, // 2276, - // 2275, + 2275, 2274, 2273, 2272, diff --git a/src/nvim/window.c b/src/nvim/window.c index 510f182353..28269e8889 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -4717,8 +4717,6 @@ void set_fraction(win_T *wp) */ void win_new_height(win_T *wp, int height) { - linenr_T lnum; - int sline, line_size; int prev_height = wp->w_height; /* Don't want a negative height. Happens when splitting a tiny window. @@ -4745,6 +4743,15 @@ void win_new_height(win_T *wp, int height) wp->w_height = height; wp->w_skipcol = 0; + scroll_to_fraction(wp, prev_height); +} + +void scroll_to_fraction(win_T *wp, int prev_height) +{ + linenr_T lnum; + int sline, line_size; + int height = wp->w_height; + /* Don't change w_topline when height is zero. Don't set w_topline when * 'scrollbind' is set and this isn't the current window. */ if (height > 0 |