Change gl/gh to only move cursor, not selecting (<a-h>/<a-l>) are unchanged
That is more consistant with other goto commands (that just move the cursor)
This commit is contained in:
parent
942fc224af
commit
66866aafd3
|
@ -144,10 +144,10 @@ void goto_commands(Context& context, NormalParams params)
|
||||||
select_coord<mode>(buffer, ByteCoord{0,0}, context.selections());
|
select_coord<mode>(buffer, ByteCoord{0,0}, context.selections());
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
select<mode, select_to_eol>(context, {});
|
select<mode, select_to_line_end<true>>(context, {});
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
select<mode, select_to_eol_reverse>(context, {});
|
select<mode, select_to_line_begin<true>>(context, {});
|
||||||
break;
|
break;
|
||||||
case 'j':
|
case 'j':
|
||||||
{
|
{
|
||||||
|
@ -1492,12 +1492,12 @@ static NormalCmdDesc cmds[] =
|
||||||
{ alt('E'), "extend to next WORD end", repeated<select<SelectMode::Extend, select_to_next_word_end<WORD>>> },
|
{ alt('E'), "extend to next WORD end", repeated<select<SelectMode::Extend, select_to_next_word_end<WORD>>> },
|
||||||
{ alt('B'), "extend to prevous WORD start", repeated<select<SelectMode::Extend, select_to_previous_word<WORD>>> },
|
{ alt('B'), "extend to prevous WORD start", repeated<select<SelectMode::Extend, select_to_previous_word<WORD>>> },
|
||||||
|
|
||||||
{ alt('l'), "select to line end", repeated<select<SelectMode::Replace, select_to_eol>> },
|
{ alt('l'), "select to line end", repeated<select<SelectMode::Replace, select_to_line_end<false>>> },
|
||||||
{ Key::End, "select to line end", repeated<select<SelectMode::Replace, select_to_eol>> },
|
{ Key::End, "select to line end", repeated<select<SelectMode::Replace, select_to_line_end<false>>> },
|
||||||
{ alt('L'), "extend to line end", repeated<select<SelectMode::Extend, select_to_eol>> },
|
{ alt('L'), "extend to line end", repeated<select<SelectMode::Extend, select_to_line_end<false>>> },
|
||||||
{ alt('h'), "select to line begin", repeated<select<SelectMode::Replace, select_to_eol_reverse>> },
|
{ alt('h'), "select to line begin", repeated<select<SelectMode::Replace, select_to_line_begin<false>>> },
|
||||||
{ Key::Home, "select to line begin", repeated<select<SelectMode::Replace, select_to_eol_reverse>> },
|
{ Key::Home, "select to line begin", repeated<select<SelectMode::Replace, select_to_line_begin<false>>> },
|
||||||
{ alt('H'), "extend to line begin", repeated<select<SelectMode::Extend, select_to_eol_reverse>> },
|
{ alt('H'), "extend to line begin", repeated<select<SelectMode::Extend, select_to_line_begin<false>>> },
|
||||||
|
|
||||||
{ 'x', "select line", repeated<select<SelectMode::Replace, select_line>> },
|
{ 'x', "select line", repeated<select<SelectMode::Replace, select_line>> },
|
||||||
{ 'X', "extend line", repeated<select<SelectMode::Extend, select_line>> },
|
{ 'X', "extend line", repeated<select<SelectMode::Extend, select_line>> },
|
||||||
|
|
|
@ -8,12 +8,6 @@
|
||||||
namespace Kakoune
|
namespace Kakoune
|
||||||
{
|
{
|
||||||
|
|
||||||
static Selection target_eol(Selection sel)
|
|
||||||
{
|
|
||||||
sel.cursor().target = INT_MAX;
|
|
||||||
return sel;
|
|
||||||
}
|
|
||||||
|
|
||||||
Selection select_line(const Buffer& buffer, const Selection& selection)
|
Selection select_line(const Buffer& buffer, const Selection& selection)
|
||||||
{
|
{
|
||||||
Utf8Iterator first = buffer.iterator_at(selection.cursor());
|
Utf8Iterator first = buffer.iterator_at(selection.cursor());
|
||||||
|
@ -205,22 +199,6 @@ Selection select_to_reverse(const Buffer& buffer, const Selection& selection,
|
||||||
return utf8_range(begin, inclusive ? end : end+1);
|
return utf8_range(begin, inclusive ? end : end+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Selection select_to_eol(const Buffer& buffer, const Selection& selection)
|
|
||||||
{
|
|
||||||
ByteCoord begin = selection.cursor();
|
|
||||||
LineCount line = begin.line;
|
|
||||||
ByteCoord end = utf8::previous(buffer.iterator_at({line, buffer[line].length() - 1}),
|
|
||||||
buffer.iterator_at(line)).coord();
|
|
||||||
return target_eol({begin, end});
|
|
||||||
}
|
|
||||||
|
|
||||||
Selection select_to_eol_reverse(const Buffer& buffer, const Selection& selection)
|
|
||||||
{
|
|
||||||
ByteCoord begin = selection.cursor();
|
|
||||||
ByteCoord end = begin.line;
|
|
||||||
return {begin, end};
|
|
||||||
}
|
|
||||||
|
|
||||||
Selection select_number(const Buffer& buffer, const Selection& selection, ObjectFlags flags)
|
Selection select_number(const Buffer& buffer, const Selection& selection, ObjectFlags flags)
|
||||||
{
|
{
|
||||||
auto is_number = [&](char c) {
|
auto is_number = [&](char c) {
|
||||||
|
|
|
@ -18,6 +18,12 @@ inline Selection keep_direction(Selection res, const Selection& ref)
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline Selection target_eol(Selection sel)
|
||||||
|
{
|
||||||
|
sel.cursor().target = INT_MAX;
|
||||||
|
return sel;
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Iterator, typename EndIterator, typename T>
|
template<typename Iterator, typename EndIterator, typename T>
|
||||||
void skip_while(Iterator& it, const EndIterator& end, T condition)
|
void skip_while(Iterator& it, const EndIterator& end, T condition)
|
||||||
{
|
{
|
||||||
|
@ -122,8 +128,23 @@ Selection select_to(const Buffer& buffer, const Selection& selection,
|
||||||
Selection select_to_reverse(const Buffer& buffer, const Selection& selection,
|
Selection select_to_reverse(const Buffer& buffer, const Selection& selection,
|
||||||
Codepoint c, int count, bool inclusive);
|
Codepoint c, int count, bool inclusive);
|
||||||
|
|
||||||
Selection select_to_eol(const Buffer& buffer, const Selection& selection);
|
template<bool only_move>
|
||||||
Selection select_to_eol_reverse(const Buffer& buffer, const Selection& selection);
|
Selection select_to_line_end(const Buffer& buffer, const Selection& selection)
|
||||||
|
{
|
||||||
|
ByteCoord begin = selection.cursor();
|
||||||
|
LineCount line = begin.line;
|
||||||
|
ByteCoord end = utf8::previous(buffer.iterator_at({line, buffer[line].length() - 1}),
|
||||||
|
buffer.iterator_at(line)).coord();
|
||||||
|
return target_eol({only_move ? end : begin, end});
|
||||||
|
}
|
||||||
|
|
||||||
|
template<bool only_move>
|
||||||
|
Selection select_to_line_begin(const Buffer& buffer, const Selection& selection)
|
||||||
|
{
|
||||||
|
ByteCoord begin = selection.cursor();
|
||||||
|
ByteCoord end = begin.line;
|
||||||
|
return {only_move ? end : begin, end};
|
||||||
|
}
|
||||||
|
|
||||||
enum class ObjectFlags
|
enum class ObjectFlags
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user