To: vim_dev@googlegroups.com Subject: Patch 8.0.0847 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0847 Problem: :argadd without argument can't handle space in file name. (Harm te Hennepe) Solution: Escape the space. (Yasuhiro Matsumoto, closes #1917) Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/testdir/test_arglist.vim *** ../vim-8.0.0846/src/ex_cmds2.c 2017-07-16 15:30:51.323226561 +0200 --- src/ex_cmds2.c 2017-08-03 14:20:57.963517811 +0200 *************** *** 2320,2327 **** * Separate the arguments in "str" and return a list of pointers in the * growarray "gap". */ ! int ! get_arglist(garray_T *gap, char_u *str) { ga_init2(gap, (int)sizeof(char_u *), 20); while (*str != NUL) --- 2320,2327 ---- * Separate the arguments in "str" and return a list of pointers in the * growarray "gap". */ ! static int ! get_arglist(garray_T *gap, char_u *str, int escaped) { ga_init2(gap, (int)sizeof(char_u *), 20); while (*str != NUL) *************** *** 2333,2338 **** --- 2333,2342 ---- } ((char_u **)gap->ga_data)[gap->ga_len++] = str; + /* If str is escaped, don't handle backslashes or spaces */ + if (!escaped) + return OK; + /* Isolate one argument, change it in-place, put a NUL after it. */ str = do_one_arg(str); } *************** *** 2355,2361 **** garray_T ga; int i; ! if (get_arglist(&ga, str) == FAIL) return FAIL; if (wig == TRUE) i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, --- 2359,2365 ---- garray_T ga; int i; ! if (get_arglist(&ga, str, TRUE) == FAIL) return FAIL; if (wig == TRUE) i = expand_wildcards(ga.ga_len, (char_u **)ga.ga_data, *************** *** 2401,2406 **** --- 2405,2411 ---- char_u *p; int match; #endif + int arg_escaped = TRUE; /* * Set default argument for ":argadd" command. *************** *** 2410,2421 **** if (curbuf->b_ffname == NULL) return FAIL; str = curbuf->b_fname; } /* * Collect all file name arguments in "new_ga". */ ! if (get_arglist(&new_ga, str) == FAIL) return FAIL; #ifdef FEAT_LISTCMDS --- 2415,2427 ---- if (curbuf->b_ffname == NULL) return FAIL; str = curbuf->b_fname; + arg_escaped = FALSE; } /* * Collect all file name arguments in "new_ga". */ ! if (get_arglist(&new_ga, str, arg_escaped) == FAIL) return FAIL; #ifdef FEAT_LISTCMDS *** ../vim-8.0.0846/src/proto/ex_cmds2.pro 2017-06-27 14:43:51.203020467 +0200 --- src/proto/ex_cmds2.pro 2017-08-03 14:21:02.163486874 +0200 *************** *** 52,58 **** int check_changed_any(int hidden, int unload); int check_fname(void); int buf_write_all(buf_T *buf, int forceit); - int get_arglist(garray_T *gap, char_u *str); int get_arglist_exp(char_u *str, int *fcountp, char_u ***fnamesp, int wig); void set_arglist(char_u *str); void check_arg_idx(win_T *win); --- 52,57 ---- *** ../vim-8.0.0846/src/testdir/test_arglist.vim 2017-07-16 16:42:08.066725876 +0200 --- src/testdir/test_arglist.vim 2017-08-03 14:18:59.312391939 +0200 *************** *** 65,77 **** %argd edit d arga ! call assert_equal(len(argv()), 1) ! call assert_equal(get(argv(), 0, ''), 'd') %argd new arga ! call assert_equal(len(argv()), 0) endfunc func Init_abc() --- 65,83 ---- %argd edit d arga ! call assert_equal(1, len(argv())) ! call assert_equal('d', get(argv(), 0, '')) ! ! %argd ! edit some\ file ! arga ! call assert_equal(1, len(argv())) ! call assert_equal('some file', get(argv(), 0, '')) %argd new arga ! call assert_equal(0, len(argv())) endfunc func Init_abc() *** ../vim-8.0.0846/src/version.c 2017-08-03 13:51:02.388784785 +0200 --- src/version.c 2017-08-03 14:28:42.560097336 +0200 *************** *** 771,772 **** --- 771,774 ---- { /* Add new patch number below this line */ + /**/ + 847, /**/ -- A poem: read aloud: <> !*''# Waka waka bang splat tick tick hash, ^"`$$- Caret quote back-tick dollar dollar dash, !*=@$_ Bang splat equal at dollar under-score, %*<> ~#4 Percent splat waka waka tilde number four, &[]../ Ampersand bracket bracket dot dot slash, |{,,SYSTEM HALTED Vertical-bar curly-bracket comma comma CRASH. Fred Bremmer and Steve Kroese (Calvin College & Seminary of Grand Rapids, MI.) /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///