#ifndef selectors_hh_INCLUDED #define selectors_hh_INCLUDED #include "selection.hh" #include "unicode.hh" namespace Kakoune { template Selection select_to_next_word(const Selection& selection); template Selection select_to_next_word_end(const Selection& selection); template Selection select_to_previous_word(const Selection& selection); Selection select_line(const Selection& selection); Selection select_matching(const Selection& selection); Selection select_to(const Selection& selection, Codepoint c, int count, bool inclusive); Selection select_to_reverse(const Selection& selection, Codepoint c, int count, bool inclusive); Selection select_to_eol(const Selection& selection); Selection select_to_eol_reverse(const Selection& selection); enum class ObjectFlags { ToBegin = 1, ToEnd = 2, Inner = 4 }; constexpr bool operator&(ObjectFlags lhs, ObjectFlags rhs) { return (bool)((int)lhs & (int) rhs); } constexpr ObjectFlags operator|(ObjectFlags lhs, ObjectFlags rhs) { return (ObjectFlags)((int)lhs | (int) rhs); } template Selection select_whole_word(const Selection& selection, ObjectFlags flags); Selection select_whole_sentence(const Selection& selection, ObjectFlags flags); Selection select_whole_paragraph(const Selection& selection, ObjectFlags flags); Selection select_whole_lines(const Selection& selection); Selection select_whole_buffer(const Selection& selection); Selection trim_partial_lines(const Selection& selection); template Selection select_next_match(const Selection& selection, const Regex& regex); SelectionList select_all_matches(const Selection& selection, const Regex& regex); SelectionList split_selection(const Selection& selection, const Regex& separator_regex); using CodepointPair = std::pair; Selection select_surrounding(const Selection& selection, const CodepointPair& matching, ObjectFlags flags); } #endif // selectors_hh_INCLUDED