From 86330fdd3f39a8975b25b7050a3d02b77a442057 Mon Sep 17 00:00:00 2001 From: Felipe Morales Date: Sat, 10 Jan 2015 20:27:17 -0300 Subject: vim-patch:7.4.530-531 Specify different kinds of counts for commands. Updated ex commands generator scripts. Includes fixes to comments from patch 7.4.531 Original message: Problem: Many commands take a count or range that is not using line numbers. Solution: For each command specify what kind of count it uses. For windows, buffers and arguments have "$" and "." have a relevant meaning. (Marcin Szamotulski) https://code.google.com/p/vim/source/detail?r=v7-4-530 https://code.google.com/p/vim/source/detail?r=v7-4-531 Add legacy tests for 7.4.530 https://code.google.com/p/vim/source/detail?r=1e6d87a36dcdca231721dde8cbbc26610fb3df27 --- src/nvim/window.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/nvim/window.c') diff --git a/src/nvim/window.c b/src/nvim/window.c index 4f31c09eeb..90f46c3410 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -151,14 +151,20 @@ newwindow: case Ctrl_Q: case 'q': reset_VIsual_and_resel(); /* stop Visual mode */ - do_cmdline_cmd((char_u *)"quit"); + STRCPY(cbuf, "quit"); + if (Prenum) + vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, "%ld", 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"); + STRCPY(cbuf, "close"); + if (Prenum) + vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, "%ld", Prenum); + do_cmdline_cmd(cbuf); break; /* close preview window */ @@ -183,7 +189,10 @@ newwindow: case Ctrl_O: case 'o': CHECK_CMDWIN reset_VIsual_and_resel(); /* stop Visual mode */ - do_cmdline_cmd((char_u *)"only"); + STRCPY(cbuf, "only"); + if (Prenum > 0) + vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 4, "%ld", Prenum); + do_cmdline_cmd(cbuf); break; /* cursor to next window with wrap around */ -- cgit From 87953bf5ff44006567c7b8a210406d79ae9e4fad Mon Sep 17 00:00:00 2001 From: Felipe Morales Date: Tue, 20 Jan 2015 02:01:16 -0300 Subject: vim-patch:7.4.546 Problem: Repeated use of vim_snprintf() with a number. Solution: Move these vim_snprintf() calls into a function. https://code.google.com/p/vim/source/detail?name=v7-4-546 --- src/nvim/window.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src/nvim/window.c') diff --git a/src/nvim/window.c b/src/nvim/window.c index 90f46c3410..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,9 +148,7 @@ newwindow: case Ctrl_Q: case 'q': reset_VIsual_and_resel(); /* stop Visual mode */ - STRCPY(cbuf, "quit"); - if (Prenum) - vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, "%ld", Prenum); + cmd_with_count("quit", cbuf, sizeof(cbuf), Prenum); do_cmdline_cmd(cbuf); break; @@ -161,9 +156,7 @@ newwindow: case Ctrl_C: case 'c': reset_VIsual_and_resel(); /* stop Visual mode */ - STRCPY(cbuf, "close"); - if (Prenum) - vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 5, "%ld", Prenum); + cmd_with_count("close", cbuf, sizeof(cbuf), Prenum); do_cmdline_cmd(cbuf); break; @@ -189,9 +182,7 @@ newwindow: case Ctrl_O: case 'o': CHECK_CMDWIN reset_VIsual_and_resel(); /* stop Visual mode */ - STRCPY(cbuf, "only"); - if (Prenum > 0) - vim_snprintf((char *)cbuf + 4, sizeof(cbuf) - 4, "%ld", Prenum); + cmd_with_count("only", cbuf, sizeof(cbuf), Prenum); do_cmdline_cmd(cbuf); break; @@ -496,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 * -- cgit