From 45ae3e442f4aa9c10dce4d610760a2084c35c018 Mon Sep 17 00:00:00 2001 From: Markus Heidelberg Date: Fri, 13 Mar 2009 10:21:45 +0100 Subject: [PATCH] remove "variable tabstops" feature Resets the tree to 7.2.132 state. --- runtime/doc/change.txt | 5 - runtime/doc/options.txt | 46 ----- runtime/doc/tags | 5 - runtime/doc/various.txt | 1 - src/buffer.c | 13 -- src/charset.c | 33 ---- src/edit.c | 62 +------ src/eval.c | 3 - src/ex_cmds.c | 76 +------- src/feature.h | 7 - src/gui_beval.c | 12 -- src/gui_beval.h | 3 - src/gui_w32.c | 7 - src/hardcopy.c | 5 - src/message.c | 4 - src/misc1.c | 146 --------------- src/ops.c | 190 +++++-------------- src/option.c | 480 ------------------------------------------------ src/option.h | 4 - src/proto/misc1.pro | 3 - src/proto/option.pro | 11 -- src/screen.c | 5 - src/structs.h | 7 - src/testdir/test99.in | 85 --------- src/testdir/test99.ok | 28 --- src/version.c | 5 - src/workshop.c | 18 +- 27 files changed, 50 insertions(+), 1214 deletions(-) delete mode 100644 src/testdir/test99.in delete mode 100644 src/testdir/test99.ok diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index fd61958d..440e6b54 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -840,11 +840,6 @@ This replaces each 'E' character with a euro sign. Read more in ||. {not in Vi} Not available when |+ex_extra| feature was disabled at compile time. - If the |+vartabs| feature is enabled then a list of - tab widths separated by commas may be used in place of - a single tabstop. Each value in the list represents - the width of one tabstop, except the final value which - applies to all following tabstops. *retab-example* Example for using autocommands and ":retab" to edit a file which is stored diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 6885c574..bebaa03b 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -6067,10 +6067,6 @@ A jump table for the options with a short description can be found at |Q_op|. set. NOTE: This option is set to 0 when 'compatible' is set. - If Vim is compiled with the |+vartabs| feature then the value of - 'softtabstop' will be ignored if |'varsofttabstop'| is set to - anything other than an empty string. - *'spell'* *'nospell'* 'spell' boolean (default off) local to window @@ -6604,10 +6600,6 @@ A jump table for the options with a short description can be found at |Q_op|. though. Otherwise aligned comments will be wrong when 'tabstop' is changed. - If Vim is compiled with the |+vartabs| feature then the value of - 'tabstop' will be ignored if |'vartabstop'| is set to anything other - than an empty string. - *'tagbsearch'* *'tbs'* *'notagbsearch'* *'notbs'* 'tagbsearch' 'tbs' boolean (default on) global @@ -7177,44 +7169,6 @@ A jump table for the options with a short description can be found at |Q_op|. written to disk (see |crash-recovery|). Also used for the |CursorHold| autocommand event. - *'varsofttabstop'* *'vsts'* -'varsofttabstop' 'vsts' string (default "") - local to buffer - {only available when compiled with the |+vartabs| - feature} - {not in Vi} - A list of the number of spaces that a counts for while editing, - such as inserting a or using . It "feels" like variable- - width s are being inserted, while in fact a mixture of spaces - and s is used. Tab widths are separated with commas, with the - final value applying to all subsequent tabs. - - For example, when editing assembly language files where statements - start in the 8th column and comments in the 40th, it may be useful - to use the following: > - :set varsofttabstop=8,32,8 -< This will set soft tabstops at the 8th and 40th columns, and at every - 8th column thereafter. - - Note that the value of |'softtabstop'| will be ignored while - 'varsofttabstop' is set. - - *'vartabstop'* *'vts'* -'vartabstop' 'vts' string (default 8) - local to buffer - {only available when compiled with the |+vartabs| - feature} - {not in Vi} - A list of the number of spaces that a in the file counts for, - separated by commas. Each value corresponds to one tab, with the - final value applying to all subsequent tabs. For example: > - :set vartabstop=4,20,10,8 -< This will make the first tab 4 spaces wide, the second 20 spaces, - the third 10 spaces, and all following tabs 8 spaces. - - Note that the value of |'tabstop'| will be ignored while 'vartabstop' - is set. - *'verbose'* *'vbs'* 'verbose' 'vbs' number (default 0) global diff --git a/runtime/doc/tags b/runtime/doc/tags index 58e0896f..cf872e7a 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -1002,8 +1002,6 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'updatecount' options.txt /*'updatecount'* 'updatetime' options.txt /*'updatetime'* 'ut' options.txt /*'ut'* -'varsofttabstop' options.txt /*'varsofttabstop'* -'vartabstop' options.txt /*'vartabstop'* 'vb' options.txt /*'vb'* 'vbs' options.txt /*'vbs'* 'vdir' options.txt /*'vdir'* @@ -1018,8 +1016,6 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* 'virtualedit' options.txt /*'virtualedit'* 'visualbell' options.txt /*'visualbell'* 'vop' options.txt /*'vop'* -'vsts' options.txt /*'vsts'* -'vts' options.txt /*'vts'* 'w1200' vi_diff.txt /*'w1200'* 'w300' vi_diff.txt /*'w300'* 'w9600' vi_diff.txt /*'w9600'* @@ -1189,7 +1185,6 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME* +title various.txt /*+title* +toolbar various.txt /*+toolbar* +user_commands various.txt /*+user_commands* -+vartabs various.txt /*+vartabs* +vertsplit various.txt /*+vertsplit* +viminfo various.txt /*+viminfo* +virtualedit various.txt /*+virtualedit* diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 2752c926..cf4b0c6b 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -391,7 +391,6 @@ N *+textobjects* |text-objects| selection N *+title* Setting the window 'title' and 'icon' N *+toolbar* |gui-toolbar| N *+user_commands* User-defined commands. |user-commands| -B *+vartabs* Variable-width tabstops. |'vartabstop'| N *+viminfo* |'viminfo'| N *+vertsplit* Vertically split windows |:vsplit| N *+virtualedit* |'virtualedit'| diff --git a/src/buffer.c b/src/buffer.c index a6e6cfe5..a052e12c 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1754,19 +1754,6 @@ free_buf_options(buf, free_p_ff) clear_string_option(&buf->b_p_fo); clear_string_option(&buf->b_p_flp); clear_string_option(&buf->b_p_isk); -#ifdef FEAT_VARTABS - clear_string_option(&buf->b_p_vsts); - if (buf->b_p_vsts_nopaste) - vim_free(buf->b_p_vsts_nopaste); - buf->b_p_vsts_nopaste = 0; - if (buf->b_p_vsts_ary) - vim_free(buf->b_p_vsts_ary); - buf->b_p_vsts_ary = 0; - clear_string_option(&buf->b_p_vts); - if (buf->b_p_vts_ary) - vim_free(buf->b_p_vts_ary); - buf->b_p_vts_ary = 0; -#endif #ifdef FEAT_KEYMAP clear_string_option(&buf->b_p_keymap); ga_clear(&buf->b_kmap_ga); diff --git a/src/charset.c b/src/charset.c index 2a2cdf54..0f4b0b99 100644 --- a/src/charset.c +++ b/src/charset.c @@ -796,15 +796,6 @@ vim_strnsize(s, len) * Also see getvcol() below. */ -#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_ary); \ - } \ - else \ - return ptr2cells(p); -#else #define RET_WIN_BUF_CHARTABSIZE(wp, buf, p, col) \ if (*(p) == TAB && (!(wp)->w_p_list || lcs_tab1)) \ { \ @@ -814,7 +805,6 @@ vim_strnsize(s, len) } \ else \ return ptr2cells(p); -#endif #if defined(FEAT_VREPLACE) || defined(FEAT_EX_EXTRA) || defined(FEAT_GUI) \ || defined(FEAT_VIRTUALEDIT) || defined(PROTO) @@ -1050,9 +1040,6 @@ win_lbr_chartabsize(wp, s, col, headp) colnr_T col2; colnr_T colmax; int added; -# ifdef FEAT_VARTABS - colnr_T orig_col = col; -# endif # ifdef FEAT_MBYTE int mb_added = 0; # else @@ -1160,15 +1147,7 @@ win_lbr_chartabsize(wp, s, col, headp) { added = vim_strsize(p_sbr); if (tab_corr) - { -# ifdef FEAT_VARTABS - int ts = tabstop_at(orig_col, wp->w_buffer->b_p_ts, - wp->w_buffer->b_p_vts_ary); - size += (added / ts) * ts; -# else size += (added / wp->w_buffer->b_p_ts) * wp->w_buffer->b_p_ts; -# endif - } else size += added; if (col != 0) @@ -1198,13 +1177,8 @@ win_nolbr_chartabsize(wp, s, col, headp) 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_ary); -# 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 @@ -1265,9 +1239,6 @@ getvcol(wp, pos, start, cursor, end) char_u *posptr; /* points to char at pos->col */ int incr; int head; -#ifdef FEAT_VARTABS - int *vts = wp->w_buffer->b_p_vts_ary; -#endif int ts = wp->w_buffer->b_p_ts; int c; @@ -1303,11 +1274,7 @@ getvcol(wp, pos, start, cursor, end) } /* 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 diff --git a/src/edit.c b/src/edit.c index 389e00fb..b998f8df 100644 --- a/src/edit.c +++ b/src/edit.c @@ -653,13 +653,7 @@ edit(cmdchar, startln, count) mincol = curwin->w_wcol; validate_cursor_col(); - if ( -#ifdef FEAT_VARTABS - (int)curwin->w_wcol < (int)mincol - - tabstop_at(get_nolist_virtcol(), curbuf->b_p_ts, curbuf->b_p_vts_ary) -#else - (int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts -#endif + if ((int)curwin->w_wcol < (int)mincol - curbuf->b_p_ts && curwin->w_wrow == W_WINROW(curwin) + curwin->w_height - 1 - p_so && (curwin->w_cursor.lnum != curwin->w_topline @@ -8524,13 +8518,7 @@ ins_bs(c, mode, inserted_space_p) */ if ( mode == BACKSPACE_CHAR && ((p_sta && in_indent) - || ( -#ifdef FEAT_VARTABS - (tabstop_count(curbuf->b_p_vsts_ary) != 0 - || curbuf->b_p_sts != 0) -#else - curbuf->b_p_sts != 0 -#endif + || (curbuf->b_p_sts != 0 && curwin->w_cursor.col > 0 && (*(ml_get_cursor() - 1) == TAB || (*(ml_get_cursor() - 1) == ' ' @@ -8543,12 +8531,10 @@ ins_bs(c, mode, inserted_space_p) colnr_T start_vcol; *inserted_space_p = FALSE; -#ifndef FEAT_VARTABS if (p_sta && in_indent) ts = curbuf->b_p_sw; else ts = curbuf->b_p_sts; -#endif /* Compute the virtual column where we want to be. Since * 'showbreak' may get in the way, need to get the last column of * the previous character. */ @@ -8557,15 +8543,7 @@ ins_bs(c, mode, inserted_space_p) dec_cursor(); getvcol(curwin, &curwin->w_cursor, NULL, NULL, &want_vcol); inc_cursor(); -#ifdef FEAT_VARTABS - if (p_sta && in_indent) - want_vcol = (want_vcol / curbuf->b_p_sw) * curbuf->b_p_sw; - else - want_vcol = tabstop_start(want_vcol, curbuf->b_p_sts, - curbuf->b_p_vsts_ary); -#else want_vcol = (want_vcol / ts) * ts; -#endif /* delete characters until we are at or before want_vcol */ while (vcol > want_vcol @@ -9224,21 +9202,8 @@ ins_tab() * When nothing special, insert TAB like a normal character */ if (!curbuf->b_p_et -#ifdef FEAT_VARTABS - && !(p_sta && ind - /* These five lines mean 'tabstop' != 'shiftwidth' */ - && ((tabstop_count(curbuf->b_p_vts_ary) > 1) - || (tabstop_count(curbuf->b_p_vts_ary) == 1 - && tabstop_first(curbuf->b_p_vts_ary) != curbuf->b_p_sw) - || (tabstop_count(curbuf->b_p_vts_ary) == 0 - && curbuf->b_p_ts != curbuf->b_p_sw))) - && tabstop_count(curbuf->b_p_vsts_ary) == 0 - && curbuf->b_p_sts == 0 -#else && !(p_sta && ind && curbuf->b_p_ts != curbuf->b_p_sw) - && curbuf->b_p_sts == 0 -#endif - ) + && curbuf->b_p_sts == 0) return TRUE; if (stop_arrow() == FAIL) @@ -9252,20 +9217,6 @@ ins_tab() #endif AppendToRedobuff((char_u *)"\t"); -#ifdef FEAT_VARTABS - if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ - { - temp = (int)curbuf->b_p_sw; - temp -= get_nolist_virtcol() % temp; - } - else if (tabstop_count(curbuf->b_p_vsts_ary) > 0 || curbuf->b_p_sts > 0) - /* use 'softtabstop' when set */ - temp = tabstop_padding(get_nolist_virtcol(), curbuf->b_p_sts, - curbuf->b_p_vsts_ary); - else /* otherwise use 'tabstop' */ - temp = tabstop_padding(get_nolist_virtcol(), curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else if (p_sta && ind) /* insert tab in indent, use 'shiftwidth' */ temp = (int)curbuf->b_p_sw; else if (curbuf->b_p_sts > 0) /* use 'softtabstop' when set */ @@ -9273,7 +9224,6 @@ ins_tab() else /* otherwise use 'tabstop' */ temp = (int)curbuf->b_p_ts; temp -= get_nolist_virtcol() % temp; -#endif /* * Insert the first space with ins_char(). It will delete one char in @@ -9298,13 +9248,7 @@ ins_tab() /* * When 'expandtab' not set: Replace spaces by TABs where possible. */ -#ifdef FEAT_VARTABS - if (!curbuf->b_p_et && (tabstop_count(curbuf->b_p_vsts_ary) > 0 - || curbuf->b_p_sts > 0 - || (p_sta && ind))) -#else if (!curbuf->b_p_et && (curbuf->b_p_sts || (p_sta && ind))) -#endif { char_u *ptr; #ifdef FEAT_VREPLACE diff --git a/src/eval.c b/src/eval.c index 375d79d9..98979b17 100644 --- a/src/eval.c +++ b/src/eval.c @@ -11798,9 +11798,6 @@ f_has(argvars, rettv) #ifdef FEAT_VIMINFO "viminfo", #endif -#ifdef FEAT_VARTABS - "vartabs", -#endif #ifdef FEAT_VERTSPLIT "vertsplit", #endif diff --git a/src/ex_cmds.c b/src/ex_cmds.c index 53b04782..d95a3c23 100644 --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -585,17 +585,12 @@ ex_retab(eap) long vcol; long start_col = 0; /* For start of white-space string */ long start_vcol = 0; /* For start of white-space string */ + int temp; long old_len; char_u *ptr; char_u *new_line = (char_u *)1; /* init to non-NULL */ int did_undo; /* called u_save for current line */ -#ifdef FEAT_VARTABS - int *new_ts = 0; - char_u *new_ts_str; /* string value of tab argument */ -#else - int temp; int new_ts; -#endif int save_list; linenr_T first_line = 0; /* first changed line */ linenr_T last_line = 0; /* last changed line */ @@ -603,27 +598,6 @@ ex_retab(eap) save_list = curwin->w_p_list; curwin->w_p_list = 0; /* don't want list mode here */ -#ifdef FEAT_VARTABS - new_ts_str = eap->arg; - if (vim_isdigit(*(eap->arg)) && !tabstop_set(eap->arg, &new_ts)) - { - EMSG(_(e_invarg)); - return; - } - while (vim_isdigit(*(eap->arg)) || *(eap->arg) == ',') - ++(eap->arg); - - /* This ensures that either new_ts and new_ts_str are freshly allocated, - * or new_ts points to an existing array and new_ts_str is null. - */ - if (new_ts == 0) - { - new_ts = curbuf->b_p_vts_ary; - new_ts_str = NULL; - } - else - new_ts_str = vim_strnsave(new_ts_str, eap->arg - new_ts_str); -#else new_ts = getdigits(&(eap->arg)); if (new_ts < 0) { @@ -632,7 +606,6 @@ ex_retab(eap) } if (new_ts == 0) new_ts = curbuf->b_p_ts; -#endif for (lnum = eap->line1; !got_int && lnum <= eap->line2; ++lnum) { ptr = ml_get(lnum); @@ -665,12 +638,6 @@ ex_retab(eap) num_tabs = 0; if (!curbuf->b_p_et) { -#ifdef FEAT_VARTABS - int t, s; - tabstop_fromto(start_vcol, vcol, 0, new_ts, &t, &s); - num_tabs = t; - num_spaces = s; -#else temp = new_ts - (start_vcol % new_ts); if (num_spaces >= temp) { @@ -679,7 +646,6 @@ ex_retab(eap) } num_tabs += num_spaces / new_ts; num_spaces -= (num_spaces / new_ts) * new_ts; -#endif } if (curbuf->b_p_et || got_tab || (num_spaces + num_tabs < len)) @@ -737,54 +703,14 @@ ex_retab(eap) if (got_int) EMSG(_(e_interr)); -#ifdef FEAT_VARTABS - /* If a single value was given then it can be considered equal to - * either the value of 'tabstop' or the value of 'vartabstop'. - */ - if (tabstop_count(curbuf->b_p_vts_ary) == 0 - && tabstop_count(new_ts) == 1 - && curbuf->b_p_ts == tabstop_first(new_ts)) - ; /* not changed */ - else if (tabstop_count(curbuf->b_p_vts_ary) > 0 - && tabstop_eq(curbuf->b_p_vts_ary, new_ts)) - ; /* not changed */ - else - redraw_curbuf_later(NOT_VALID); -#else if (curbuf->b_p_ts != new_ts) redraw_curbuf_later(NOT_VALID); -#endif if (first_line != 0) changed_lines(first_line, 0, last_line + 1, 0L); curwin->w_p_list = save_list; /* restore 'list' */ -#ifdef FEAT_VARTABS - if (new_ts_str != NULL) /* set the new tabstop */ - { - /* If 'vartabstop' is in use or if the value given to retab has more - * than one tabstop then update 'vartabstop'. - */ - int* old_vts_ary = curbuf->b_p_vts_ary; - if (tabstop_count(old_vts_ary) > 0 || tabstop_count(new_ts) > 1) { - set_string_option_direct((char_u *)"vts", -1, new_ts_str, - OPT_FREE|OPT_LOCAL, 0); - vim_free(new_ts_str); - curbuf->b_p_vts_ary = new_ts; - vim_free(old_vts_ary); - } - /* If 'vartabstop' wasn't in use and a single value was given to - * retab then update 'tabstop'. - */ - else - { - curbuf->b_p_ts = tabstop_first(new_ts); - vim_free(new_ts); - } - } -#else curbuf->b_p_ts = new_ts; -#endif coladvance(curwin->w_curswant); u_clearline(); diff --git a/src/feature.h b/src/feature.h index 7a5f71c7..ae167503 100644 --- a/src/feature.h +++ b/src/feature.h @@ -812,13 +812,6 @@ #endif /* - * +vartabs 'vartabstop' and 'varsofttabstop' options. - */ -#ifdef FEAT_BIG -# define FEAT_VARTABS -#endif - -/* * Preferences: * ============ */ diff --git a/src/gui_beval.c b/src/gui_beval.c index a9fb0da2..7adde4ea 100644 --- a/src/gui_beval.c +++ b/src/gui_beval.c @@ -221,9 +221,6 @@ gui_mch_create_beval_area(target, mesg, mesgCB, clientData) beval->msg = mesg; beval->msgCB = mesgCB; beval->clientData = clientData; -#ifdef FEAT_VARTABS - beval->vts = 0; -#endif /* * Set up event handler which will keep its eyes on the pointer, @@ -267,10 +264,6 @@ gui_mch_destroy_beval_area(beval) # else XtDestroyWidget(beval->balloonShell); # endif -# ifdef FEAT_VARTABS - if (beval->vts) - vim_free(beval->vts); -# endif vim_free(beval); } #endif @@ -408,11 +401,6 @@ get_beval_info(beval, getword, winp, lnump, textp, colp) *lnump = lnum; *textp = lbuf; *colp = col; -#ifdef FEAT_VARTABS - if (beval->vts) - vim_free(beval->vts); - beval->vts = tabstop_copy(wp->w_buffer->b_p_vts_ary); -#endif beval->ts = wp->w_buffer->b_p_ts; return OK; } diff --git a/src/gui_beval.h b/src/gui_beval.h index a80c1a9a..75d5a18f 100644 --- a/src/gui_beval.h +++ b/src/gui_beval.h @@ -58,9 +58,6 @@ typedef struct BalloonEvalStruct BeState showState; /* tells us whats currently going on */ # endif #endif -#ifdef FEAT_VARTABS - int *vts; /* vartabstop setting for this buffer */ -#endif int ts; /* tabstop setting for this buffer */ char_u *msg; void (*msgCB)__ARGS((struct BalloonEvalStruct *, int)); diff --git a/src/gui_w32.c b/src/gui_w32.c index aaa20c59..164e8c61 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -4741,9 +4741,6 @@ gui_mch_create_beval_area(target, mesg, mesgCB, clientData) beval->msg = mesg; beval->msgCB = mesgCB; beval->clientData = clientData; -#ifdef FEAT_VARTABS - beval->vts = 0; -#endif InitCommonControls(); cur_beval = beval; @@ -4804,10 +4801,6 @@ TrackUserActivity(UINT uMsg) gui_mch_destroy_beval_area(beval) BalloonEval *beval; { -#ifdef FEAT_VARTABS - if (beval->vts) - vim_free(beval->vts); -#endif vim_free(beval); } #endif /* FEAT_BEVAL */ diff --git a/src/hardcopy.c b/src/hardcopy.c index cad78abf..7cc256ff 100644 --- a/src/hardcopy.c +++ b/src/hardcopy.c @@ -901,12 +901,7 @@ hardcopy_line(psettings, page_line, ppos) if (line[col] == TAB || tab_spaces != 0) { if (tab_spaces == 0) -#ifdef FEAT_VARTABS - tab_spaces = tabstop_padding(print_pos, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else tab_spaces = (int)(curbuf->b_p_ts - (print_pos % curbuf->b_p_ts)); -#endif while (tab_spaces > 0) { diff --git a/src/message.c b/src/message.c index 6862fa66..ffa45a19 100644 --- a/src/message.c +++ b/src/message.c @@ -1627,11 +1627,7 @@ msg_prt_line(s, list) if (c == TAB && (!list || lcs_tab1)) { /* tab amount depends on current column */ -#ifdef FEAT_VARTABS - n_extra = tabstop_padding(col, curbuf->b_p_ts, curbuf->b_p_vts_ary) - 1; -#else n_extra = curbuf->b_p_ts - col % curbuf->b_p_ts - 1; -#endif if (!list) { c = ' '; diff --git a/src/misc1.c b/src/misc1.c index be1d1c1f..04872902 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -24,11 +24,7 @@ static int copy_indent __ARGS((int size, char_u *src)); int get_indent() { -#ifdef FEAT_VARTABS - return get_indent_str_vtab(ml_get_curline(), curbuf->b_p_ts, curbuf->b_p_vts_ary); -#else return get_indent_str(ml_get_curline(), (int)curbuf->b_p_ts); -#endif } /* @@ -38,11 +34,7 @@ get_indent() get_indent_lnum(lnum) linenr_T lnum; { -#ifdef FEAT_VARTABS - return get_indent_str_vtab(ml_get(lnum), curbuf->b_p_ts, curbuf->b_p_vts_ary); -#else return get_indent_str(ml_get(lnum), (int)curbuf->b_p_ts); -#endif } #if defined(FEAT_FOLDING) || defined(PROTO) @@ -55,11 +47,7 @@ get_indent_buf(buf, lnum) buf_T *buf; linenr_T lnum; { -#ifdef FEAT_VARTABS - return get_indent_str_vtab(ml_get_buf(buf, lnum, FALSE), curbuf->b_p_ts, buf->b_p_vts_ary); -#else return get_indent_str(ml_get_buf(buf, lnum, FALSE), (int)buf->b_p_ts); -#endif } #endif @@ -86,32 +74,6 @@ get_indent_str(ptr, ts) return count; } -#ifdef FEAT_VARTABS -/* - * count the size (in window cells) of the indent in line "ptr", using - * variable tabstops - */ - int -get_indent_str_vtab(ptr, ts, vts) - char_u *ptr; - int ts; - int *vts; -{ - int count = 0; - - for ( ; *ptr; ++ptr) - { - if (*ptr == TAB) /* count a tab for what it is worth */ - count += tabstop_padding(count, ts, vts); - else if (*ptr == ' ') - ++count; /* count a space for one */ - else - break; - } - return count; -} -#endif - /* * Set the indent of the current line. * Leaves the cursor on the first non-blank in the line. @@ -136,9 +98,6 @@ set_indent(size, flags) int line_len; int doit = FALSE; int ind_done = 0; /* measured in spaces */ -#ifdef FEAT_VARTABS - int ind_col = 0; -#endif int tab_pad; int retval = FALSE; int orig_char_len = -1; /* number of initial whitespace chars when @@ -171,13 +130,8 @@ set_indent(size, flags) { if (*p == TAB) { -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif /* stop if this tab will overshoot the target */ if (todo < tab_pad) break; @@ -194,50 +148,23 @@ set_indent(size, flags) ++p; } -#ifdef FEAT_VARTABS - /* These diverge from this point. */ - ind_col = ind_done; -#endif /* Set initial number of whitespace chars to copy if we are * preserving indent but expandtab is set */ if (curbuf->b_p_et) orig_char_len = ind_len; /* Fill to next tabstop with a tab, if possible */ -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif if (todo >= tab_pad && orig_char_len == -1) { doit = TRUE; todo -= tab_pad; ++ind_len; /* ind_done += tab_pad; */ -#ifdef FEAT_VARTABS - ind_col += tab_pad; -#endif } } /* count tabs required for indent */ -#ifdef FEAT_VARTABS - for (;;) - { - tab_pad = tabstop_padding(ind_col, curbuf->b_p_ts, curbuf->b_p_vts_ary); - if (todo < tab_pad) - break; - if (*p != TAB) - doit = TRUE; - else - ++p; - todo -= tab_pad; - ++ind_len; - ind_col += tab_pad; - } -#else while (todo >= (int)curbuf->b_p_ts) { if (*p != TAB) @@ -248,7 +175,6 @@ set_indent(size, flags) ++ind_len; /* ind_done += (int)curbuf->b_p_ts; */ } -#endif } /* count spaces required for indent */ while (todo > 0) @@ -323,13 +249,8 @@ set_indent(size, flags) { if (*p == TAB) { -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif /* stop if this tab will overshoot the target */ if (todo < tab_pad) break; @@ -345,41 +266,21 @@ set_indent(size, flags) } /* Fill to next tabstop with a tab, if possible */ -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif if (todo >= tab_pad) { *s++ = TAB; todo -= tab_pad; -#ifdef FEAT_VARTABS - ind_done += tab_pad; -#endif } p = skipwhite(p); } -#ifdef FEAT_VARTABS - for (;;) - { - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, curbuf->b_p_vts_ary); - if (todo < tab_pad) - break; - *s++ = TAB; - todo -= tab_pad; - ind_done += tab_pad; - } -#else while (todo >= (int)curbuf->b_p_ts) { *s++ = TAB; todo -= (int)curbuf->b_p_ts; } -#endif } while (todo > 0) { @@ -426,9 +327,6 @@ copy_indent(size, src) int tab_pad; int ind_done; int round; -#ifdef FEAT_VARTABS - int ind_col; -#endif /* Round 1: compute the number of characters needed for the indent * Round 2: copy the characters. */ @@ -437,9 +335,6 @@ copy_indent(size, src) todo = size; ind_len = 0; ind_done = 0; -#ifdef FEAT_VARTABS - ind_col = 0; -#endif s = src; /* Count/copy the usable portion of the source line */ @@ -447,28 +342,18 @@ copy_indent(size, src) { if (*s == TAB) { -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif /* Stop if this tab will overshoot the target */ if (todo < tab_pad) break; todo -= tab_pad; ind_done += tab_pad; -#ifdef FEAT_VARTABS - ind_col += tab_pad; -#endif } else { --todo; ++ind_done; -#ifdef FEAT_VARTABS - ++ind_col; -#endif } ++ind_len; if (p != NULL) @@ -477,36 +362,16 @@ copy_indent(size, src) } /* Fill to next tabstop with a tab, if possible */ -#ifdef FEAT_VARTABS - tab_pad = tabstop_padding(ind_done, curbuf->b_p_ts, curbuf->b_p_vts_ary); -#else tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts); -#endif if (todo >= tab_pad) { todo -= tab_pad; ++ind_len; -#ifdef FEAT_VARTABS - ind_col += tab_pad; -#endif if (p != NULL) *p++ = TAB; } /* Add tabs required for indent */ -#ifdef FEAT_VARTABS - for (;;) - { - tab_pad = tabstop_padding(ind_col, curbuf->b_p_ts, curbuf->b_p_vts_ary); - if (todo < tab_pad) - break; - todo -= tab_pad; - ++ind_len; - ind_col += tab_pad; - if (p != NULL) - *p++ = TAB; - } -#else while (todo >= (int)curbuf->b_p_ts) { todo -= (int)curbuf->b_p_ts; @@ -514,7 +379,6 @@ copy_indent(size, src) if (p != NULL) *p++ = TAB; } -#endif /* Count/add spaces required for indent */ while (todo > 0) @@ -785,12 +649,7 @@ open_line(dir, flags, old_indent) /* * count white space on current line */ -#ifdef FEAT_VARTABS - newindent = get_indent_str_vtab(saved_line, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else newindent = get_indent_str(saved_line, (int)curbuf->b_p_ts); -#endif if (newindent == 0) newindent = old_indent; /* for ^^D command in insert mode */ @@ -1311,12 +1170,7 @@ open_line(dir, flags, old_indent) || do_si #endif ) -#ifdef FEAT_VARTABS - newindent = get_indent_str_vtab(leader, curbuf->b_p_ts, - curbuf->b_p_vts_ary); -#else newindent = get_indent_str(leader, (int)curbuf->b_p_ts); -#endif /* Add the indent offset */ if (newindent + off < 0) diff --git a/src/ops.c b/src/ops.c index db13cf9e..557985c3 100644 --- a/src/ops.c +++ b/src/ops.c @@ -386,9 +386,6 @@ shift_block(oap, amount) char_u *newp, *oldp, *midp, *ptr; int oldcol = curwin->w_cursor.col; int p_sw = (int)curbuf->b_p_sw; -#ifdef FEAT_VARTABS - int *p_vts = curbuf->b_p_vts_ary; -#endif int p_ts = (int)curbuf->b_p_ts; struct block_def bd; int internal = 0; @@ -438,19 +435,12 @@ shift_block(oap, amount) } /* OK, now total=all the VWS reqd, and textstart points at the 1st * non-ws char in the block. */ -#ifdef FEAT_VARTABS - if (!curbuf->b_p_et) - tabstop_fromto(ws_vcol, ws_vcol + total, p_ts, p_vts, &i, &j); - else - j = total; -#else if (!curbuf->b_p_et) i = ((ws_vcol % p_ts) + total) / p_ts; /* number of tabs */ if (i) j = ((ws_vcol % p_ts) + total) % p_ts; /* number of spp */ else j = total; -#endif /* if we're splitting a TAB, allow for it */ bd.textcol -= bd.pre_whitesp_c - (bd.startspaces != 0); len = (int)STRLEN(bd.textstart) + 1; @@ -466,146 +456,64 @@ shift_block(oap, amount) } else /* left */ { -#ifdef FEAT_VARTABS - if (tabstop_count(p_vts) > 1) + vcol = oap->start_vcol; + /* walk vcol past ws to be removed */ + for (midp = oldp + bd.textcol; + vcol < (oap->start_vcol + total) && vim_iswhite(*midp); ) { - /* With multiple tabstops a completely different method is needed. - * Tabs count for different widths in different parts of the line, - * so instead of trying to preserve tabs copied from the old line - * the total width of all whitespace is calculated, the shift is - * removed, and then width is converted back to tabs and spaces. - */ - int totalspace = 0; - int tcol; /* used for tracking tab columns */ - - vcol = oap->start_vcol; - /* walk vcol past ws to be removed */ - for (midp = oldp + bd.textcol; - vcol < (oap->start_vcol + total) && vim_iswhite(*midp); ) - { - incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol); - vcol += incr; - } - /* internal is the block-internal ws replacing a split TAB */ - if (vcol > (oap->start_vcol + total)) - { - /* we have to split the TAB *(midp-1) */ - internal = vcol - (oap->start_vcol + total); - } - - totalspace = bd.startspaces + internal; - /* Add the remaining ws that will be retained in the shift. */ - tcol = vcol; - while (vim_iswhite(*midp)) - { - if (*midp == TAB) - { - int pad = tabstop_padding(tcol, p_ts, p_vts); - totalspace += pad; - tcol += pad; - } - else /*space */ - { - totalspace++; - tcol++; - } - midp++; - } + incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol); + vcol += incr; + } + /* internal is the block-internal ws replacing a split TAB */ + if (vcol > (oap->start_vcol + total)) + { + /* we have to split the TAB *(midp-1) */ + internal = vcol - (oap->start_vcol + total); + } + /* if 'expandtab' is not set, use TABs */ - /* Convert the ws width into tabs and spaces. */ + split = bd.startspaces + internal; + if (split > 0) + { if (!curbuf->b_p_et) { for (ptr = oldp, col = 0; ptr < oldp+bd.textcol; ) col += lbr_chartabsize_adv(&ptr, (colnr_T)col); - tabstop_fromto(col, col + totalspace, p_ts, p_vts, &i, &j); + /* col+1 now equals the start col of the first char of the + * block (may be < oap.start_vcol if we're splitting a TAB) */ + i = ((col % p_ts) + split) / p_ts; /* number of tabs */ } - - newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1); - if (newp == NULL) - return; - vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1)); - - /* copy first part we want to keep */ - mch_memmove(newp, oldp, (size_t)bd.textcol); - - copy_chars(newp + bd.textcol, (size_t)i, TAB); - copy_spaces(newp + bd.textcol + i, (size_t)j); + if (i) + j = ((col % p_ts) + split) % p_ts; /* number of spp */ + else + j = split; } - else - /* If there's only a single value for 'vartabstop' then this is copied - * into p_ts and we fall through into the original code for normal tabs. - * This ensures that the behaviour for a single tabstop value is exactly - * the same as with earlier versions of Vim. - * Note that when FEAT_VARTABS is undefined the code below is indented - * one position too far; that is, it's contained within an "else" block - * that exists only when FEAT_VARTABS is defined. - */ - { - if (tabstop_count(p_vts) == 1) - p_ts = tabstop_first(p_vts); -#endif - vcol = oap->start_vcol; - /* walk vcol past ws to be removed */ - for (midp = oldp + bd.textcol; - vcol < (oap->start_vcol + total) && vim_iswhite(*midp); ) - { - incr = lbr_chartabsize_adv(&midp, (colnr_T)vcol); - vcol += incr; - } - /* internal is the block-internal ws replacing a split TAB */ - if (vcol > (oap->start_vcol + total)) - { - /* we have to split the TAB *(midp-1) */ - internal = vcol - (oap->start_vcol + total); - } - /* if 'expandtab' is not set, use TABs */ - - split = bd.startspaces + internal; - if (split > 0) - { - if (!curbuf->b_p_et) - { - for (ptr = oldp, col = 0; ptr < oldp+bd.textcol; ) - col += lbr_chartabsize_adv(&ptr, (colnr_T)col); - /* col+1 now equals the start col of the first char of the - * block (may be < oap.start_vcol if we're splitting a TAB) */ - i = ((col % p_ts) + split) / p_ts; /* number of tabs */ - } - if (i) - j = ((col % p_ts) + split) % p_ts; /* number of spp */ - else - j = split; - } - - newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1); - if (newp == NULL) - return; - vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1)); + newp = alloc_check(bd.textcol + i + j + (unsigned)STRLEN(midp) + 1); + if (newp == NULL) + return; + vim_memset(newp, NUL, (size_t)(bd.textcol + i + j + STRLEN(midp) + 1)); - /* copy first part we want to keep */ - mch_memmove(newp, oldp, (size_t)bd.textcol); - /* Now copy any TABS and spp to ensure correct alignment! */ - while (vim_iswhite(*midp)) - { - if (*midp == TAB) - i++; - else /*space */ - j++; - midp++; - } - /* We might have an extra TAB worth of spp now! */ - if (j / p_ts && !curbuf->b_p_et) - { + /* copy first part we want to keep */ + mch_memmove(newp, oldp, (size_t)bd.textcol); + /* Now copy any TABS and spp to ensure correct alignment! */ + while (vim_iswhite(*midp)) + { + if (*midp == TAB) i++; - j -= p_ts; - } - copy_chars(newp + bd.textcol, (size_t)i, TAB); - copy_spaces(newp + bd.textcol + i, (size_t)j); -#ifdef FEAT_VARTABS + else /*space */ + j++; + midp++; } -#endif + /* We might have an extra TAB worth of spp now! */ + if (j / p_ts && !curbuf->b_p_et) + { + i++; + j -= p_ts; + } + copy_chars(newp + bd.textcol, (size_t)i, TAB); + copy_spaces(newp + bd.textcol + i, (size_t)j); /* the end */ STRMOVE(newp + STRLEN(newp), midp); @@ -3496,18 +3404,10 @@ do_put(regname, dir, count, flags) { /* Don't need to insert spaces when "p" on the last position of a * tab or "P" on the first position. */ -#ifdef FEAT_VARTABS - int viscol = getviscol(); - if (dir == FORWARD - ? tabstop_padding(viscol, curbuf->b_p_ts, curbuf->b_p_vts_ary) != 1 - : curwin->w_cursor.coladd > 0) - coladvance_force(viscol); -#else if (dir == FORWARD ? (int)curwin->w_cursor.coladd < curbuf->b_p_ts - 1 : curwin->w_cursor.coladd > 0) coladvance_force(getviscol()); -#endif else curwin->w_cursor.coladd = 0; } diff --git a/src/option.c b/src/option.c index b889c3a8..d3912f83 100644 --- a/src/option.c +++ b/src/option.c @@ -177,10 +177,6 @@ #define PV_TW OPT_BUF(BV_TW) #define PV_TX OPT_BUF(BV_TX) #define PV_WM OPT_BUF(BV_WM) -#ifdef FEAT_VARTABS -#define PV_VSTS OPT_BUF(BV_VSTS) -#define PV_VTS OPT_BUF(BV_VTS) -#endif /* * Definition of the PV_ values for window-local options. @@ -362,10 +358,6 @@ static long p_ts; static long p_tw; static int p_tx; static long p_wm; -#ifdef FEAT_VARTABS -static char_u *p_vsts; -static char_u *p_vts; -#endif #ifdef FEAT_KEYMAP static char_u *p_keymap; #endif @@ -381,9 +373,6 @@ static long p_tw_nopaste; static long p_wm_nopaste; static long p_sts_nopaste; static int p_ai_nopaste; -#ifdef FEAT_VARTABS -static char_u *p_vsts_nopaste; -#endif struct vimoption { @@ -2576,14 +2565,6 @@ static struct vimoption {"updatetime", "ut", P_NUM|P_VI_DEF, (char_u *)&p_ut, PV_NONE, {(char_u *)4000L, (char_u *)0L}}, -#ifdef FEAT_VARTABS - {"varsofttabstop", "vsts", P_STRING|P_VI_DEF|P_VIM|P_COMMA, - (char_u *)&p_vsts, PV_VSTS, - {(char_u *)"", (char_u *)0L}}, - {"vartabstop", "vts", P_STRING|P_VI_DEF|P_VIM|P_RBUF|P_COMMA, - (char_u *)&p_vts, PV_VTS, - {(char_u *)"", (char_u *)0L}}, -#endif {"verbose", "vbs", P_NUM|P_VI_DEF, (char_u *)&p_verbose, PV_NONE, {(char_u *)0L, (char_u *)0L}}, @@ -5075,10 +5056,6 @@ didset_options() /* set cedit_key */ (void)check_cedit(); #endif -#ifdef FEAT_VARTABS - tabstop_set(curbuf->b_p_vsts, &curbuf->b_p_vsts_ary); - tabstop_set(curbuf->b_p_vts, &curbuf->b_p_vts_ary); -#endif } /* @@ -5190,10 +5167,6 @@ check_buf_options(buf) check_string_option(&buf->b_p_dict); check_string_option(&buf->b_p_tsr); #endif -#ifdef FEAT_VARTABS - check_string_option(&buf->b_p_vsts); - check_string_option(&buf->b_p_vts); -#endif } /* @@ -6664,88 +6637,6 @@ did_set_string_option(opt_idx, varp, new_value_alloced, oldval, errbuf, } #endif -#ifdef FEAT_VARTABS - /* 'varsofttabstop' */ - else if (varp == &(curbuf->b_p_vsts)) - { - char_u *cp; - - if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) - { - if (curbuf->b_p_vsts_ary) - { - vim_free(curbuf->b_p_vsts_ary); - curbuf->b_p_vsts_ary = 0; - } - } - else - { - for (cp = *varp; *cp; ++cp) - { - if (vim_isdigit(*cp)) - continue; - if (*cp == ',' && cp > *varp && *(cp-1) != ',') - continue; - errmsg = e_invarg; - break; - } - if (errmsg == NULL) - { - int *oldarray = curbuf->b_p_vsts_ary; - if (tabstop_set(*varp, &(curbuf->b_p_vsts_ary))) - { - if (oldarray) - vim_free(oldarray); - } - else - errmsg = e_invarg; - } - } - } - - /* 'vartabstop' */ - else if (varp == &(curbuf->b_p_vts)) - { - char_u *cp; - - if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) - { - if (curbuf->b_p_vts_ary) - { - vim_free(curbuf->b_p_vts_ary); - curbuf->b_p_vts_ary = 0; - } - } - else - { - for (cp = *varp; *cp; ++cp) - { - if (vim_isdigit(*cp)) - continue; - if (*cp == ',' && cp > *varp && *(cp-1) != ',') - continue; - errmsg = e_invarg; - break; - } - if (errmsg == NULL) - { - int *oldarray = curbuf->b_p_vts_ary; - if (tabstop_set(*varp, &(curbuf->b_p_vts_ary))) - { - if (oldarray) - vim_free(oldarray); -#ifdef FEAT_FOLDING - if (foldmethodIsIndent(curwin)) - foldUpdateAll(curwin); -#endif /* FEAT_FOLDING */ - } - else - errmsg = e_invarg; - } - } - } -#endif - /* Options that are a list of flags. */ else { @@ -7770,14 +7661,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags) if (curbuf->b_p_sw <= 0) { errmsg = e_positive; -#ifdef FEAT_VARTABS - /* Use the first 'vartabstop' value, or 'tabstop' if vts isn't in use. */ - curbuf->b_p_sw = tabstop_count(curbuf->b_p_vts_ary) > 0 - ? tabstop_first(curbuf->b_p_vts_ary) - : curbuf->b_p_ts; -#else curbuf->b_p_sw = curbuf->b_p_ts; -#endif } /* @@ -9349,10 +9233,6 @@ get_varp(p) #ifdef FEAT_KEYMAP case PV_KMAP: return (char_u *)&(curbuf->b_p_keymap); #endif -#ifdef FEAT_VARTABS - case PV_VSTS: return (char_u *)&(curbuf->b_p_vsts); - case PV_VTS: return (char_u *)&(curbuf->b_p_vts); -#endif default: EMSG(_("E356: get_varp ERROR")); } /* always return a valid pointer to avoid a crash! */ @@ -9622,15 +9502,6 @@ buf_copy_options(buf, flags) #endif buf->b_p_sts = p_sts; buf->b_p_sts_nopaste = p_sts_nopaste; -#ifdef FEAT_VARTABS - buf->b_p_vsts = vim_strsave(p_vsts); - if (p_vsts && p_vsts != empty_option) - tabstop_set(p_vsts, &buf->b_p_vsts_ary); - else - buf->b_p_vsts_ary = 0; - buf->b_p_vsts_nopaste = p_vsts_nopaste - ? vim_strsave(p_vsts_nopaste) : NULL; -#endif #ifndef SHORT_FNAME buf->b_p_sn = p_sn; #endif @@ -9737,27 +9608,12 @@ buf_copy_options(buf, flags) * or to a help buffer. */ if (dont_do_help) - { buf->b_p_isk = save_p_isk; -#ifdef FEAT_VARTABS - if (p_vts && p_vts != empty_option && !buf->b_p_vts_ary) - tabstop_set(p_vts, &buf->b_p_vts_ary); - else - buf->b_p_vts_ary = 0; -#endif - } else { buf->b_p_isk = vim_strsave(p_isk); did_isk = TRUE; buf->b_p_ts = p_ts; -#ifdef FEAT_VARTABS - buf->b_p_vts = vim_strsave(p_vts); - if (p_vts && p_vts != empty_option && !buf->b_p_vts_ary) - tabstop_set(p_vts, &buf->b_p_vts_ary); - else - buf->b_p_vts_ary = 0; -#endif buf->b_help = FALSE; #ifdef FEAT_QUICKFIX if (buf->b_p_bt[0] == 'h') @@ -10580,12 +10436,6 @@ paste_option_changed() buf->b_p_wm_nopaste = buf->b_p_wm; buf->b_p_sts_nopaste = buf->b_p_sts; buf->b_p_ai_nopaste = buf->b_p_ai; -#ifdef FEAT_VARTABS - if (buf->b_p_vsts_nopaste) - vim_free(buf->b_p_vsts_nopaste); - buf->b_p_vsts_nopaste = buf->b_p_vsts && buf->b_p_vsts != empty_option - ? vim_strsave(buf->b_p_vsts) : NULL; -#endif } /* save global options */ @@ -10602,11 +10452,6 @@ paste_option_changed() p_wm_nopaste = p_wm; p_sts_nopaste = p_sts; p_ai_nopaste = p_ai; -#ifdef FEAT_VARTABS - if (p_vsts_nopaste) - vim_free(p_vsts_nopaste); - p_vsts_nopaste = p_vsts && p_vsts != empty_option ? vim_strsave(p_vsts) : NULL; -#endif } /* @@ -10620,14 +10465,6 @@ paste_option_changed() buf->b_p_wm = 0; /* wrapmargin is 0 */ buf->b_p_sts = 0; /* softtabstop is 0 */ buf->b_p_ai = 0; /* no auto-indent */ -#ifdef FEAT_VARTABS - if (buf->b_p_vsts) - free_string_option(buf->b_p_vsts); - buf->b_p_vsts = empty_option; - if (buf->b_p_vsts_ary) - vim_free(buf->b_p_vsts_ary); - buf->b_p_vsts_ary = 0; -#endif } /* set global options */ @@ -10648,11 +10485,6 @@ paste_option_changed() p_wm = 0; p_sts = 0; p_ai = 0; -#ifdef FEAT_VARTABS - if (p_vsts) - free_string_option(p_vsts); - p_vsts = empty_option; -#endif } /* @@ -10667,18 +10499,6 @@ paste_option_changed() buf->b_p_wm = buf->b_p_wm_nopaste; buf->b_p_sts = buf->b_p_sts_nopaste; buf->b_p_ai = buf->b_p_ai_nopaste; -#ifdef FEAT_VARTABS - if (buf->b_p_vsts) - free_string_option(buf->b_p_vsts); - buf->b_p_vsts = buf->b_p_vsts_nopaste - ? vim_strsave(buf->b_p_vsts_nopaste) : empty_option; - if (buf->b_p_vsts_ary) - vim_free(buf->b_p_vsts_ary); - if (buf->b_p_vsts && buf->b_p_vsts != empty_option) - tabstop_set(buf->b_p_vsts, &buf->b_p_vsts_ary); - else - buf->b_p_vsts_ary = 0; -#endif } /* restore global options */ @@ -10699,11 +10519,6 @@ paste_option_changed() p_wm = p_wm_nopaste; p_sts = p_sts_nopaste; p_ai = p_ai_nopaste; -#ifdef FEAT_VARTABS - if (p_vsts) - free_string_option(p_vsts); - p_vsts = p_vsts_nopaste ? vim_strsave(p_vsts_nopaste) : empty_option; -#endif } old_p_paste = p_paste; @@ -11028,298 +10843,3 @@ check_ff_value(p) { return check_opt_strings(p, p_ff_values, FALSE); } - -#ifdef FEAT_VARTABS - -/* - * Set the integer values corresponding to the string setting of 'vartabstop'. - */ - int -tabstop_set(var, array) - char_u *var; - int **array; -{ - int valcount = 1; - int t; - char_u *cp; - - if ((!var[0] || (var[0] == '0' && !var[1]))) - { - *array = (int *)0; - return TRUE; - } - - for (cp = var; *cp; ++cp) - { - if (cp == var || *(cp - 1) == ',') - if (atoi(cp) <= 0) - return FALSE; - - if (VIM_ISDIGIT(*cp)) - continue; - if (*cp == ',' && cp > var && *(cp - 1) != ',') - { - ++valcount; - continue; - } - return FALSE; - } - - *array = (int *) alloc((unsigned) ((valcount + 1) * sizeof(int))); - (*array)[0] = valcount; - - t = 1; - for (cp = var; *cp;) - { - (*array)[t++] = atoi(cp); - while (*cp && *cp != ',') - ++cp; - if (*cp) - ++cp; - } - - return TRUE; -} - -/* - * Calculate the number of screen spaces a tab will occupy. - * If vts is set then the tab widths are taken from that array, - * otherwise the value of ts is used. - */ - int -tabstop_padding(col, ts, vts) - colnr_T col; - int ts; - int *vts; -{ - int tabcount; - colnr_T tabcol = 0; - int t; - int padding = 0; - - if (ts == 0) - ts = 8; - if (vts == 0 || vts[0] == 0) - return ts - (col % ts); - - tabcount = vts[0]; - - for (t = 1; t <= tabcount; ++t) - { - tabcol += vts[t]; - if (tabcol > col) - { - padding = (int)(tabcol - col); - break; - } - } - if (t > tabcount) - padding = vts[tabcount] - (int)((col - tabcol) % vts[tabcount]); - - return padding; -} - -/* - * Find the size of the tab that covers a particular column. - */ - int -tabstop_at(col, ts, vts) - colnr_T col; - int ts; - int *vts; -{ - int tabcount; - colnr_T tabcol = 0; - int t; - int tab_size = 0; - - if (vts == 0 || vts[0] == 0) - return ts; - - tabcount = vts[0]; - for (t = 1; t <= tabcount; ++t) - { - tabcol += vts[t]; - if (tabcol > col) - { - tab_size = vts[t]; - break; - } - } - if (t > tabcount) - tab_size = vts[tabcount]; - - return tab_size; -} - -/* - * Find the column on which a tab starts. - */ - colnr_T -tabstop_start(col, ts, vts) - colnr_T col; - int ts; - int *vts; -{ - int tabcount; - colnr_T tabcol = 0; - int t; - - if (vts == 0 || vts[0] == 0) - return (col / ts) * ts; - - tabcount = vts[0]; - for (t = 1; t <= tabcount; ++t) - { - tabcol += vts[t]; - if (tabcol > col) - return tabcol - vts[t]; - } - - int excess = tabcol % vts[tabcount]; - return excess + ((col - excess) / vts[tabcount]) * vts[tabcount]; -} - -/* - * Find the number of tabs and spaces necessary to get from one column - * to another. - */ - void -tabstop_fromto(start_col, end_col, ts, vts, ntabs, nspcs) - colnr_T start_col; - colnr_T end_col; - int ts; - int *vts; - int *ntabs; - int *nspcs; -{ - int spaces = end_col - start_col; - colnr_T tabcol = 0; - int padding = 0; - int tabcount; - int t; - - if (vts == 0 || vts[0] == 0) - { - int tabs = 0; - int initspc = ts - (start_col % ts); - if (spaces >= initspc) - { - spaces -= initspc; - tabs++; - } - tabs += spaces / ts; - spaces -= (spaces / ts) * ts; - - *ntabs = tabs; - *nspcs = spaces; - return; - } - - /* Find the padding needed to reach the next tabstop. */ - tabcount = vts[0]; - for (t = 1; t <= tabcount; ++t) - { - tabcol += vts[t]; - if (tabcol > start_col) - { - padding = (int)(tabcol - start_col); - break; - } - } - if (t > tabcount) - padding = vts[tabcount] - (int)((start_col - tabcol) % vts[tabcount]); - - /* If the space needed is less than the padding no tabs can be used. */ - if (spaces < padding) - { - *ntabs = 0; - *nspcs = spaces; - return; - } - - *ntabs = 1; - spaces -= padding; - - /* At least one tab has been used. See if any more will fit. */ - while (spaces != 0 && ++t <= tabcount) - { - padding = vts[t]; - if (spaces < padding) - { - *nspcs = spaces; - return; - } - ++*ntabs; - spaces -= padding; - } - - *ntabs += spaces / vts[tabcount]; - *nspcs = spaces % vts[tabcount]; -} - -/* - * See if two tabstop arrays contain the same values. - */ - int -tabstop_eq(ts1, ts2) - int *ts1; - int *ts2; -{ - int t; - - if ((ts1 == 0 && ts2) || (ts1 && ts2 == 0)) - return FALSE; - if (ts1 == ts2) - return TRUE; - if (ts1[0] != ts2[0]) - return FALSE; - - for (t = 1; t <= ts1[0]; ++t) - if (ts1[t] != ts2[t]) - return FALSE; - - return TRUE; -} - -/* - * Copy a tabstop array, allocating space for the new array. - */ - int * -tabstop_copy(oldts) - int *oldts; -{ - int *newts; - int t; - - if (oldts == 0) - return 0; - - newts = (int *) alloc((unsigned) ((oldts[0] + 1) * sizeof(int))); - for (t = 0; t <= oldts[0]; ++t) - newts[t] = oldts[t]; - - return newts; -} - -/* - * Return a count of the number of tabstops. - */ - int -tabstop_count(ts) - int *ts; -{ - return ts ? ts[0] : 0; -} - -/* - * Return the first tabstop, or 8 if there are no tabstops defined. - */ - int -tabstop_first(ts) - int *ts; -{ - return ts ? ts[1] : 8; -} - -#endif diff --git a/src/option.h b/src/option.h index 41da706d..00374d7e 100644 --- a/src/option.h +++ b/src/option.h @@ -1004,10 +1004,6 @@ enum , BV_TW , BV_TX , BV_WM -#ifdef FEAT_VARTABS - , BV_VSTS - , BV_VTS -#endif , BV_COUNT /* must be the last one */ }; diff --git a/src/proto/misc1.pro b/src/proto/misc1.pro index 75f6bda0..a54b8b56 100644 --- a/src/proto/misc1.pro +++ b/src/proto/misc1.pro @@ -3,9 +3,6 @@ int get_indent __ARGS((void)); int get_indent_lnum __ARGS((linenr_T lnum)); int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum)); int get_indent_str __ARGS((char_u *ptr, int ts)); -#ifdef FEAT_VARTABS -int get_indent_str_vtab __ARGS((char_u *ptr, int ts, int *vts)); -#endif int set_indent __ARGS((int size, int flags)); int get_number_indent __ARGS((linenr_T lnum)); int open_line __ARGS((int dir, int flags, int old_indent)); diff --git a/src/proto/option.pro b/src/proto/option.pro index a85576be..39ee7be2 100644 --- a/src/proto/option.pro +++ b/src/proto/option.pro @@ -54,15 +54,4 @@ int can_bs __ARGS((int what)); void save_file_ff __ARGS((buf_T *buf)); int file_ff_differs __ARGS((buf_T *buf)); int check_ff_value __ARGS((char_u *p)); -#ifdef FEAT_VARTABS -int tabstop_set __ARGS((char_u *var, int **array)); -int tabstop_padding __ARGS((colnr_T col, int ts, int *vts)); -colnr_T tabstop_start __ARGS((colnr_T col, int ts, int *vts)); -int tabstop_at __ARGS((colnr_T col, int ts, int *vts)); -void tabstop_fromto __ARGS((colnr_T start_col, colnr_T end_col, int ts, int *vts, int *ntabs, int *nspcs)); -int tabstop_eq __ARGS((int *ts1, int *ts2)); -int *tabstop_copy __ARGS((int *oldts)); -int tabstop_count __ARGS((int *ts)); -int tabstop_first __ARGS((int *ts)); -#endif /* vim: set ft=c : */ diff --git a/src/screen.c b/src/screen.c index 65414014..6d408eb9 100644 --- a/src/screen.c +++ b/src/screen.c @@ -4076,13 +4076,8 @@ win_line(wp, lnum, startrow, endrow, nochange) if (c == TAB && (!wp->w_p_list || lcs_tab1)) { /* tab amount depends on current column */ -#ifdef FEAT_VARTABS - n_extra = tabstop_padding(vcol, wp->w_buffer->b_p_ts, - wp->w_buffer->b_p_vts_ary) - 1; -#else n_extra = (int)wp->w_buffer->b_p_ts - vcol % (int)wp->w_buffer->b_p_ts - 1; -#endif #ifdef FEAT_MBYTE mb_utf8 = FALSE; /* don't draw as UTF-8 */ #endif diff --git a/src/structs.h b/src/structs.h index 7c801e85..329676e5 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1438,13 +1438,6 @@ struct file_buffer long b_p_wm; /* 'wrapmargin' */ long b_p_wm_nobin; /* b_p_wm saved for binary mode */ long b_p_wm_nopaste; /* b_p_wm saved for paste mode */ -#ifdef FEAT_VARTABS - char_u *b_p_vsts; /* 'varsofttabstop' */ - int *b_p_vsts_ary; /* 'varsofttabstop' in internal format */ - char_u *b_p_vsts_nopaste; /* b_p_vsts saved for paste mode */ - char_u *b_p_vts; /* 'vartabstop' */ - int *b_p_vts_ary; /* 'vartabstop' in internal format */ -#endif #ifdef FEAT_KEYMAP char_u *b_p_keymap; /* 'keymap' */ #endif diff --git a/src/testdir/test99.in b/src/testdir/test99.in deleted file mode 100644 index 6f89ae36..00000000 --- a/src/testdir/test99.in +++ /dev/null @@ -1,85 +0,0 @@ -Test for variable tabstops - -STARTTEST -:if !has("vartabs") | e! test.ok | w! test.out | qa! | endif -:%d -:" [1,2] Test normal operation of tabstops and softtabstops. -:set ts=4 -aa a a a a:retab 8 -:.w! >>test.out -:%d -:set ts=8 sts=6 -ab b b b b:.w! >>test.out -:%d -:" [3,4] Test variable tabstops. -:set sts=0 vts=4,8,4,8 -ac c c c c c:retab 8 -:.w! >>test.out -:%d -:set et vts=4,8,4,8 -ad d d d d d:.w! >>test.out -:%d -:" [5] Changing ts should have no effect if vts is in use. -:set ts=6 -ae e e e e e:.w! >>test.out -:%d -:" [6] Clearing vts should revert to using ts. -:set vts= -af f f f f f:.w! >>test.out -:%d -:" [7] Test variable softtabstops. -:set noet ts=8 vsts=12,2,6 -ag g g g g g:.w! >>test.out -:%d -:" [8] Variable tabstops and softtabstops combined. -:set vsts=6,12,8 vts=4,6,8 -ah h h h h:.w! >>test.out -:%d -:" [9] Retab with a single value, not using vts. -:set ts=8 sts=0 vts= vsts= -ai i i i i:retab 4 -o='9: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.-1,.w! >>test.out -:%d -:" [10] Retab with a single value, using vts. -:set ts=8 sts=0 vts=6 vsts= -aj j j j j:retab 4 -o='10: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.-1,.w! >>test.out -:%d -:" [11] Retab with multiple values, not using vts. -:set ts=6 sts=0 vts= vsts= -ak k k k k k:retab 4,8 -o='11: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.-1,.w! >>test.out -:%d -:" [12] Retab with multiple values, using vts. -:set ts=8 sts=0 vts=6 vsts= -al l l l l l:retab 4,8 -o='12: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.-1,.w! >>test.out -:%d -:" [13] Check that global and local values are set. -:set ts=4 vts=6 sts=8 vsts=10 -am m m m:.w! >>test.out -o='13a: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:new -an n n n:.w! >>test.out -o='13b: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:q! -:%d -:" [14] Check that local values only are set. -:setlocal ts=5 vts=7 sts=9 vsts=11 -ao o o o:.w! >>test.out -o='14a: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:new -ap p p p:.w! >>test.out -o='14b: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:q! -:%d -:" [15] Check that global values only are set. -:setglobal ts=6 vts=8 sts=10 vsts=12 -aq q q q:.w! >>test.out -o='15a: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:new -ar r r r:.w! >>test.out -o='15b: ts='.&ts.' vts='.&vts.' sts='.&sts.' vsts='.&vsts :.w! >>test.out -:qa! -ENDTEST -dummy text diff --git a/src/testdir/test99.ok b/src/testdir/test99.ok deleted file mode 100644 index 6c78e524..00000000 --- a/src/testdir/test99.ok +++ /dev/null @@ -1,28 +0,0 @@ -a a a a a -b b b b b -c c c c c c -d d d d d d -e e e e e e -f f f f f f -g g g g g g -h h h h h -i i i i i -9: ts=4 vts= sts=0 vsts= -j j j j j -10: ts=8 vts=4 sts=0 vsts= -k k k k k k -11: ts=6 vts=4,8 sts=0 vsts= -l l l l l l -12: ts=8 vts=4,8 sts=0 vsts= -m m m m -13a: ts=4 vts=6 sts=8 vsts=10 -n n n n -13b: ts=4 vts=6 sts=8 vsts=10 -o o o o -14a: ts=5 vts=7 sts=9 vsts=11 -p p p p -14b: ts=4 vts=6 sts=8 vsts=10 -q q q q -15a: ts=5 vts=7 sts=9 vsts=11 -r r r r -15b: ts=6 vts=8 sts=10 vsts=12 diff --git a/src/version.c b/src/version.c index 01f53a81..4388cd20 100644 --- a/src/version.c +++ b/src/version.c @@ -576,11 +576,6 @@ static char *(features[]) = #else "-user_commands", #endif -#ifdef FEAT_VARTABS - "+vartabs", -#else - "-vartabs", -#endif #ifdef FEAT_VERTSPLIT "+vertsplit", #else diff --git a/src/workshop.c b/src/workshop.c index a2f7bd1d..ef25b5a8 100644 --- a/src/workshop.c +++ b/src/workshop.c @@ -61,11 +61,7 @@ void workshop_beval_cb(BalloonEval *, int); static char *fixAccelText(char *); static void addMenu(char *, char *, char *); static char *lookupVerb(char *, int); -#ifdef FEAT_VARTABS -static int computeIndex(int, char_u *, int, int *); -#else static int computeIndex(int, char_u *, int); -#endif static void coloncmd(char *, Boolean); extern Widget vimShell; @@ -1604,11 +1600,7 @@ workshop_beval_cb( * a column number. Compute the index from col. Also set * line to 0 because thats what dbx expects. */ -#ifdef FEAT_VARTABS - idx = computeIndex(col, text, beval->ts, beval->vts); -#else idx = computeIndex(col, text, beval->ts); -#endif if (idx > 0) { lnum = 0; @@ -1645,11 +1637,7 @@ workshop_beval_cb( computeIndex( int wantedCol, char_u *line, - int ts -#ifdef FEAT_VARTABS - int *vts -#else - ) + int ts) { int col = 0; int idx = 0; @@ -1657,11 +1645,7 @@ computeIndex( while (line[idx]) { if (line[idx] == '\t') -#ifdef FEAT_VARTABS - col += tabstop_padding(col, ts, vts); -#else col += ts - (col % ts); -#endif else col++; idx++; -- 2.11.4.GIT