patch 7.4.1222
Problem: ":normal" command and others missing in tiny build.
Solution: Graduate FEAT_EX_EXTRA.
diff --git a/src/charset.c b/src/charset.c
index 538d821..2414b2a 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -822,14 +822,11 @@
else \
return ptr2cells(p);
-#if defined(FEAT_VREPLACE) || defined(FEAT_EX_EXTRA) || defined(FEAT_GUI) \
- || defined(FEAT_VIRTUALEDIT) || defined(PROTO)
int
chartabsize(char_u *p, colnr_T col)
{
RET_WIN_BUF_CHARTABSIZE(curwin, curbuf, p, col)
}
-#endif
#ifdef FEAT_LINEBREAK
static int
@@ -1568,7 +1565,6 @@
}
#endif
-#if defined(FEAT_EX_EXTRA) || defined(PROTO)
/*
* skip to bin digit (or NUL after the string)
*/
@@ -1607,7 +1603,6 @@
++p;
return p;
}
-#endif
/*
* Variant of isdigit() that can handle characters > 0x100.
diff --git a/src/eval.c b/src/eval.c
index 7679251..d2ebeb9 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -12855,9 +12855,7 @@
"emacs_tags",
#endif
"eval", /* always present, of course! */
-#ifdef FEAT_EX_EXTRA
- "ex_extra",
-#endif
+ "ex_extra", /* graduated feature */
#ifdef FEAT_SEARCH_EXTRA
"extra_search",
#endif
@@ -13684,16 +13682,12 @@
if (defstr != NULL)
{
-# ifdef FEAT_EX_EXTRA
int save_ex_normal_busy = ex_normal_busy;
ex_normal_busy = 0;
-# endif
rettv->vval.v_string =
getcmdline_prompt(inputsecret_flag ? NUL : '@', p, echo_attr,
xp_type, xp_arg);
-# ifdef FEAT_EX_EXTRA
ex_normal_busy = save_ex_normal_busy;
-# endif
}
if (inputdialog && rettv->vval.v_string == NULL
&& argvars[1].v_type != VAR_UNKNOWN
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 66f1fa6..3efdf8b 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -18,9 +18,7 @@
# include <float.h>
#endif
-#ifdef FEAT_EX_EXTRA
static int linelen(int *has_tab);
-#endif
static void do_filter(linenr_T line1, linenr_T line2, exarg_T *eap, char_u *cmd, int do_in, int do_out);
#ifdef FEAT_VIMINFO
static char_u *viminfo_filename(char_u *);
@@ -138,7 +136,6 @@
msg(IObuff);
}
-#if defined(FEAT_EX_EXTRA) || defined(PROTO)
/*
* ":left", ":center" and ":right": align text.
*/
@@ -787,7 +784,6 @@
u_clearline();
}
-#endif
/*
* :move command - move lines line1-line2 to line dest
@@ -6577,7 +6573,6 @@
do_cmdline_cmd((char_u *)"help normal-index");
}
-#if defined(FEAT_EX_EXTRA) || defined(PROTO)
static void helptags_one(char_u *dir, char_u *ext, char_u *lang, int add_help_tags);
/*
@@ -6962,7 +6957,6 @@
ga_clear(&ga);
fclose(fd_tags); /* there is no check for an error... */
}
-#endif
#if defined(FEAT_SIGNS) || defined(PROTO)
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index c1adea4..2651770 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -90,9 +90,7 @@
tasave_T typeaheadbuf;
int typeahead_saved = FALSE;
int save_ignore_script = 0;
-# ifdef FEAT_EX_EXTRA
int save_ex_normal_busy;
-# endif
int n;
char_u *cmdline = NULL;
char_u *p;
@@ -161,10 +159,8 @@
* with the commands being executed. Reset "ex_normal_busy" to avoid
* the side effects of using ":normal". Save the stuff buffer and make
* it empty. Set ignore_script to avoid reading from script input. */
-# ifdef FEAT_EX_EXTRA
save_ex_normal_busy = ex_normal_busy;
ex_normal_busy = 0;
-# endif
if (!debug_greedy)
{
save_typeahead(&typeaheadbuf);
@@ -180,9 +176,7 @@
restore_typeahead(&typeaheadbuf);
ignore_script = save_ignore_script;
}
-# ifdef FEAT_EX_EXTRA
ex_normal_busy = save_ex_normal_busy;
-# endif
cmdline_row = msg_row;
msg_starthere();
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 24df1d1..028af35 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -344,18 +344,8 @@
static char_u *uc_fun_cmd(void);
static char_u *find_ucmd(exarg_T *eap, char_u *p, int *full, expand_T *xp, int *compl);
#endif
-#ifdef FEAT_EX_EXTRA
static void ex_startinsert(exarg_T *eap);
static void ex_stopinsert(exarg_T *eap);
-#else
-# define ex_normal ex_ni
-# define ex_align ex_ni
-# define ex_retab ex_ni
-# define ex_startinsert ex_ni
-# define ex_stopinsert ex_ni
-# define ex_helptags ex_ni
-# define ex_sort ex_ni
-#endif
#ifdef FEAT_FIND_ID
static void ex_checkpath(exarg_T *eap);
static void ex_findpat(exarg_T *eap);
@@ -659,14 +649,12 @@
MSG(_("Entering Ex mode. Type \"visual\" to go to Normal mode."));
while (exmode_active)
{
-#ifdef FEAT_EX_EXTRA
/* Check for a ":normal" command and no more characters left. */
if (ex_normal_busy > 0 && typebuf.tb_len == 0)
{
exmode_active = FALSE;
break;
}
-#endif
msg_scroll = TRUE;
need_wait_return = FALSE;
ex_pressedreturn = FALSE;
@@ -9860,7 +9848,6 @@
update_curswant();
}
-#if defined(FEAT_EX_EXTRA) || defined(PROTO)
/*
* ":normal[!] {commands}": Execute normal mode commands.
*/
@@ -10062,9 +10049,7 @@
restart_edit = 0;
stop_insert_mode = TRUE;
}
-#endif
-#if defined(FEAT_EX_EXTRA) || defined(FEAT_MENU) || defined(PROTO)
/*
* Execute normal mode command "cmd".
* "remap" can be REMAP_NONE or REMAP_YES.
@@ -10076,10 +10061,7 @@
ins_typebuf(cmd, remap, 0, TRUE, silent);
exec_normal(FALSE);
}
-#endif
-#if defined(FEAT_EX_EXTRA) || defined(FEAT_MENU) || defined(FEAT_EVAL) \
- || defined(PROTO)
/*
* Execute normal_cmd() until there is no typeahead left.
*/
@@ -10097,7 +10079,6 @@
normal_cmd(&oa, TRUE); /* execute a Normal mode cmd */
}
}
-#endif
#ifdef FEAT_FIND_ID
static void
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 9a49f9f..b70755e 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1129,10 +1129,7 @@
/* In exmode it doesn't make sense to return. Except when
* ":normal" runs out of characters. */
if (exmode_active
-#ifdef FEAT_EX_EXTRA
- && (ex_normal_busy == 0 || typebuf.tb_len > 0)
-#endif
- )
+ && (ex_normal_busy == 0 || typebuf.tb_len > 0))
goto cmdline_not_changed;
gotesc = TRUE; /* will free ccline.cmdbuff after
diff --git a/src/feature.h b/src/feature.h
index f1a3a4a..ca81d89 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -254,13 +254,6 @@
#endif
/*
- * +ex_extra ":retab", ":right", ":left", ":center", ":normal".
- */
-#if defined(FEAT_NORMAL) || defined(FEAT_CHANNEL)
-# define FEAT_EX_EXTRA
-#endif
-
-/*
* +extra_search 'hlsearch' and 'incsearch' options.
*/
#ifdef FEAT_NORMAL
diff --git a/src/getchar.c b/src/getchar.c
index 7a5756b..12e2508 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1356,8 +1356,6 @@
static int old_mouse_col; /* mouse_col related to old_char */
#endif
-#if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
-
/*
* Save all three kinds of typeahead, so that the user must type at a prompt.
*/
@@ -1406,7 +1404,6 @@
set_input_buf(tp->save_inputbuf);
# endif
}
-#endif
/*
* Open a new script file for the ":source!" command.
@@ -1981,11 +1978,7 @@
* Using ":normal" can also do this, but it saves the typeahead buffer,
* thus it should be OK. But don't get a key from the user then.
*/
- if (vgetc_busy > 0
-#ifdef FEAT_EX_EXTRA
- && ex_normal_busy == 0
-#endif
- )
+ if (vgetc_busy > 0 && ex_normal_busy == 0)
return NUL;
local_State = get_real_state();
@@ -2605,9 +2598,7 @@
&& typebuf.tb_len == 1
&& typebuf.tb_buf[typebuf.tb_off] == ESC
&& !no_mapping
-#ifdef FEAT_EX_EXTRA
&& ex_normal_busy == 0
-#endif
&& typebuf.tb_maplen == 0
&& (State & INSERT)
&& (p_timeout
@@ -2729,12 +2720,11 @@
continue;
}
-#ifdef FEAT_EX_EXTRA
if (ex_normal_busy > 0)
{
-# ifdef FEAT_CMDWIN
+#ifdef FEAT_CMDWIN
static int tc = 0;
-# endif
+#endif
/* No typeahead left and inside ":normal". Must return
* something to avoid getting stuck. When an incomplete
@@ -2753,19 +2743,18 @@
if (p_im && (State & INSERT))
c = Ctrl_L;
else if ((State & CMDLINE)
-# ifdef FEAT_CMDWIN
+#ifdef FEAT_CMDWIN
|| (cmdwin_type > 0 && tc == ESC)
-# endif
+#endif
)
c = Ctrl_C;
else
c = ESC;
-# ifdef FEAT_CMDWIN
+#ifdef FEAT_CMDWIN
tc = c;
-# endif
+#endif
break;
}
-#endif
/*
* get a character: 3. from the user - update display
@@ -4638,18 +4627,14 @@
/* Forbid changing text or using ":normal" to avoid most of the bad side
* effects. Also restore the cursor position. */
++textlock;
-#ifdef FEAT_EX_EXTRA
++ex_normal_lock;
-#endif
set_vim_var_char(c); /* set v:char to the typed character */
save_cursor = curwin->w_cursor;
save_msg_col = msg_col;
save_msg_row = msg_row;
p = eval_to_string(expr, NULL, FALSE);
--textlock;
-#ifdef FEAT_EX_EXTRA
--ex_normal_lock;
-#endif
curwin->w_cursor = save_cursor;
msg_col = save_msg_col;
msg_row = save_msg_row;
diff --git a/src/globals.h b/src/globals.h
index 103aff6..4c1b41f 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -995,10 +995,8 @@
= {NULL, NULL, 0, 0, 0, 0, 0, 0, 0}
#endif
;
-#ifdef FEAT_EX_EXTRA
EXTERN int ex_normal_busy INIT(= 0); /* recursiveness of ex_normal() */
EXTERN int ex_normal_lock INIT(= 0); /* forbid use of ex_normal() */
-#endif
#ifdef FEAT_EVAL
EXTERN int ignore_script INIT(= FALSE); /* ignore script input */
#endif
@@ -1573,9 +1571,7 @@
EXTERN char_u e_emptybuf[] INIT(= N_("E749: empty buffer"));
EXTERN char_u e_nobufnr[] INIT(= N_("E86: Buffer %ld does not exist"));
-#ifdef FEAT_EX_EXTRA
EXTERN char_u e_invalpat[] INIT(= N_("E682: Invalid search pattern or delimiter"));
-#endif
EXTERN char_u e_bufloaded[] INIT(= N_("E139: File is loaded in another buffer"));
#if defined(FEAT_SYN_HL) || \
(defined(FEAT_INS_EXPAND) && defined(FEAT_COMPL_FUNC))
diff --git a/src/normal.c b/src/normal.c
index 2aa068d..d4b4b70 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -8924,11 +8924,7 @@
/* A CTRL-C is often used at the start of a menu. When 'insertmode' is
* set return to Insert mode afterwards. */
- if (restart_edit == 0 && goto_im()
-#ifdef FEAT_EX_EXTRA
- && ex_normal_busy == 0
-#endif
- )
+ if (restart_edit == 0 && goto_im() && ex_normal_busy == 0)
restart_edit = 'a';
}
diff --git a/src/ui.c b/src/ui.c
index 4309248..12aa12c 100644
--- a/src/ui.c
+++ b/src/ui.c
@@ -1580,7 +1580,6 @@
}
#endif
-#if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
/*
* Return the current contents of the input buffer and make it empty.
* The returned pointer must be passed to set_input_buf() later.
@@ -1624,7 +1623,6 @@
vim_free(gap);
}
}
-#endif
#if defined(FEAT_GUI) \
|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE) \
@@ -1701,15 +1699,12 @@
}
#endif
-#if defined(FEAT_GUI) || defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) \
- || defined(PROTO)
/* Remove everything from the input buffer. Called when ^C is found */
void
trash_input_buf(void)
{
inbufcount = 0;
}
-#endif
/*
* Read as much data from the input buffer as possible up to maxlen, and store
diff --git a/src/version.c b/src/version.c
index 78fdb7c..b521511 100644
--- a/src/version.c
+++ b/src/version.c
@@ -221,11 +221,7 @@
#else
"-eval",
#endif
-#ifdef FEAT_EX_EXTRA
"+ex_extra",
-#else
- "-ex_extra",
-#endif
#ifdef FEAT_SEARCH_EXTRA
"+extra_search",
#else
@@ -747,6 +743,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1222,
+/**/
1221,
/**/
1220,