Selectors: support inclusive mode in select_to (bound to f key)

This commit is contained in:
Maxime Coste 2011-09-23 14:06:10 +00:00
parent 662ba0c904
commit 52ad372adb
3 changed files with 5 additions and 4 deletions

View File

@ -368,7 +368,8 @@ std::unordered_map<char, std::function<void (Window& window, int count)>> keymap
{ 'L', [](Window& window, int count) { window.select(true, std::bind(move_select, std::ref(window), std::placeholders::_1, { 'L', [](Window& window, int count) { window.select(true, std::bind(move_select, std::ref(window), std::placeholders::_1,
WindowCoord(0, std::max(count,1)))); } }, WindowCoord(0, std::max(count,1)))); } },
{ 't', [](Window& window, int count) { window.select(false, std::bind(select_to, std::placeholders::_1, getch())); } }, { 't', [](Window& window, int count) { window.select(false, std::bind(select_to, std::placeholders::_1, getch(), false)); } },
{ 'f', [](Window& window, int count) { window.select(false, std::bind(select_to, std::placeholders::_1, getch(), true)); } },
{ 'd', [](Window& window, int count) { window.erase(); window.empty_selections(); } }, { 'd', [](Window& window, int count) { window.erase(); window.empty_selections(); } },
{ 'c', [](Window& window, int count) { window.erase(); do_insert(window); } }, { 'c', [](Window& window, int count) { window.erase(); do_insert(window); } },

View File

@ -191,12 +191,12 @@ Selection select_matching(const BufferIterator& cursor)
return Selection(cursor, cursor); return Selection(cursor, cursor);
} }
Selection select_to(const BufferIterator& cursor, char c) Selection select_to(const BufferIterator& cursor, char c, bool inclusive)
{ {
BufferIterator end = cursor + 1; BufferIterator end = cursor + 1;
skip_while(end, [c](char cur) { return not is_eol(cur) and cur != c; }); skip_while(end, [c](char cur) { return not is_eol(cur) and cur != c; });
if (not is_eol(*end)) if (not is_eol(*end))
return Selection(cursor, end-1); return Selection(cursor, inclusive ? end : end-1);
return Selection(cursor, cursor); return Selection(cursor, cursor);
} }

View File

@ -12,7 +12,7 @@ Selection select_to_previous_word(const BufferIterator& cursor);
Selection select_line(const BufferIterator& cursor); Selection select_line(const BufferIterator& cursor);
Selection move_select(Window& window, const BufferIterator& cursor, const WindowCoord& offset); Selection move_select(Window& window, const BufferIterator& cursor, const WindowCoord& offset);
Selection select_matching(const BufferIterator& cursor); Selection select_matching(const BufferIterator& cursor);
Selection select_to(const BufferIterator& cursor, char c); Selection select_to(const BufferIterator& cursor, char c, bool inclusive);
} }