diff --git a/src/charset.c b/src/charset.c
index 399f258..e02f719 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -739,8 +739,8 @@
     RET_WIN_BUF_CHARTABSIZE(curwin, curbuf, p, col)
 }
 
-#ifdef FEAT_LINEBREAK
-    static int
+#if defined(FEAT_LINEBREAK) || defined(PROTO)
+    int
 win_chartabsize(win_T *wp, char_u *p, colnr_T col)
 {
     RET_WIN_BUF_CHARTABSIZE(wp, wp->w_buffer, p, col)
diff --git a/src/indent.c b/src/indent.c
index 0d6fadb..4ba31d2 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1021,7 +1021,21 @@
 		    if (wp->w_briopt_list > 0)
 			prev_list = wp->w_briopt_list;
 		    else
-			prev_indent = (*regmatch.endp - *regmatch.startp);
+		    {
+			char_u	*ptr = *regmatch.startp;
+			char_u	*end_ptr = *regmatch.endp;
+			int	indent = 0;
+
+			// Compute the width of the matched text.
+			// Use win_chartabsize() so that TAB size is correct,
+			// while wrapping is ignored.
+			while (ptr < end_ptr)
+			{
+			    indent += win_chartabsize(wp, ptr, indent);
+			    MB_PTR_ADV(ptr);
+			}
+			prev_indent = indent;
+		    }
 		}
 		vim_regfree(regmatch.regprog);
 	    }
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index a747319..2f64077 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -16,6 +16,7 @@
 int vim_strsize(char_u *s);
 int vim_strnsize(char_u *s, int len);
 int chartabsize(char_u *p, colnr_T col);
+int win_chartabsize(win_T *wp, char_u *p, colnr_T col);
 int linetabsize_str(char_u *s);
 int linetabsize_col(int startcol, char_u *s);
 int win_linetabsize(win_T *wp, linenr_T lnum, char_u *line, colnr_T len);
diff --git a/src/testdir/test_breakindent.vim b/src/testdir/test_breakindent.vim
index b306c02..16a11b3 100644
--- a/src/testdir/test_breakindent.vim
+++ b/src/testdir/test_breakindent.vim
@@ -797,18 +797,73 @@
 	\ ]
   let lines = s:screen_lines2(1, 9, 20)
   call s:compare_lines(expect, lines)
+
+  " check with TABs
+  call setline(1, ["\t1.\tCongress shall make no law",
+        \ "\t2.) Congress shall make no law",
+        \ "\t3.] Congress shall make no law"])
+  setl tabstop=4 list listchars=tab:<->
+  norm! 1gg
+  redraw!
+  let expect = [
+	\ "<-->1.<>Congress    ",
+	\ "        shall make  ",
+	\ "        no law      ",
+	\ "<-->2.) Congress    ",
+	\ "        shall make  ",
+	\ "        no law      ",
+	\ "<-->3.] Congress    ",
+	\ "        shall make  ",
+	\ "        no law      ",
+	\ ]
+  let lines = s:screen_lines2(1, 9, 20)
+  call s:compare_lines(expect, lines)
+
+  setl tabstop=2 nolist
+  redraw!
+  let expect = [
+	\ "  1.  Congress      ",
+	\ "      shall make no ",
+	\ "      law           ",
+	\ "  2.) Congress      ",
+	\ "      shall make no ",
+	\ "      law           ",
+	\ "  3.] Congress      ",
+	\ "      shall make no ",
+	\ "      law           ",
+	\ ]
+  let lines = s:screen_lines2(1, 9, 20)
+  call s:compare_lines(expect, lines)
+
+  setl tabstop& list listchars=space:_
+  redraw!
+  let expect = [
+	\ "^I1.^ICongress_     ",
+	\ "      shall_make_no_",
+	\ "      law           ",
+	\ "^I2.)_Congress_     ",
+	\ "      shall_make_no_",
+	\ "      law           ",
+	\ "^I3.]_Congress_     ",
+	\ "      shall_make_no_",
+	\ "      law           ",
+	\ ]
+  let lines = s:screen_lines2(1, 9, 20)
+  call s:compare_lines(expect, lines)
+
   " check formatlistpat indent with different list levels
-  let &l:flp = '^\s*\*\+\s\+'
+  let &l:flp = '^\s*\(\*\|•\)\+\s\+'
+  setl list&vim listchars&vim
   %delete _
   call setline(1, ['* Congress shall make no law',
-        \ '*** Congress shall make no law',
+        \ '••• Congress shall make no law',
         \ '**** Congress shall make no law'])
   norm! 1gg
   redraw!
   let expect = [
 	\ "* Congress shall    ",
 	\ "  make no law       ",
-	\ "*** Congress shall  ",
+	\ "••• Congress shall  ",
 	\ "    make no law     ",
 	\ "**** Congress shall ",
 	\ "     make no law    ",
@@ -824,7 +879,7 @@
   let expect = [
 	\ "* Congress shall    ",
 	\ "> make no law       ",
-	\ "*** Congress shall  ",
+	\ "••• Congress shall  ",
 	\ ">   make no law     ",
 	\ "**** Congress shall ",
 	\ ">    make no law    ",
@@ -840,7 +895,7 @@
   let expect = [
 	\ "* Congress shall    ",
 	\ ">   make no law     ",
-	\ "*** Congress shall  ",
+	\ "••• Congress shall  ",
 	\ ">     make no law   ",
 	\ "**** Congress shall ",
 	\ ">      make no law  ",
diff --git a/src/version.c b/src/version.c
index ddbf4eb..5c3c5ef 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    720,
+/**/
     719,
 /**/
     718,
