Re: Patch 7.4.353
Christian Brabandt wrote: On Do, 10 Jul 2014, Bram Moolenaar wrote: I do not really like the idea of two versions of the .ok file. It's a new mechanism and will easily confuse me. Does testing without utf-8 have a good purpose? Then I would prefer to split this up in two tests, so that when utf-8 is supported the test is also run without utf-8. If testing without utf-8 isn't really useful I would prefer to just skip it. Okay, here we go, test splitted up into two versions. Thanks. However, the src/testdir/test_listlbr_utf8.ok file is missing. -- BRIDGEKEEPER: What is your favorite colour? GAWAIN: Blue ... No yelloww! Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Patch 7.4.353
On Sa, 12 Jul 2014, Bram Moolenaar wrote: Christian Brabandt wrote: On Do, 10 Jul 2014, Bram Moolenaar wrote: I do not really like the idea of two versions of the .ok file. It's a new mechanism and will easily confuse me. Does testing without utf-8 have a good purpose? Then I would prefer to split this up in two tests, so that when utf-8 is supported the test is also run without utf-8. If testing without utf-8 isn't really useful I would prefer to just skip it. Okay, here we go, test splitted up into two versions. Thanks. However, the src/testdir/test_listlbr_utf8.ok file is missing. Sorry. Here we go. Best, Christian -- Der Begriff Fortschritt allein setzt bereits die Horizontale voraus. Er bedeutet ein Weiterkommen und keine Höherkommen. -- Joseph Roth -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout. diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -39,6 +39,7 @@ SCRIPTS = test1.out test3.out test4.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out @@ -167,5 +168,6 @@ test107.out: test107.in test_autoformat_join.out: test_autoformat_join.in test_breakindent.out: test_breakindent.in test_listlbr.out: test_listlbr.in +test_listlbr_utf8.out: test_listlbr_utf8.in test_eval.out: test_eval.in test_options.out: test_options.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -38,6 +38,7 @@ SCRIPTS = test3.out test4.out test5.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -58,6 +58,7 @@ SCRIPTS = test3.out test4.out test5.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -40,6 +40,7 @@ SCRIPTS = test1.out test3.out test4.out test_autoformat_join.out \ test_eval.out \ test_breakindent.out \ + test_listlbr_utf8.out \ test_listlbr.out \ test_options.out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -99,6 +99,7 @@ SCRIPT = test1.out test2.out test3.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Makefile b/src/testdir/Makefile --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -36,6 +36,7 @@ SCRIPTS = test1.out test2.out test3.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/test_listlbr.in b/src/testdir/test_listlbr.in --- a/src/testdir/test_listlbr.in +++ b/src/testdir/test_listlbr.in @@ -1,10 +1,10 @@ -Test for linebreak and list option +Test for linebreak and list option (non-utf8) STARTTEST :so small.vim :if !exists(+linebreak) | e! test.ok | w! test.out | qa! | endif :10new|:vsp|:vert resize 20 -:put =\\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \ +:put =\\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \ :norm! zt :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap :fu! ScreenChar(width) @@ -32,22 +32,12 @@ STARTTEST :redraw! :let line=ScreenChar(winwidth(0)) :call DoRecordScreen() -:let g:test =Test 3: set linebreak + set list + fancy listchars -:exe set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6 -:redraw! -:let line=ScreenChar(winwidth(0)) -:call DoRecordScreen() -:let g:test =Test 4: set linebreak nolist +:let g:test =Test 3: set linebreak nolist :set nolist linebreak :redraw! :let line=ScreenChar(winwidth(0)) :call DoRecordScreen() -:let g:test =Test 5: set nolinebreak list -:set list nolinebreak -:redraw! -:let line=ScreenChar(winwidth(0)) -:call DoRecordScreen() -:let g:test =Test 6: set linebreak with tab and 1 line as long as screen: should break! +:let g:test =Test 4: set linebreak with tab and 1 line as long as screen: should break! :set nolist linebreak ts=8 :let line=1\t.repeat('a',
Re: Patch 7.4.353
Hi Bram! On Do, 10 Jul 2014, Bram Moolenaar wrote: I do not really like the idea of two versions of the .ok file. It's a new mechanism and will easily confuse me. Does testing without utf-8 have a good purpose? Then I would prefer to split this up in two tests, so that when utf-8 is supported the test is also run without utf-8. If testing without utf-8 isn't really useful I would prefer to just skip it. Okay, here we go, test splitted up into two versions. Best, Christian -- Meine Made ist so etwas wie ein Wurm, nur etwas kürzer. -- Heinz Erhard -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout. diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -39,6 +39,7 @@ SCRIPTS = test1.out test3.out test4.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out @@ -167,5 +168,6 @@ test107.out: test107.in test_autoformat_join.out: test_autoformat_join.in test_breakindent.out: test_breakindent.in test_listlbr.out: test_listlbr.in +test_listlbr_utf8.out: test_listlbr_utf8.in test_eval.out: test_eval.in test_options.out: test_options.in diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -38,6 +38,7 @@ SCRIPTS = test3.out test4.out test5.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -58,6 +58,7 @@ SCRIPTS = test3.out test4.out test5.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -40,6 +40,7 @@ SCRIPTS = test1.out test3.out test4.out test_autoformat_join.out \ test_eval.out \ test_breakindent.out \ + test_listlbr_utf8.out \ test_listlbr.out \ test_options.out diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -99,6 +99,7 @@ SCRIPT = test1.out test2.out test3.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/Makefile b/src/testdir/Makefile --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -36,6 +36,7 @@ SCRIPTS = test1.out test2.out test3.out test_autoformat_join.out \ test_breakindent.out \ test_listlbr.out \ + test_listlbr_utf8.out \ test_eval.out \ test_options.out diff --git a/src/testdir/test_listlbr.in b/src/testdir/test_listlbr.in --- a/src/testdir/test_listlbr.in +++ b/src/testdir/test_listlbr.in @@ -1,10 +1,10 @@ -Test for linebreak and list option +Test for linebreak and list option (non-utf8) STARTTEST :so small.vim :if !exists(+linebreak) | e! test.ok | w! test.out | qa! | endif :10new|:vsp|:vert resize 20 -:put =\\tabcdef hijklmn\tpqrstuvwxyz\u00a01060ABCDEFGHIJKLMNOP \ +:put =\\tabcdef hijklmn\tpqrstuvwxyz_1060ABCDEFGHIJKLMNOP \ :norm! zt :set ts=4 sw=4 sts=4 linebreak sbr=+ wrap :fu! ScreenChar(width) @@ -32,22 +32,12 @@ STARTTEST :redraw! :let line=ScreenChar(winwidth(0)) :call DoRecordScreen() -:let g:test =Test 3: set linebreak + set list + fancy listchars -:exe set linebreak list listchars=nbsp:\u2423,tab:\u2595\u2014,trail:\u02d1,eol:\ub6 -:redraw! -:let line=ScreenChar(winwidth(0)) -:call DoRecordScreen() -:let g:test =Test 4: set linebreak nolist +:let g:test =Test 3: set linebreak nolist :set nolist linebreak :redraw! :let line=ScreenChar(winwidth(0)) :call DoRecordScreen() -:let g:test =Test 5: set nolinebreak list -:set list nolinebreak -:redraw! -:let line=ScreenChar(winwidth(0)) -:call DoRecordScreen() -:let g:test =Test 6: set linebreak with tab and 1 line as long as screen: should break! +:let g:test =Test 4: set linebreak with tab and 1 line as long as screen: should break! :set nolist linebreak ts=8 :let line=1\t.repeat('a', winwidth(0)-2) :$put =line diff --git a/src/testdir/test_listlbr.ok b/src/testdir/test_listlbr.ok --- a/src/testdir/test_listlbr.ok +++ b/src/testdir/test_listlbr.ok @@ -1,38 +1,26 @@ - abcdef hijklmn pqrstuvwxyz 1060ABCDEFGHIJKLMNOP + abcdef
Re: Patch 7.4.353
Danek Duvall wrote: On Wed, Jul 02, 2014 at 08:01:04PM +0200, Bram Moolenaar wrote: Patch 7.4.353 Problem:'breakindent' doesn't work with the 'list' option. Solution: Make it work. (Christian Brabandt) Files: runtime/doc/options.txt, src/charset.c, src/screen.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/testdir/Makefile, src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok When the tests are run with LC_ALL=C, this test fails, apparently because test_listlbr.out ends up having converted the various unicode characters to something other than utf-8, and so it doesn't match the .ok file. AFAICT, this is the only test with that problem (at least, it's the only test that fails for me). Running the tests in a utf-8 locale isn't really an option for me, but I'm not sure what the right answer actually is. Should the test be modified to not require fancy unicode characters, or should the test suite be sure to run this particular test to force utf-8 encoding (assuming the system is even configured with it)? Or is there some other option? Well, I suppose we do want to test if the feature works with those characters. So perhaps just forfeit the test on systems without utf-8? -- Arthur pulls Pin out. The MONK blesses the grenade as ... ARTHUR: (quietly) One, two, five ... GALAHAD: Three, sir! ARTHUR: Three. Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Patch 7.4.353
Christian Brabandt wrote: On Do, 10 Jul 2014, Bram Moolenaar wrote: Danek Duvall wrote: On Wed, Jul 02, 2014 at 08:01:04PM +0200, Bram Moolenaar wrote: Patch 7.4.353 Problem:'breakindent' doesn't work with the 'list' option. Solution: Make it work. (Christian Brabandt) Files: runtime/doc/options.txt, src/charset.c, src/screen.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/testdir/Makefile, src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok When the tests are run with LC_ALL=C, this test fails, apparently because test_listlbr.out ends up having converted the various unicode characters to something other than utf-8, and so it doesn't match the .ok file. AFAICT, this is the only test with that problem (at least, it's the only test that fails for me). Running the tests in a utf-8 locale isn't really an option for me, but I'm not sure what the right answer actually is. Should the test be modified to not require fancy unicode characters, or should the test suite be sure to run this particular test to force utf-8 encoding (assuming the system is even configured with it)? Or is there some other option? Well, I suppose we do want to test if the feature works with those characters. So perhaps just forfeit the test on systems without utf-8? How about the attached patch? It checks, if Vim is running in utf-8 mode and if not skips 2 checks. I do not really like the idea of two versions of the .ok file. It's a new mechanism and will easily confuse me. Does testing without utf-8 have a good purpose? Then I would prefer to split this up in two tests, so that when utf-8 is supported the test is also run without utf-8. If testing without utf-8 isn't really useful I would prefer to just skip it. -- LAUNCELOT: Isn't there a St. Arrggghhh's in Cornwall? ARTHUR:No, that's Saint Ives. Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Patch 7.4.353
On Wed, Jul 02, 2014 at 08:01:04PM +0200, Bram Moolenaar wrote: Patch 7.4.353 Problem:'breakindent' doesn't work with the 'list' option. Solution: Make it work. (Christian Brabandt) Files:runtime/doc/options.txt, src/charset.c, src/screen.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/testdir/Makefile, src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok When the tests are run with LC_ALL=C, this test fails, apparently because test_listlbr.out ends up having converted the various unicode characters to something other than utf-8, and so it doesn't match the .ok file. AFAICT, this is the only test with that problem (at least, it's the only test that fails for me). Running the tests in a utf-8 locale isn't really an option for me, but I'm not sure what the right answer actually is. Should the test be modified to not require fancy unicode characters, or should the test suite be sure to run this particular test to force utf-8 encoding (assuming the system is even configured with it)? Or is there some other option? Thanks, Danek -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Patch 7.4.353
Am 2014-07-02 20:01, schrieb Bram Moolenaar: Problem:'breakindent' doesn't work with the 'list' option. It's not breakindent but linebreak ;) Best, Christian -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Patch 7.4.353
Christian wrote: Am 2014-07-02 20:01, schrieb Bram Moolenaar: Problem:'breakindent' doesn't work with the 'list' option. It's not breakindent but linebreak ;) Well, breaking something :-). -- CONCORDE: Quickly, sir, come this way! LAUNCELOT: No! It's not right for my idiom. I must escape more ... more ... CONCORDE: Dramatically, sir? LAUNCELOT: Dramatically. Monty Python and the Holy Grail PYTHON (MONTY) PICTURES LTD /// Bram Moolenaar -- b...@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/// -- -- 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 --- You received this message because you are subscribed to the Google Groups vim_dev group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Patch 7.4.353
Patch 7.4.353 Problem:'breakindent' doesn't work with the 'list' option. Solution: Make it work. (Christian Brabandt) Files: runtime/doc/options.txt, src/charset.c, src/screen.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/testdir/Makefile, src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok *** ../vim-7.4.352/runtime/doc/options.txt 2014-06-25 11:48:40.729960646 +0200 --- runtime/doc/options.txt 2014-07-02 19:47:21.602363892 +0200 *** *** 1200,1205 --- 1200,1237 break if 'linebreak' is on. Only works for ASCII and also for 8-bit characters when 'encoding' is an 8-bit encoding. + *'breakindent'* *'bri'* + 'breakindent' 'bri' boolean (default off) + local to window + {not in Vi} + {not available when compiled without the |+linebreak| + feature} + Every wrapped line will continue visually indented (same amount of + space as the beginning of that line), thus preserving horizontal blocks + of text. + + *'breakindentopt'* *'briopt'* + 'breakindentopt' 'briopt' string (default empty) + local to window + {not in Vi} + {not available when compiled without the |+linebreak| + feature} + Settings for 'breakindent'. It can consist of the following optional + items and must be separated by a comma: + min:{n} Minimum text width that will be kept after + applying 'breakindent', even if the resulting + text should normally be narrower. This prevents + text indented almost to the right window border + occupying lot of vertical space when broken. + shift:{n} After applying 'breakindent', the wrapped line's + beginning will be shifted by the given number of + characters. It permits dynamic French paragraph + indentation (negative) or emphasizing the line + continuation (positive). + sbr Display the 'showbreak' value before applying the + additional indent. + The default value for min is 20 and shift is 0. + *'browsedir'* *'bsdir'* 'browsedir' 'bsdir' string (default: last) global *** ../vim-7.4.352/src/charset.c2014-07-02 19:37:38.462354956 +0200 --- src/charset.c 2014-07-02 19:47:21.602363892 +0200 *** *** 1120,1126 if (wp-w_p_lbr vim_isbreak(c) !vim_isbreak(s[1]) -!wp-w_p_list wp-w_p_wrap # ifdef FEAT_VERTSPLIT wp-w_width != 0 --- 1120,1125 *** ../vim-7.4.352/src/screen.c 2014-07-02 17:16:51.330225522 +0200 --- src/screen.c2014-07-02 19:51:42.082367883 +0200 *** *** 2843,2848 --- 2843,2849 char_uextra[18]; /* %ld and 'fdc' must fit in here */ int n_extra = 0;/* number of extra chars */ char_u*p_extra = NULL;/* string of extra chars, plus NUL */ + char_u*p_extra_free = NULL; /* p_extra needs to be freed */ int c_extra = NUL; /* extra chars, all the same */ int extra_attr = 0; /* attributes when n_extra != 0 */ static char_u *at_end_str = (char_u *); /* used for p_extra when *** *** 4053,4058 --- 4054,4064 } else { + if (p_extra_free != NULL) + { + vim_free(p_extra_free); + p_extra_free = NULL; + } /* * Get a character from the line itself. */ *** *** 4424,4431 /* * Found last space before word: check for line break. */ ! if (wp-w_p_lbr vim_isbreak(c) !vim_isbreak(*ptr) ! !wp-w_p_list) { char_u *p = ptr - ( # ifdef FEAT_MBYTE --- 4430,4436 /* * Found last space before word: check for line break. */ ! if (wp-w_p_lbr vim_isbreak(c) !vim_isbreak(*ptr)) { char_u *p = ptr - ( # ifdef FEAT_MBYTE *** *** 4433,4439 # endif 1); /* TODO: is passing p for start of the line OK