mirror of
https://github.com/mawww/kakoune.git
synced 2024-11-24 07:53:41 +03:00
revive str_to_int so that the good exception type is thrown on error
This commit is contained in:
parent
37a2363301
commit
c3d53d588d
@ -125,9 +125,9 @@ void edit(const CommandParameters& params, Context& context)
|
||||
|
||||
if (param_count > 1)
|
||||
{
|
||||
int line = std::max(0, stoi(parser[1]) - 1);
|
||||
int line = std::max(0, str_to_int(parser[1]) - 1);
|
||||
int column = param_count > 2 ?
|
||||
std::max(0, stoi(parser[2]) - 1) : 0;
|
||||
std::max(0, str_to_int(parser[2]) - 1) : 0;
|
||||
|
||||
context.editor().select(context.buffer().iterator_at({ line, column }));
|
||||
if (context.has_window())
|
||||
|
@ -134,7 +134,7 @@ HighlighterAndId colorize_regex_factory(const HighlighterParameters params, cons
|
||||
throw runtime_error("wrong colorspec: '" + *it +
|
||||
"' expected <capture>:<fgcolor>[,<bgcolor>]");
|
||||
|
||||
int capture = stoi(res[1].str());
|
||||
int capture = str_to_int(res[1].str());
|
||||
const ColorPair*& color = colors[capture];
|
||||
color = &get_color(res[2].str());
|
||||
}
|
||||
|
@ -536,17 +536,17 @@ static BufferCompletion complete_opt(const BufferIterator& pos, OptionManager& o
|
||||
boost::smatch match;
|
||||
if (boost::regex_match(desc.begin(), desc.end(), match, re))
|
||||
{
|
||||
BufferCoord coord{ stoi(match[1].str()) - 1, stoi(match[2].str()) - 1 };
|
||||
BufferCoord coord{ str_to_int(match[1].str()) - 1, str_to_int(match[2].str()) - 1 };
|
||||
if (not pos.buffer().is_valid(coord))
|
||||
return {};
|
||||
BufferIterator beg{pos.buffer(), coord};
|
||||
BufferIterator end = beg;
|
||||
if (match[3].matched)
|
||||
{
|
||||
ByteCount len = stoi(match[3].str());
|
||||
ByteCount len = str_to_int(match[3].str());
|
||||
end = beg + len;
|
||||
}
|
||||
size_t timestamp = (size_t)stoi(match[4].str());
|
||||
size_t timestamp = (size_t)str_to_int(match[4].str());
|
||||
|
||||
size_t longest_completion = 0;
|
||||
for (auto it = opt.begin() + 1; it != opt.end(); ++it)
|
||||
|
@ -16,7 +16,7 @@ inline String option_to_string(const String& opt) { return opt; }
|
||||
inline void option_from_string(const String& str, String& opt) { opt = str; }
|
||||
|
||||
inline String option_to_string(int opt) { return to_string(opt); }
|
||||
inline void option_from_string(const String& str, int& opt) { opt = stoi(str); }
|
||||
inline void option_from_string(const String& str, int& opt) { opt = str_to_int(str); }
|
||||
inline bool option_add(int& opt, int val) { opt += val; return val != 0; }
|
||||
|
||||
inline String option_to_string(bool opt) { return opt ? "true" : "false"; }
|
||||
@ -154,7 +154,7 @@ inline String option_to_string(const StronglyTypedNumber<RealType, ValueType>& o
|
||||
template<typename RealType, typename ValueType>
|
||||
inline void option_from_string(const String& str, StronglyTypedNumber<RealType, ValueType>& opt)
|
||||
{
|
||||
opt = StronglyTypedNumber<RealType, ValueType>{stoi(str)};
|
||||
opt = StronglyTypedNumber<RealType, ValueType>{str_to_int(str)};
|
||||
}
|
||||
|
||||
template<typename RealType, typename ValueType>
|
||||
|
@ -23,6 +23,18 @@ std::vector<String> split(const String& str, char separator)
|
||||
return res;
|
||||
}
|
||||
|
||||
int str_to_int(const String& str)
|
||||
{
|
||||
try
|
||||
{
|
||||
return stoi(str);
|
||||
}
|
||||
catch (std::logic_error&)
|
||||
{
|
||||
throw runtime_error(str + "is not a number");
|
||||
}
|
||||
}
|
||||
|
||||
String option_to_string(const Regex& re)
|
||||
{
|
||||
return String{re.str()};
|
||||
|
@ -101,6 +101,7 @@ inline String codepoint_to_str(Codepoint cp)
|
||||
String option_to_string(const Regex& re);
|
||||
void option_from_string(const String& str, Regex& re);
|
||||
|
||||
int str_to_int(const String& str);
|
||||
|
||||
using std::to_string;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user