patch 9.1.0280: several issues with 'smoothscroll' support

Problem:  Logic to make sure cursor is in visible part of the screen after
          scrolling the text with 'smoothscroll' is scattered, asymmetric
          and contains bugs.
Solution: Adjust and create helper function for 'smoothscroll' cursor logic.
          (Luuk van Baal)

closes: #14410

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/proto/move.pro b/src/proto/move.pro
index 91c8791..ec88b9b 100644
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -37,6 +37,7 @@
 void f_virtcol2col(typval_T *argvars, typval_T *rettv);
 void scrolldown(long line_count, int byfold);
 void scrollup(long line_count, int byfold);
+void scroll_redraw(int up, long count);
 void adjust_skipcol(void);
 void check_topfill(win_T *wp, int down);
 void scrolldown_clamp(void);
diff --git a/src/proto/normal.pro b/src/proto/normal.pro
index afa0799..6dcbe41 100644
--- a/src/proto/normal.pro
+++ b/src/proto/normal.pro
@@ -25,7 +25,6 @@
 void nv_g_home_m_cmd(cmdarg_T *cap);
 int nv_screengo(oparg_T *oap, int dir, long dist);
 void nv_scroll_line(cmdarg_T *cap);
-void scroll_redraw(int up, long count);
 void handle_tabmenu(void);
 void do_nv_ident(int c1, int c2);
 int get_visual_text(cmdarg_T *cap, char_u **pp, int *lenp);