summaryrefslogtreecommitdiff
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2006-02-23 21:26:58 +0000
committerBram Moolenaar <Bram@vim.org>2006-02-23 21:26:58 +0000
commit80a94a582cd2d5307d1e65ec06fe0fb05f60d7c9 (patch)
treeaff2c0d22bf46c67d702d07b7ce0d160c09d7e23 /src/ex_docmd.c
parentd1f56e68f1315687ff5b913e2577f11b0b620573 (diff)
downloadvim-git-80a94a582cd2d5307d1e65ec06fe0fb05f60d7c9.tar.gz
updated for version 7.0205
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c76
1 files changed, 68 insertions, 8 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 73bf420f6..df6273ffc 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -155,6 +155,9 @@ static void ex_resize __ARGS((exarg_T *eap));
static void ex_stag __ARGS((exarg_T *eap));
static void ex_tabclose __ARGS((exarg_T *eap));
static void ex_tabonly __ARGS((exarg_T *eap));
+static void ex_tabnext __ARGS((exarg_T *eap));
+static void ex_tabprevious __ARGS((exarg_T *eap));
+static void ex_tabmove __ARGS((exarg_T *eap));
static void ex_tabs __ARGS((exarg_T *eap));
#else
# define ex_close ex_ni
@@ -163,7 +166,9 @@ static void ex_tabs __ARGS((exarg_T *eap));
# define ex_resize ex_ni
# define ex_splitview ex_ni
# define ex_stag ex_ni
-# define ex_tab ex_ni
+# define ex_tabnext ex_ni
+# define ex_tabprevious ex_ni
+# define ex_tabmove ex_ni
# define ex_tabs ex_ni
# define ex_tabclose ex_ni
# define ex_tabonly ex_ni
@@ -1857,7 +1862,25 @@ do_one_cmd(cmdlinep, sourcing,
}
continue;
- case 't': if (!checkforcmd(&ea.cmd, "topleft", 2))
+ case 't': if (checkforcmd(&p, "tab", 3))
+ {
+#ifdef FEAT_WINDOWS
+ tabpage_T *tp;
+
+ if (vim_isdigit(*ea.cmd))
+ cmdmod.tab = atoi((char *)ea.cmd) + 1;
+ else
+ {
+ cmdmod.tab = 2;
+ for (tp = first_tabpage; tp != curtab;
+ tp = tp->tp_next)
+ ++cmdmod.tab;
+ }
+ ea.cmd = p;
+#endif
+ continue;
+ }
+ if (!checkforcmd(&ea.cmd, "topleft", 2))
break;
#ifdef FEAT_WINDOWS
cmdmod.split |= WSP_TOP;
@@ -2380,7 +2403,7 @@ do_one_cmd(cmdlinep, sourcing,
{
n = getdigits(&ea.arg);
ea.arg = skipwhite(ea.arg);
- if (n <= 0 && !ni)
+ if (n <= 0 && !ni && (ea.argt & ZEROR) == 0)
{
errormsg = (char_u *)_(e_zerocount);
goto doend;
@@ -6957,7 +6980,7 @@ ex_splitview(eap)
|| eap->cmdidx == CMD_tabfind
|| eap->cmdidx == CMD_tabnew)
{
- if (win_new_tabpage() != FAIL)
+ if (win_new_tabpage(cmdmod.tab) != FAIL)
{
do_exedit(eap, NULL);
@@ -6998,13 +7021,48 @@ theend:
}
/*
- * :tab command
+ * Open a new tab page.
*/
void
-ex_tab(eap)
+tabpage_new()
+{
+ exarg_T ea;
+
+ vim_memset(&ea, 0, sizeof(ea));
+ ea.cmdidx = CMD_tabnew;
+ ea.cmd = (char_u *)"tabn";
+ ea.arg = (char_u *)"";
+ ex_splitview(&ea);
+}
+
+/*
+ * :tabnext command
+ */
+ static void
+ex_tabnext(eap)
exarg_T *eap;
{
- goto_tabpage((int)eap->line2);
+ goto_tabpage(eap->addr_count == 0 ? 0 : (int)eap->line2);
+}
+
+/*
+ * :tabprevious and :tabNext command
+ */
+ static void
+ex_tabprevious(eap)
+ exarg_T *eap;
+{
+ goto_tabpage(eap->addr_count == 0 ? -1 : -(int)eap->line2);
+}
+
+/*
+ * :tabmove command
+ */
+ static void
+ex_tabmove(eap)
+ exarg_T *eap;
+{
+ tabpage_move(eap->addr_count == 0 ? 9999 : (int)eap->line2);
}
/*
@@ -7035,7 +7093,9 @@ ex_tabs(eap)
wp = tp->tp_firstwin;
for ( ; wp != NULL && !got_int; wp = wp->w_next)
{
- msg_puts((char_u *)"\n ");
+ msg_putchar('\n');
+ msg_putchar(wp == curwin ? '>' : ' ');
+ msg_putchar(' ');
msg_putchar(bufIsChanged(wp->w_buffer) ? '+' : ' ');
msg_putchar(' ');
if (buf_spname(wp->w_buffer) != NULL)