Support count argument for [p and ]p

Part of #795
This commit is contained in:
Johannes Altmanninger 2020-07-19 15:34:59 +02:00
parent 581f17970d
commit 98a1afcab0
16 changed files with 109 additions and 38 deletions

View File

@ -558,7 +558,10 @@ select_paragraph(const Context& context, const Selection& selection,
{ {
auto& buffer = context.buffer(); auto& buffer = context.buffer();
BufferIterator first = buffer.iterator_at(selection.cursor()); BufferIterator first = buffer.iterator_at(selection.cursor());
BufferIterator last;
for (++count; count > 0; --count)
{
if (not (flags & ObjectFlags::ToEnd) and first.coord() > BufferCoord{0,1} and if (not (flags & ObjectFlags::ToEnd) and first.coord() > BufferCoord{0,1} and
is_eol(*(first-1)) and first-1 != buffer.begin() and is_eol(*(first-2))) is_eol(*(first-1)) and first-1 != buffer.begin() and is_eol(*(first-2)))
--first; --first;
@ -566,8 +569,8 @@ select_paragraph(const Context& context, const Selection& selection,
first != buffer.begin() and (first+1) != buffer.end() and first != buffer.begin() and (first+1) != buffer.end() and
is_eol(*(first-1)) and is_eol(*first)) is_eol(*(first-1)) and is_eol(*first))
++first; ++first;
if (last == BufferIterator{})
BufferIterator last = first; last = first;
if ((flags & ObjectFlags::ToBegin) and first != buffer.begin()) if ((flags & ObjectFlags::ToBegin) and first != buffer.begin())
{ {
@ -604,6 +607,7 @@ select_paragraph(const Context& context, const Selection& selection,
} }
--last; --last;
} }
}
return (flags & ObjectFlags::ToEnd) ? Selection{first.coord(), last.coord()} return (flags & ObjectFlags::ToEnd) ? Selection{first.coord(), last.coord()}
: Selection{last.coord(), first.coord()}; : Selection{last.coord(), first.coord()};
} }

View File

@ -0,0 +1 @@
2}p

View File

@ -0,0 +1,7 @@
%(a
b)
c
d
e

View File

@ -0,0 +1,7 @@
'a
b
c
d
'

View File

@ -0,0 +1 @@
2]p

View File

@ -0,0 +1,7 @@
%(a)
b
c
d
e

View File

@ -0,0 +1,7 @@
'a
b
c
d
'

View File

@ -0,0 +1 @@
9]p

View File

@ -0,0 +1,4 @@
%(a)
b
c

View File

@ -0,0 +1,5 @@
'a
b
c
'

View File

@ -0,0 +1 @@
<a-;>2{p

View File

@ -0,0 +1,7 @@
a
b
c
%(d
e)

View File

@ -0,0 +1,5 @@
'b
c
d
e'

View File

@ -0,0 +1 @@
2[p

View File

@ -0,0 +1,8 @@
a
b
c
d
%(e)
f

View File

@ -0,0 +1,5 @@
'b
c
d
e'