예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
void EmacsBuffer::setPointToMarks(const MintString& marks) {
    std::for_each(marks.begin(), marks.end(),
                  std::bind1st(std::mem_fun(&EmacsBuffer::setPointToMark), this));
} // setPointToMarks