patch 8.1.0542: shiftwidth() does not take 'vartabstop' into account

Problem:    shiftwidth() does not take 'vartabstop' into account.
Solution:   Use the cursor position or a position explicitly passed.
            Also make >> and << work better with 'vartabstop'. (Christian
            Brabandt)
diff --git a/src/proto/edit.pro b/src/proto/edit.pro
index 9ba7164..768af3a 100644
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -46,4 +46,5 @@
 void ins_scroll(void);
 void ins_horscroll(void);
 int ins_copychar(linenr_T lnum);
+colnr_T get_nolist_virtcol(void);
 /* vim: set ft=c : */
diff --git a/src/proto/option.pro b/src/proto/option.pro
index 2280365..b198c75 100644
--- a/src/proto/option.pro
+++ b/src/proto/option.pro
@@ -72,6 +72,9 @@
 int tabstop_count(int *ts);
 int tabstop_first(int *ts);
 long get_sw_value(buf_T *buf);
+long get_sw_value_indent(buf_T *buf);
+long get_sw_value_pos(buf_T *buf, pos_T *pos);
+long get_sw_value_col(buf_T *buf, colnr_T col);
 long get_sts_value(void);
 void find_mps_values(int *initc, int *findc, int *backwards, int switchit);
 unsigned int get_bkc_value(buf_T *buf);