summaryrefslogtreecommitdiff
path: root/src/charset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charset.c')
-rw-r--r--src/charset.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/charset.c b/src/charset.c
index 179fc89db..a4816887e 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -812,7 +812,16 @@ vim_strnsize(char_u *s, int len)
* Also see getvcol() below.
*/
-#define RET_WIN_BUF_CHARTABSIZE(wp, buf, p, col) \
+#ifdef FEAT_VARTABS
+# define RET_WIN_BUF_CHARTABSIZE(wp, buf, p, col) \
+ if (*(p) == TAB && (!(wp)->w_p_list || lcs_tab1)) \
+ { \
+ return tabstop_padding(col, (buf)->b_p_ts, (buf)->b_p_vts_array); \
+ } \
+ else \
+ return ptr2cells(p);
+#else
+# define RET_WIN_BUF_CHARTABSIZE(wp, buf, p, col) \
if (*(p) == TAB && (!(wp)->w_p_list || lcs_tab1)) \
{ \
int ts; \
@@ -821,6 +830,7 @@ vim_strnsize(char_u *s, int len)
} \
else \
return ptr2cells(p);
+#endif
int
chartabsize(char_u *p, colnr_T col)
@@ -1221,8 +1231,13 @@ win_nolbr_chartabsize(
if (*s == TAB && (!wp->w_p_list || lcs_tab1))
{
+# ifdef FEAT_VARTABS
+ return tabstop_padding(col, wp->w_buffer->b_p_ts,
+ wp->w_buffer->b_p_vts_array);
+# else
n = wp->w_buffer->b_p_ts;
return (int)(n - (col % n));
+# endif
}
n = ptr2cells(s);
/* Add one cell for a double-width character in the last column of the
@@ -1282,6 +1297,9 @@ getvcol(
char_u *line; /* start of the line */
int incr;
int head;
+#ifdef FEAT_VARTABS
+ int *vts = wp->w_buffer->b_p_vts_array;
+#endif
int ts = wp->w_buffer->b_p_ts;
int c;
@@ -1332,7 +1350,11 @@ getvcol(
}
/* A tab gets expanded, depending on the current column */
if (c == TAB)
+#ifdef FEAT_VARTABS
+ incr = tabstop_padding(vcol, ts, vts);
+#else
incr = ts - (vcol % ts);
+#endif
else
{
#ifdef FEAT_MBYTE