forked from aniani/vim
patch 9.0.0222: no good reason why text objects are only in larger builds
Problem: No good reason why text objects are only in larger builds. Solution: Graduate +textobjects.
This commit is contained in:
@@ -532,8 +532,6 @@ including white space, the commands starting with "i" select an "inner" object
|
|||||||
without white space, or just the white space. Thus the "inner" commands
|
without white space, or just the white space. Thus the "inner" commands
|
||||||
always select less text than the "a" commands.
|
always select less text than the "a" commands.
|
||||||
|
|
||||||
These commands are not available when the |+textobjects| feature has been
|
|
||||||
disabled at compile time.
|
|
||||||
Also see `gn` and `gN`, operating on the last search pattern.
|
Also see `gn` and `gN`, operating on the last search pattern.
|
||||||
|
|
||||||
*v_aw* *aw*
|
*v_aw* *aw*
|
||||||
@@ -634,6 +632,7 @@ at "a tag block", select [count] tag blocks, from the
|
|||||||
"</aaa>", including the "<aaa>" and "</aaa>".
|
"</aaa>", including the "<aaa>" and "</aaa>".
|
||||||
See |tag-blocks| about the details.
|
See |tag-blocks| about the details.
|
||||||
When used in Visual mode it is made characterwise.
|
When used in Visual mode it is made characterwise.
|
||||||
|
Only available when compiled with the |+eval| feature.
|
||||||
|
|
||||||
*v_it* *it*
|
*v_it* *it*
|
||||||
it "inner tag block", select [count] tag blocks, from the
|
it "inner tag block", select [count] tag blocks, from the
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ m *+terminal* Support for terminal window |terminal|
|
|||||||
*+terminfo* uses |terminfo| instead of termcap
|
*+terminfo* uses |terminfo| instead of termcap
|
||||||
N *+termresponse* support for |t_RV| and |v:termresponse|
|
N *+termresponse* support for |t_RV| and |v:termresponse|
|
||||||
B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
B *+termguicolors* 24-bit color in xterm-compatible terminals support
|
||||||
N *+textobjects* |text-objects| selection
|
T *+textobjects* |text-objects| selection. Always enabled since 9.0.0222.
|
||||||
N *+textprop* |text-properties|
|
N *+textprop* |text-properties|
|
||||||
*+tgetent* non-Unix only: able to use external termcap
|
*+tgetent* non-Unix only: able to use external termcap
|
||||||
N *+timers* the |timer_start()| function
|
N *+timers* the |timer_start()| function
|
||||||
|
|||||||
@@ -2372,9 +2372,7 @@ free_buf_options(
|
|||||||
#endif
|
#endif
|
||||||
clear_string_option(&buf->b_p_dict);
|
clear_string_option(&buf->b_p_dict);
|
||||||
clear_string_option(&buf->b_p_tsr);
|
clear_string_option(&buf->b_p_tsr);
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
clear_string_option(&buf->b_p_qe);
|
clear_string_option(&buf->b_p_qe);
|
||||||
#endif
|
|
||||||
buf->b_p_ar = -1;
|
buf->b_p_ar = -1;
|
||||||
buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
|
buf->b_p_ul = NO_LOCAL_UNDOLEVEL;
|
||||||
clear_string_option(&buf->b_p_lw);
|
clear_string_option(&buf->b_p_lw);
|
||||||
|
|||||||
@@ -6200,13 +6200,7 @@ f_has(typval_T *argvars, typval_T *rettv)
|
|||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
},
|
},
|
||||||
{"textobjects",
|
{"textobjects", 1},
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
1
|
|
||||||
#else
|
|
||||||
0
|
|
||||||
#endif
|
|
||||||
},
|
|
||||||
{"textprop",
|
{"textprop",
|
||||||
#ifdef FEAT_PROP_POPUP
|
#ifdef FEAT_PROP_POPUP
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -114,6 +114,7 @@
|
|||||||
* +lispindent lisp indenting (From Eric Fischer).
|
* +lispindent lisp indenting (From Eric Fischer).
|
||||||
* +cindent C code indenting (From Eric Fischer).
|
* +cindent C code indenting (From Eric Fischer).
|
||||||
* +smartindent smart C code indenting when the 'si' option is set.
|
* +smartindent smart C code indenting when the 'si' option is set.
|
||||||
|
* +textobjects Text objects: "vaw", "das", etc.
|
||||||
*
|
*
|
||||||
* Obsolete:
|
* Obsolete:
|
||||||
* +tag_old_static Old style static tags: "file:tag file ..".
|
* +tag_old_static Old style static tags: "file:tag file ..".
|
||||||
@@ -301,13 +302,6 @@
|
|||||||
# define FEAT_TIMERS
|
# define FEAT_TIMERS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* +textobjects Text objects: "vaw", "das", etc.
|
|
||||||
*/
|
|
||||||
#if defined(FEAT_NORMAL) && defined(FEAT_EVAL)
|
|
||||||
# define FEAT_TEXTOBJ
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Insert mode completion with 'completefunc'.
|
* Insert mode completion with 'completefunc'.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -650,7 +650,6 @@ check_visual_pos(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_TEXTOBJ) || defined(PROTO)
|
|
||||||
/*
|
/*
|
||||||
* Make sure curwin->w_cursor is not on the NUL at the end of the line.
|
* Make sure curwin->w_cursor is not on the NUL at the end of the line.
|
||||||
* Allow it when in Visual mode and 'selection' is not "old".
|
* Allow it when in Visual mode and 'selection' is not "old".
|
||||||
@@ -663,7 +662,6 @@ adjust_cursor_col(void)
|
|||||||
&& gchar_cursor() == NUL)
|
&& gchar_cursor() == NUL)
|
||||||
--curwin->w_cursor.col;
|
--curwin->w_cursor.col;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When curwin->w_leftcol has changed, adjust the cursor position.
|
* When curwin->w_leftcol has changed, adjust the cursor position.
|
||||||
|
|||||||
10
src/normal.c
10
src/normal.c
@@ -109,9 +109,7 @@ static void nv_normal(cmdarg_T *cap);
|
|||||||
static void nv_esc(cmdarg_T *oap);
|
static void nv_esc(cmdarg_T *oap);
|
||||||
static void nv_edit(cmdarg_T *cap);
|
static void nv_edit(cmdarg_T *cap);
|
||||||
static void invoke_edit(cmdarg_T *cap, int repl, int cmd, int startln);
|
static void invoke_edit(cmdarg_T *cap, int repl, int cmd, int startln);
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
static void nv_object(cmdarg_T *cap);
|
static void nv_object(cmdarg_T *cap);
|
||||||
#endif
|
|
||||||
static void nv_record(cmdarg_T *cap);
|
static void nv_record(cmdarg_T *cap);
|
||||||
static void nv_at(cmdarg_T *cap);
|
static void nv_at(cmdarg_T *cap);
|
||||||
static void nv_halfpage(cmdarg_T *cap);
|
static void nv_halfpage(cmdarg_T *cap);
|
||||||
@@ -6888,11 +6886,7 @@ nv_edit(cmdarg_T *cap)
|
|||||||
else if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
|
else if ((cap->cmdchar == 'a' || cap->cmdchar == 'i')
|
||||||
&& (cap->oap->op_type != OP_NOP || VIsual_active))
|
&& (cap->oap->op_type != OP_NOP || VIsual_active))
|
||||||
{
|
{
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
nv_object(cap);
|
nv_object(cap);
|
||||||
#else
|
|
||||||
clearopbeep(cap->oap);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#ifdef FEAT_TERMINAL
|
#ifdef FEAT_TERMINAL
|
||||||
else if (term_in_normal_mode())
|
else if (term_in_normal_mode())
|
||||||
@@ -7044,7 +7038,6 @@ invoke_edit(
|
|||||||
restart_edit = restart_edit_save;
|
restart_edit = restart_edit_save;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
/*
|
/*
|
||||||
* "a" or "i" while an operator is pending or in Visual mode: object motion.
|
* "a" or "i" while an operator is pending or in Visual mode: object motion.
|
||||||
*/
|
*/
|
||||||
@@ -7091,6 +7084,7 @@ nv_object(
|
|||||||
case '>':
|
case '>':
|
||||||
flag = current_block(cap->oap, cap->count1, include, '<', '>');
|
flag = current_block(cap->oap, cap->count1, include, '<', '>');
|
||||||
break;
|
break;
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
case 't': // "at" = a tag block (xml and html)
|
case 't': // "at" = a tag block (xml and html)
|
||||||
// Do not adjust oap->end in do_pending_operator()
|
// Do not adjust oap->end in do_pending_operator()
|
||||||
// otherwise there are different results for 'dit'
|
// otherwise there are different results for 'dit'
|
||||||
@@ -7101,6 +7095,7 @@ nv_object(
|
|||||||
cap->retval |= CA_NO_ADJ_OP_END;
|
cap->retval |= CA_NO_ADJ_OP_END;
|
||||||
flag = current_tagblock(cap->oap, cap->count1, include);
|
flag = current_tagblock(cap->oap, cap->count1, include);
|
||||||
break;
|
break;
|
||||||
|
#endif
|
||||||
case 'p': // "ap" = a paragraph
|
case 'p': // "ap" = a paragraph
|
||||||
flag = current_par(cap->oap, cap->count1, include, 'p');
|
flag = current_par(cap->oap, cap->count1, include, 'p');
|
||||||
break;
|
break;
|
||||||
@@ -7129,7 +7124,6 @@ nv_object(
|
|||||||
adjust_cursor_col();
|
adjust_cursor_col();
|
||||||
curwin->w_set_curswant = TRUE;
|
curwin->w_set_curswant = TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "q" command: Start/stop recording.
|
* "q" command: Start/stop recording.
|
||||||
|
|||||||
@@ -5514,9 +5514,7 @@ get_varp(struct vimoption *p)
|
|||||||
case PV_MOD: return (char_u *)&(curbuf->b_changed);
|
case PV_MOD: return (char_u *)&(curbuf->b_changed);
|
||||||
case PV_NF: return (char_u *)&(curbuf->b_p_nf);
|
case PV_NF: return (char_u *)&(curbuf->b_p_nf);
|
||||||
case PV_PI: return (char_u *)&(curbuf->b_p_pi);
|
case PV_PI: return (char_u *)&(curbuf->b_p_pi);
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
case PV_QE: return (char_u *)&(curbuf->b_p_qe);
|
case PV_QE: return (char_u *)&(curbuf->b_p_qe);
|
||||||
#endif
|
|
||||||
case PV_RO: return (char_u *)&(curbuf->b_p_ro);
|
case PV_RO: return (char_u *)&(curbuf->b_p_ro);
|
||||||
case PV_SI: return (char_u *)&(curbuf->b_p_si);
|
case PV_SI: return (char_u *)&(curbuf->b_p_si);
|
||||||
case PV_SN: return (char_u *)&(curbuf->b_p_sn);
|
case PV_SN: return (char_u *)&(curbuf->b_p_sn);
|
||||||
@@ -6132,10 +6130,8 @@ buf_copy_options(buf_T *buf, int flags)
|
|||||||
#ifdef FEAT_COMPL_FUNC
|
#ifdef FEAT_COMPL_FUNC
|
||||||
buf->b_p_tsrfu = empty_option;
|
buf->b_p_tsrfu = empty_option;
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
buf->b_p_qe = vim_strsave(p_qe);
|
buf->b_p_qe = vim_strsave(p_qe);
|
||||||
COPY_OPT_SCTX(buf, BV_QE);
|
COPY_OPT_SCTX(buf, BV_QE);
|
||||||
#endif
|
|
||||||
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
|
#if defined(FEAT_BEVAL) && defined(FEAT_EVAL)
|
||||||
buf->b_p_bexpr = empty_option;
|
buf->b_p_bexpr = empty_option;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -802,9 +802,7 @@ EXTERN char_u *p_pyhome; // 'pythonhome'
|
|||||||
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
|
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
|
||||||
EXTERN long p_pyx; // 'pyxversion'
|
EXTERN long p_pyx; // 'pyxversion'
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
EXTERN char_u *p_qe; // 'quoteescape'
|
EXTERN char_u *p_qe; // 'quoteescape'
|
||||||
#endif
|
|
||||||
EXTERN int p_ro; // 'readonly'
|
EXTERN int p_ro; // 'readonly'
|
||||||
#ifdef FEAT_RELTIME
|
#ifdef FEAT_RELTIME
|
||||||
EXTERN long p_rdt; // 'redrawtime'
|
EXTERN long p_rdt; // 'redrawtime'
|
||||||
@@ -1183,9 +1181,7 @@ enum
|
|||||||
#endif
|
#endif
|
||||||
, BV_PATH
|
, BV_PATH
|
||||||
, BV_PI
|
, BV_PI
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
, BV_QE
|
, BV_QE
|
||||||
#endif
|
|
||||||
, BV_RO
|
, BV_RO
|
||||||
, BV_SI
|
, BV_SI
|
||||||
, BV_SN
|
, BV_SN
|
||||||
|
|||||||
@@ -108,9 +108,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#define PV_PATH OPT_BOTH(OPT_BUF(BV_PATH))
|
#define PV_PATH OPT_BOTH(OPT_BUF(BV_PATH))
|
||||||
#define PV_PI OPT_BUF(BV_PI)
|
#define PV_PI OPT_BUF(BV_PI)
|
||||||
#ifdef FEAT_TEXTOBJ
|
#define PV_QE OPT_BUF(BV_QE)
|
||||||
# define PV_QE OPT_BUF(BV_QE)
|
|
||||||
#endif
|
|
||||||
#define PV_RO OPT_BUF(BV_RO)
|
#define PV_RO OPT_BUF(BV_RO)
|
||||||
#define PV_SI OPT_BUF(BV_SI)
|
#define PV_SI OPT_BUF(BV_SI)
|
||||||
#define PV_SN OPT_BUF(BV_SN)
|
#define PV_SN OPT_BUF(BV_SN)
|
||||||
@@ -2009,14 +2007,8 @@ static struct vimoption options[] =
|
|||||||
#endif
|
#endif
|
||||||
SCTX_INIT},
|
SCTX_INIT},
|
||||||
{"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
|
{"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
(char_u *)&p_qe, PV_QE,
|
(char_u *)&p_qe, PV_QE,
|
||||||
{(char_u *)"\\", (char_u *)0L}
|
{(char_u *)"\\", (char_u *)0L} SCTX_INIT},
|
||||||
#else
|
|
||||||
(char_u *)NULL, PV_NONE,
|
|
||||||
{(char_u *)NULL, (char_u *)0L}
|
|
||||||
#endif
|
|
||||||
SCTX_INIT},
|
|
||||||
{"readonly", "ro", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
|
{"readonly", "ro", P_BOOL|P_VI_DEF|P_RSTAT|P_NOGLOB,
|
||||||
(char_u *)&p_ro, PV_RO,
|
(char_u *)&p_ro, PV_RO,
|
||||||
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
{(char_u *)FALSE, (char_u *)0L} SCTX_INIT},
|
||||||
|
|||||||
@@ -242,9 +242,7 @@ check_buf_options(buf_T *buf)
|
|||||||
check_string_option(&buf->b_p_cms);
|
check_string_option(&buf->b_p_cms);
|
||||||
#endif
|
#endif
|
||||||
check_string_option(&buf->b_p_nf);
|
check_string_option(&buf->b_p_nf);
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
check_string_option(&buf->b_p_qe);
|
check_string_option(&buf->b_p_qe);
|
||||||
#endif
|
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
check_string_option(&buf->b_p_syn);
|
check_string_option(&buf->b_p_syn);
|
||||||
check_string_option(&buf->b_s.b_syn_isk);
|
check_string_option(&buf->b_s.b_syn_isk);
|
||||||
|
|||||||
@@ -1378,6 +1378,7 @@ do_source_ext(
|
|||||||
int sid;
|
int sid;
|
||||||
scriptitem_T *si = NULL;
|
scriptitem_T *si = NULL;
|
||||||
int save_estack_compiling = estack_compiling;
|
int save_estack_compiling = estack_compiling;
|
||||||
|
ESTACK_CHECK_DECLARATION
|
||||||
#endif
|
#endif
|
||||||
#ifdef STARTUPTIME
|
#ifdef STARTUPTIME
|
||||||
struct timeval tv_rel;
|
struct timeval tv_rel;
|
||||||
@@ -1388,7 +1389,6 @@ do_source_ext(
|
|||||||
#endif
|
#endif
|
||||||
int save_sticky_cmdmod_flags = sticky_cmdmod_flags;
|
int save_sticky_cmdmod_flags = sticky_cmdmod_flags;
|
||||||
int trigger_source_post = FALSE;
|
int trigger_source_post = FALSE;
|
||||||
ESTACK_CHECK_DECLARATION
|
|
||||||
|
|
||||||
CLEAR_FIELD(cookie);
|
CLEAR_FIELD(cookie);
|
||||||
if (fname == NULL)
|
if (fname == NULL)
|
||||||
@@ -1693,7 +1693,9 @@ do_source_ext(
|
|||||||
|
|
||||||
if (got_int)
|
if (got_int)
|
||||||
emsg(_(e_interrupted));
|
emsg(_(e_interrupted));
|
||||||
|
#ifdef FEAT_EVAL
|
||||||
ESTACK_CHECK_NOW
|
ESTACK_CHECK_NOW
|
||||||
|
#endif
|
||||||
estack_pop();
|
estack_pop();
|
||||||
if (p_verbose > 1)
|
if (p_verbose > 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2959,9 +2959,7 @@ struct file_buffer
|
|||||||
int b_p_ma; // 'modifiable'
|
int b_p_ma; // 'modifiable'
|
||||||
char_u *b_p_nf; // 'nrformats'
|
char_u *b_p_nf; // 'nrformats'
|
||||||
int b_p_pi; // 'preserveindent'
|
int b_p_pi; // 'preserveindent'
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
char_u *b_p_qe; // 'quoteescape'
|
char_u *b_p_qe; // 'quoteescape'
|
||||||
#endif
|
|
||||||
int b_p_ro; // 'readonly'
|
int b_p_ro; // 'readonly'
|
||||||
long b_p_sw; // 'shiftwidth'
|
long b_p_sw; // 'shiftwidth'
|
||||||
int b_p_sn; // 'shortname'
|
int b_p_sn; // 'shortname'
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
" Test for textobjects
|
" Test for textobjects
|
||||||
|
|
||||||
source check.vim
|
source check.vim
|
||||||
CheckFeature textobjects
|
|
||||||
|
|
||||||
func CpoM(line, useM, expected)
|
func CpoM(line, useM, expected)
|
||||||
new
|
new
|
||||||
|
|||||||
@@ -614,7 +614,6 @@ skip_chars(int cclass, int dir)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_TEXTOBJ) || defined(PROTO)
|
|
||||||
/*
|
/*
|
||||||
* Go back to the start of the word or the start of white space
|
* Go back to the start of the word or the start of white space
|
||||||
*/
|
*/
|
||||||
@@ -1189,6 +1188,7 @@ current_block(
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(FEAT_EVAL) || defined(PROTO)
|
||||||
/*
|
/*
|
||||||
* Return TRUE if the cursor is on a "<aaa>" tag. Ignore "<aaa/>".
|
* Return TRUE if the cursor is on a "<aaa>" tag. Ignore "<aaa/>".
|
||||||
* When "end_tag" is TRUE return TRUE if the cursor is on "</aaa>".
|
* When "end_tag" is TRUE return TRUE if the cursor is on "</aaa>".
|
||||||
@@ -1470,6 +1470,7 @@ theend:
|
|||||||
p_ws = save_p_ws;
|
p_ws = save_p_ws;
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
current_par(
|
current_par(
|
||||||
@@ -2001,5 +2002,3 @@ abort_search:
|
|||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // FEAT_TEXTOBJ
|
|
||||||
|
|||||||
@@ -614,11 +614,7 @@ static char *(features[]) =
|
|||||||
#else
|
#else
|
||||||
"-termresponse",
|
"-termresponse",
|
||||||
#endif
|
#endif
|
||||||
#ifdef FEAT_TEXTOBJ
|
|
||||||
"+textobjects",
|
"+textobjects",
|
||||||
#else
|
|
||||||
"-textobjects",
|
|
||||||
#endif
|
|
||||||
#ifdef FEAT_PROP_POPUP
|
#ifdef FEAT_PROP_POPUP
|
||||||
"+textprop",
|
"+textprop",
|
||||||
#else
|
#else
|
||||||
@@ -735,6 +731,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
222,
|
||||||
/**/
|
/**/
|
||||||
221,
|
221,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user