bool EmacsBuffers::setSearchString(const MintString& str, bool fold_case) { regbase::flag_type flags = regbase::literal | (fold_case ? regbase::icase : 0); _regex_empty = str.empty(); if (!_regex_empty) { std::string s; std::copy(str.begin(), str.end(), std::back_inserter(s)); _regex.assign(s.c_str(), flags); } // if return true; } // setSearchString
bool EmacsBuffers::setSearchRegex(const MintString& exp, bool fold_case) { #if 1 regbase::flag_type flags = boost::regex::basic | boost::regex::bk_vbar; #else regbase::flag_type flags = boost::regex::normal | boost::regex::bk_braces | boost::regex::bk_parens | boost::regex::bk_vbar; #endif if (fold_case) flags |= regbase::icase; _regex_empty = exp.empty(); if (!_regex_empty) { std::string s; std::copy(exp.begin(), exp.end(), std::back_inserter(s)); _regex.assign(s.c_str(), flags); } // if return true; } // setSearchRegex
MintString getStringIntPrefix(const MintString& s, int base) { // Max base uses all digits + letters base = std::max(2, std::min(base, 36)); mintchar_t end_number = '0' + std::min(10, base); mintchar_t end_letter = 'A' + std::max(0, base - 10); MintString::const_iterator plast = s.end(); while (plast != s.begin()) { --plast; mintchar_t ch = std::toupper(*plast); if ((ch >= '0' && ch < end_number) || (ch >= 'A' && ch < end_letter)) { // This digit is OK, get another one } else { // Skip the minus sign if we have one if (ch != '-') { ++plast; } // if break; } // else } // for return MintString(s.begin(), plast); } // getStringIntPrefix
bool EmacsBuffer::deleteToMarks(const MintString& marks) { // Stops on first delete that fails std::find_if(marks.begin(), marks.end(), std::not1(std::bind1st(std::mem_fun(&EmacsBuffer::deleteToMark), this))); return true; } // EmacsBuffer::DeleteToMarks
void EmacsBuffer::setPointToMarks(const MintString& marks) { std::for_each(marks.begin(), marks.end(), std::bind1st(std::mem_fun(&EmacsBuffer::setPointToMark), this)); } // setPointToMarks