aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/window.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2015-04-29 02:11:30 -0400
committerJustin M. Keyes <justinkz@gmail.com>2015-04-29 02:11:30 -0400
commit45b617afada9304cb265aad02645b22d76dfc2d5 (patch)
tree7f28a768d2c88e646f1bc4e1b9e5b1ea604cce21 /src/nvim/window.c
parent6a8862ded4d6f1693ac591ac8e47d1acbd044c49 (diff)
parentb46746b93ef298688cba3d8fbbcdae13e069935c (diff)
downloadrneovim-45b617afada9304cb265aad02645b22d76dfc2d5.tar.gz
rneovim-45b617afada9304cb265aad02645b22d76dfc2d5.tar.bz2
rneovim-45b617afada9304cb265aad02645b22d76dfc2d5.zip
Merge pull request #2041 from fmoralesc/command-ranges
Command ranges (was PR #1793)
Diffstat (limited to 'src/nvim/window.c')
-rw-r--r--src/nvim/window.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/nvim/window.c b/src/nvim/window.c
index 4f31c09eeb..f93e88deb2 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -124,10 +124,7 @@ do_window (
case Ctrl_HAT:
case '^':
CHECK_CMDWIN reset_VIsual_and_resel(); /* stop Visual mode */
- STRCPY(cbuf, "split #");
- if (Prenum)
- vim_snprintf((char *)cbuf + 7, sizeof(cbuf) - 7,
- "%" PRId64, (int64_t)Prenum);
+ cmd_with_count("split #", cbuf, sizeof(cbuf), Prenum);
do_cmdline_cmd(cbuf);
break;
@@ -151,14 +148,16 @@ newwindow:
case Ctrl_Q:
case 'q':
reset_VIsual_and_resel(); /* stop Visual mode */
- do_cmdline_cmd((char_u *)"quit");
+ cmd_with_count("quit", cbuf, sizeof(cbuf), Prenum);
+ do_cmdline_cmd(cbuf);
break;
/* close current window */
case Ctrl_C:
case 'c':
reset_VIsual_and_resel(); /* stop Visual mode */
- do_cmdline_cmd((char_u *)"close");
+ cmd_with_count("close", cbuf, sizeof(cbuf), Prenum);
+ do_cmdline_cmd(cbuf);
break;
/* close preview window */
@@ -183,7 +182,8 @@ newwindow:
case Ctrl_O:
case 'o':
CHECK_CMDWIN reset_VIsual_and_resel(); /* stop Visual mode */
- do_cmdline_cmd((char_u *)"only");
+ cmd_with_count("only", cbuf, sizeof(cbuf), Prenum);
+ do_cmdline_cmd(cbuf);
break;
/* cursor to next window with wrap around */
@@ -487,6 +487,16 @@ wingotofile:
}
}
+static void cmd_with_count(char *cmd, char_u *bufp, size_t bufsize,
+ long Prenum)
+{
+ size_t len = xstrlcpy((char *)bufp, cmd, bufsize);
+
+ if (Prenum > 0 && len < bufsize) {
+ vim_snprintf((char *)bufp + len, bufsize - len, "%" PRId64, Prenum);
+ }
+}
+
/*
* split the current window, implements CTRL-W s and :split
*