diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 60f01de..008926f 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -7758,6 +7758,9 @@
 	the text to be displayed.  Use "%1T" for the first label, "%2T" for
 	the second one, etc.  Use "%X" items for closing labels.
 
+	When changing something that is used in 'tabline' that does not
+	trigger it to be updated, use |:redrawtabline|.
+
 	Keep in mind that only one of the tab pages is the current one, others
 	are invisible and you can't jump to their windows.
 
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 67acc64..37b7074 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 8.1.  Last change: 2018 Dec 13
+*various.txt*   For Vim version 8.1.  Last change: 2019 Jan 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,6 +30,11 @@
 			includes an item that doesn't cause automatic
 			updating.
 
+						*:redrawt* *:redrawtabline*
+:redrawt[abline]	Redraw the tabline.  Useful to update the tabline when
+			'tabline' includes an item that doesn't trigger
+			automatic updating.
+
 							*N<Del>*
 <Del>			When entering a number: Remove the last digit.
 			Note: if you like to use <BS> for this, add this
diff --git a/src/ex_cmdidxs.h b/src/ex_cmdidxs.h
index 1c435ca..8b7c85c 100644
--- a/src/ex_cmdidxs.h
+++ b/src/ex_cmdidxs.h
@@ -23,14 +23,14 @@
   /* p */ 309,
   /* q */ 348,
   /* r */ 351,
-  /* s */ 370,
-  /* t */ 437,
-  /* u */ 480,
-  /* v */ 491,
-  /* w */ 509,
-  /* x */ 524,
-  /* y */ 533,
-  /* z */ 534
+  /* s */ 371,
+  /* t */ 438,
+  /* u */ 481,
+  /* v */ 492,
+  /* w */ 510,
+  /* x */ 525,
+  /* y */ 534,
+  /* z */ 535
 };
 
 /*
@@ -58,7 +58,7 @@
   /* o */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  5,  0,  0,  0,  0,  0,  0,  9,  0, 11,  0,  0,  0 },
   /* p */ {  1,  0,  3,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  9,  0,  0, 16, 17, 26,  0, 27,  0, 28,  0 },
   /* q */ {  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
-  /* r */ {  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 13, 18,  0,  0,  0,  0 },
+  /* r */ {  0,  0,  0,  0,  0,  0,  0,  0, 12,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 14, 19,  0,  0,  0,  0 },
   /* s */ {  2,  6, 15,  0, 18, 22,  0, 24, 25,  0,  0, 28, 30, 34, 38, 40,  0, 48,  0, 49,  0, 61, 62,  0, 63,  0 },
   /* t */ {  2,  0, 19,  0, 22, 24,  0, 25,  0, 26,  0, 27, 31, 34, 36, 37,  0, 38, 40,  0, 41,  0,  0,  0,  0,  0 },
   /* u */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
@@ -69,4 +69,4 @@
   /* z */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }
 };
 
-static const int command_count = 547;
+static const int command_count = 548;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 49e7fc7..6bb930c 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -1175,6 +1175,9 @@
 EX(CMD_redrawstatus,	"redrawstatus",	ex_redrawstatus,
 			BANG|TRLBAR|CMDWIN,
 			ADDR_LINES),
+EX(CMD_redrawtabline,	"redrawtabline", ex_redrawtabline,
+			TRLBAR|CMDWIN,
+			ADDR_LINES),
 EX(CMD_registers,	"registers",	ex_display,
 			EXTRA|NOTRLCOM|TRLBAR|CMDWIN,
 			ADDR_LINES),
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index aad8182..354cc11 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -296,6 +296,7 @@
 static void	ex_later(exarg_T *eap);
 static void	ex_redir(exarg_T *eap);
 static void	ex_redrawstatus(exarg_T *eap);
+static void	ex_redrawtabline(exarg_T *eap);
 static void	close_redir(void);
 static void	ex_mkrc(exarg_T *eap);
 static void	ex_mark(exarg_T *eap);
@@ -9918,6 +9919,25 @@
     out_flush();
 }
 
+/*
+ * ":redrawtabline": force redraw of the tabline
+ */
+    static void
+ex_redrawtabline(exarg_T *eap UNUSED)
+{
+    int		r = RedrawingDisabled;
+    int		p = p_lz;
+
+    RedrawingDisabled = 0;
+    p_lz = FALSE;
+
+    draw_tabline();
+
+    RedrawingDisabled = r;
+    p_lz = p;
+    out_flush();
+}
+
     static void
 close_redir(void)
 {
diff --git a/src/proto/screen.pro b/src/proto/screen.pro
index 7a10e3b..552453a 100644
--- a/src/proto/screen.pro
+++ b/src/proto/screen.pro
@@ -52,6 +52,7 @@
 int showmode(void);
 void unshowmode(int force);
 void clearmode(void);
+void draw_tabline(void);
 void get_trans_bufname(buf_T *buf);
 int redrawing(void);
 int messaging(void);
diff --git a/src/screen.c b/src/screen.c
index e9405b4..04f19d7 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -154,7 +154,6 @@
 static void win_rest_invalid(win_T *wp);
 static void msg_pos_mode(void);
 static void recording_mode(int attr);
-static void draw_tabline(void);
 static int fillchar_status(int *attr, win_T *wp);
 static int fillchar_vsep(int *attr);
 #ifdef FEAT_MENU
@@ -10693,7 +10692,7 @@
 /*
  * Draw the tab pages line at the top of the Vim window.
  */
-    static void
+    void
 draw_tabline(void)
 {
     int		tabcount = 0;
diff --git a/src/testdir/test_tabline.vim b/src/testdir/test_tabline.vim
index b08f299..383d239 100644
--- a/src/testdir/test_tabline.vim
+++ b/src/testdir/test_tabline.vim
@@ -1,19 +1,22 @@
-function! TablineWithCaughtError()
+
+source shared.vim
+
+func TablineWithCaughtError()
   let s:func_in_tabline_called = 1
   try
     call eval('unknown expression')
   catch
   endtry
   return ''
-endfunction
+endfunc
 
-function! TablineWithError()
+func TablineWithError()
   let s:func_in_tabline_called = 1
   call eval('unknown expression')
   return ''
-endfunction
+endfunc
 
-function! Test_caught_error_in_tabline()
+func Test_caught_error_in_tabline()
   if has('gui')
     set guioptions-=e
   endif
@@ -27,9 +30,9 @@
   call assert_equal(tabline, &tabline)
   set tabline=
   let &showtabline = showtabline_save
-endfunction
+endfunc
 
-function! Test_tabline_will_be_disabled_with_error()
+func Test_tabline_will_be_disabled_with_error()
   if has('gui')
     set guioptions-=e
   endif
@@ -46,4 +49,24 @@
   call assert_equal('', &tabline)
   set tabline=
   let &showtabline = showtabline_save
-endfunction
+endfunc
+
+func Test_redrawtabline()
+  if has('gui')
+    set guioptions-=e
+  endif
+  let showtabline_save = &showtabline
+  set showtabline=2
+  set tabline=%{bufnr('$')}
+  edit Xtabline1
+  edit Xtabline2
+  redraw
+  call assert_match(bufnr('$') . '', Screenline(1))
+  au BufAdd * redrawtabline
+  badd Xtabline3
+  call assert_match(bufnr('$') . '', Screenline(1))
+
+  set tabline=
+  let &showtabline = showtabline_save
+  au! Bufadd
+endfunc
diff --git a/src/version.c b/src/version.c
index e772d05..768c384 100644
--- a/src/version.c
+++ b/src/version.c
@@ -800,6 +800,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    706,
+/**/
     705,
 /**/
     704,
