Wednesday, April 24, 2013

Re: Consider lines containing a tab a paragraph boundary

Christian Brabandt wrote:

> On Wed, April 24, 2013 11:38, Bram Moolenaar wrote:
> > Christian Brabandt wrote:
> >> On Sa, 20 Apr 2013, Bram Moolenaar wrote:
> >> > I wonder if changing 'paragraphs' and 'sections' into a regexp
> >> > that matches at what's between paragraphs is sufficient. How
> >> > about this style with two paragraphs:
> >> Did this and updated the example. Would this be acceptable?
> > Hmm, I think what we really want is to match the text from the end
> > of one paragraph until the start of the next one. The example with
> > "/^$" would still work to have empty-line separated paragraphs.
> > Paragraphs that start with an indent would be found with "/^\s\+".
>
> correct.
>
> > You could then also allow more than one empty line between paragraphs
> with "/^\n*$".
>
> That would be possible, but doesn't really change the cursor motion. Take
> the example from the patch:
> ----------------------------
> 1 Lorem ipsum dolor sit amet,
> 2 consetetur sadipscing elitr,
> 3 sed diam
> 4
> 5
> 6 Lorem ipsum dolor sit amet,
> 7 consetetur sadipscing elitr,
> 8 sed diam
>
> If the 'para' option is set to '/^$' moving using '}' will first move to
> line 4, the next paragraph motion will move to line 5. Typing '}' again
> will then move the cursor at the end of the last line.

The } motion is a bit strange in that it stops before a paragraph. I
never understood why it's like that and not jumping to the first line of
the paragraph.

Anyway, using ]] and [[ you do jump to the start or end of a section, so
there it's easier to see what the pattern does.

> Even is you use the /^\n\+$ as regular expression, the cursor will still
> jump to the exact same positions, as line 4 and line 5 match
> that regular expression. We could make it jump to the end of the match
> using the SEARCH_END flag and then advance the cursor one more position,
> but this would only work on forward searches, this doesn't seem to work
> for backward searches:
> https://groups.google.com/group/vim_use/msg/d82897dd34010e93?hl=de

How about using the pattern /^\n\+\zs ? The \zs marks where the cursor
ends up. This also allows moving to the first line of the paragraph.

Question remains how to handle {, where the cursor ends up then.
An alternative is to use flags after // to specify where the cursor is
positioned for { and }, e.g. /^\n\+/{s}e would mean { moves to the
start of the match and } to the end of the match.


--
hundred-and-one symptoms of being an internet addict:
217. Your sex life has drastically improved...so what if it's only cyber-sex!

/// 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 ///

--
--
You received this message from the "vim_use" 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_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments: