I managed to miss this posting until now, so I'm only 45 or so days late. I appreciate that you kept this request in the queue and worked on it after the release of 7.3!
I've tried this with VIM (EX) 7.3.62, and it still produces a different result than the 6.3 version we're running on RHEL4. To recreate the problem, perform the following: cat - > ex.input << EOF a X \\ Y . w ex.output EOF cat -tvse ex.input ex - -u NONE < ex.input cat -tvse ex.output When working correctly (rhel4), the output from cat of ex.output is: $ X \$ Y$ On rhel5, the output from cat of ex.output is: X \...@y$ On Sep 29, 6:50 am, Bram Moolenaar <[email protected]> wrote: > Patch 7.3.014 > Problem: Ending a line in a backslash inside an ":append" or ":insert" > command in Ex mode doesn't work properly. (RayFrush) > Solution: Halve the number of backslashes, only insert a NUL after an odd > number of backslashes. > Files: src/ex_getln.c > > *** ../vim-7.3.013/src/ex_getln.c 2010-09-21 16:56:29.000000000 +0200 > --- src/ex_getln.c 2010-09-29 15:47:56.000000000 +0200 > *************** > *** 2342,2356 **** > windgoto(msg_row, msg_col); > pend = (char_u *)(line_ga.ga_data) + line_ga.ga_len; > > ! /* we are done when a NL is entered, but not when it comes after a > ! * backslash */ > ! if (line_ga.ga_len > 0 && pend[-1] == '\n' > ! && (line_ga.ga_len <= 1 || pend[-2] != '\\')) > ! { > ! --line_ga.ga_len; > ! --pend; > ! *pend = NUL; > ! break; > } > } > > --- 2342,2372 ---- > windgoto(msg_row, msg_col); > pend = (char_u *)(line_ga.ga_data) + line_ga.ga_len; > > ! /* We are done when a NL is entered, but not when it comes after an > ! * odd number of backslashes, that results in a NUL. */ > ! if (line_ga.ga_len > 0 && pend[-1] == '\n') > ! { > ! int bcount = 0; > ! > ! while (line_ga.ga_len - 2 >= bcount && pend[-2 - bcount] == '\\') > ! ++bcount; > ! > ! if (bcount > 0) > ! { > ! /* Halve the number of backslashes: "\NL" -> "NUL", "\\NL" -> > ! * "\NL", etc. */ > ! line_ga.ga_len -= (bcount + 1) / 2; > ! pend -= (bcount + 1) / 2; > ! pend[-1] = '\n'; > ! } > ! > ! if ((bcount & 1) == 0) > ! { > ! --line_ga.ga_len; > ! --pend; > ! *pend = NUL; > ! break; > ! } > } > } > > *** ../vim-7.3.013/src/version.c 2010-09-29 13:02:48.000000000 +0200 > --- src/version.c 2010-09-29 15:45:57.000000000 +0200 > *************** > *** 716,717 **** > --- 716,719 ---- > { /* Add new patch number below this line */ > + /**/ > + 14, > /**/ > > -- > hundred-and-one symptoms of being an internet addict: > 224. You set up your own Web page. You set up a Web page for each > of your kids... and your pets. > > /// Bram Moolenaar -- [email protected] --http://www.Moolenaar.net \\\ > /// sponsor Vim, vote for features --http://www.Vim.org/sponsor/\\\ > \\\ download, build and distribute --http://www.A-A-P.org /// > \\\ help me help AIDS victims --http://ICCF-Holland.org /// -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php
