Port even more code to use format function
This commit is contained in:
parent
f19bb4fe6d
commit
8f6fc6a0f3
|
@ -38,7 +38,7 @@ bool notify_fatal_error(const String& msg)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
auto cmd = "xmessage -buttons 'quit:0,ignore:1' '" + msg + "'";
|
auto cmd = format("xmessage -buttons 'quit:0,ignore:1' '{}'", msg);
|
||||||
if (system(cmd.c_str()) == 1)
|
if (system(cmd.c_str()) == 1)
|
||||||
return true;
|
return true;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -175,7 +175,7 @@ void Client::reload_buffer()
|
||||||
kak_assert(buffer.flags() & Buffer::Flags::File);
|
kak_assert(buffer.flags() & Buffer::Flags::File);
|
||||||
Buffer* buf = create_buffer_from_file(buffer.name());
|
Buffer* buf = create_buffer_from_file(buffer.name());
|
||||||
kak_assert(buf == &buffer);
|
kak_assert(buf == &buffer);
|
||||||
context().print_status({ "'" + buffer.display_name() + "' reloaded",
|
context().print_status({ format("'{}' reloaded", buffer.display_name()),
|
||||||
get_face("Information") });
|
get_face("Information") });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,12 +189,12 @@ void Client::on_buffer_reload_key(Key key)
|
||||||
{
|
{
|
||||||
// reread timestamp in case the file was modified again
|
// reread timestamp in case the file was modified again
|
||||||
buffer.set_fs_timestamp(get_fs_timestamp(buffer.name()));
|
buffer.set_fs_timestamp(get_fs_timestamp(buffer.name()));
|
||||||
print_status({ "'" + buffer.display_name() + "' kept",
|
print_status({ format("'{}' kept", buffer.display_name()),
|
||||||
get_face("Information") });
|
get_face("Information") });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print_status({ "'" + key_to_str(key) + "' is not a valid choice",
|
print_status({ format("'{}' is not a valid choice", key_to_str(key)),
|
||||||
get_face("Error") });
|
get_face("Error") });
|
||||||
m_input_handler.on_next_key(KeymapMode::None, [this](Key key, Context&){ on_buffer_reload_key(key); });
|
m_input_handler.on_next_key(KeymapMode::None, [this](Key key, Context&){ on_buffer_reload_key(key); });
|
||||||
return;
|
return;
|
||||||
|
@ -233,9 +233,10 @@ void Client::check_if_buffer_needs_reloading()
|
||||||
if (reload == Ask)
|
if (reload == Ask)
|
||||||
{
|
{
|
||||||
m_ui->info_show(
|
m_ui->info_show(
|
||||||
"reload '" + buffer.display_name() + "' ?",
|
format("reload '{}' ?", buffer.display_name()),
|
||||||
"'" + buffer.display_name() + "' was modified externally\n"
|
format("'{}' was modified externally\n"
|
||||||
"press <ret> or y to reload, <esc> or n to keep",
|
"press <ret> or y to reload, <esc> or n to keep",
|
||||||
|
buffer.display_name()),
|
||||||
CharCoord{}, get_face("Information"), InfoStyle::Prompt);
|
CharCoord{}, get_face("Information"), InfoStyle::Prompt);
|
||||||
|
|
||||||
m_buffer_reload_dialog_opened = true;
|
m_buffer_reload_dialog_opened = true;
|
||||||
|
|
|
@ -110,8 +110,9 @@ void ClientManager::ensure_no_client_uses_buffer(Buffer& buffer)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (client->context().is_editing())
|
if (client->context().is_editing())
|
||||||
throw runtime_error("client '" + client->context().name() + "' is inserting in '" +
|
throw runtime_error(format("client '{}' is inserting in buffer '{}'",
|
||||||
buffer.display_name() + "'");
|
client->context().name(),
|
||||||
|
buffer.display_name()));
|
||||||
|
|
||||||
// change client context to edit the first buffer which is not the
|
// change client context to edit the first buffer which is not the
|
||||||
// specified one. As BufferManager stores buffer according to last
|
// specified one. As BufferManager stores buffer according to last
|
||||||
|
@ -150,7 +151,7 @@ Client& ClientManager::get_client(StringView name)
|
||||||
{
|
{
|
||||||
if (Client* client = get_client_ifp(name))
|
if (Client* client = get_client_ifp(name))
|
||||||
return *client;
|
return *client;
|
||||||
throw runtime_error("no client named: " + name);
|
throw runtime_error(format("no client named '{}'", name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientManager::redraw_clients() const
|
void ClientManager::redraw_clients() const
|
||||||
|
|
|
@ -45,7 +45,7 @@ Buffer* open_fifo(StringView name, StringView filename, bool scroll)
|
||||||
int fd = open(parse_filename(filename).c_str(), O_RDONLY | O_NONBLOCK);
|
int fd = open(parse_filename(filename).c_str(), O_RDONLY | O_NONBLOCK);
|
||||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
throw runtime_error("unable to open " + filename);
|
throw runtime_error(format("unable to open '{}'", filename));
|
||||||
|
|
||||||
return create_fifo_buffer(name.str(), fd, scroll);
|
return create_fifo_buffer(name.str(), fd, scroll);
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ Scope& get_scope(StringView scope, const Context& context)
|
||||||
{
|
{
|
||||||
if (auto s = get_scope_ifp(scope, context))
|
if (auto s = get_scope_ifp(scope, context))
|
||||||
return *s;
|
return *s;
|
||||||
throw runtime_error("error: no such scope " + scope);
|
throw runtime_error(format("error: no such scope '{}'", scope));
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CommandDesc
|
struct CommandDesc
|
||||||
|
@ -158,9 +158,10 @@ void edit(const ParametersParser& parser, Context& context)
|
||||||
if (not buffer)
|
if (not buffer)
|
||||||
{
|
{
|
||||||
if (parser.get_switch("existing"))
|
if (parser.get_switch("existing"))
|
||||||
throw runtime_error("unable to open " + name);
|
throw runtime_error(format("unable to open '{}'", name));
|
||||||
|
|
||||||
context.print_status({ "new file " + name, get_face("StatusLine") });
|
context.print_status({ format("new file '{}'", name),
|
||||||
|
get_face("StatusLine") });
|
||||||
buffer = new Buffer(name, Buffer::Flags::File | Buffer::Flags::New);
|
buffer = new Buffer(name, Buffer::Flags::File | Buffer::Flags::New);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -444,10 +445,10 @@ void delete_buffer(const ParametersParser& parser, Context& context)
|
||||||
BufferManager& manager = BufferManager::instance();
|
BufferManager& manager = BufferManager::instance();
|
||||||
Buffer& buffer = parser.positional_count() == 0 ? context.buffer() : manager.get_buffer(parser[0]);
|
Buffer& buffer = parser.positional_count() == 0 ? context.buffer() : manager.get_buffer(parser[0]);
|
||||||
if (not force and (buffer.flags() & Buffer::Flags::File) and buffer.is_modified())
|
if (not force and (buffer.flags() & Buffer::Flags::File) and buffer.is_modified())
|
||||||
throw runtime_error("buffer " + buffer.name() + " is modified");
|
throw runtime_error(format("buffer '{}' is modified", buffer.name()));
|
||||||
|
|
||||||
if (manager.count() == 1)
|
if (manager.count() == 1)
|
||||||
throw runtime_error("buffer " + buffer.name() + " is the last one");
|
throw runtime_error(format("buffer '{}' is the last one", buffer.name()));
|
||||||
|
|
||||||
manager.delete_buffer(buffer);
|
manager.delete_buffer(buffer);
|
||||||
}
|
}
|
||||||
|
@ -486,7 +487,7 @@ const CommandDesc namebuf_cmd = {
|
||||||
[](const ParametersParser& parser, Context& context)
|
[](const ParametersParser& parser, Context& context)
|
||||||
{
|
{
|
||||||
if (not context.buffer().set_name(parser[0]))
|
if (not context.buffer().set_name(parser[0]))
|
||||||
throw runtime_error("unable to change buffer name to " + parser[0]);
|
throw runtime_error(format("unable to change buffer name to '{}'", parser[0]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -573,7 +574,7 @@ const CommandDesc add_highlighter_cmd = {
|
||||||
HighlighterRegistry& registry = HighlighterRegistry::instance();
|
HighlighterRegistry& registry = HighlighterRegistry::instance();
|
||||||
auto it = registry.find(params[0]);
|
auto it = registry.find(params[0]);
|
||||||
if (it != registry.end())
|
if (it != registry.end())
|
||||||
return params[0] + ":\n" + indent(it->second.docstring);
|
return format("{}:\n{}", params[0], indent(it->second.docstring));
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
|
@ -593,7 +594,7 @@ const CommandDesc add_highlighter_cmd = {
|
||||||
: context.window().highlighters();
|
: context.window().highlighters();
|
||||||
auto it = registry.find(name);
|
auto it = registry.find(name);
|
||||||
if (it == registry.end())
|
if (it == registry.end())
|
||||||
throw runtime_error("No such highlighter factory '" + name + "'");
|
throw runtime_error(format("No such highlighter factory '{}'", name));
|
||||||
group.add_child(it->second.factory(highlighter_params));
|
group.add_child(it->second.factory(highlighter_params));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -712,7 +713,7 @@ void define_command(const ParametersParser& parser, Context& context)
|
||||||
auto& cm = CommandManager::instance();
|
auto& cm = CommandManager::instance();
|
||||||
|
|
||||||
if (cm.command_defined(cmd_name) and not parser.get_switch("allow-override"))
|
if (cm.command_defined(cmd_name) and not parser.get_switch("allow-override"))
|
||||||
throw runtime_error("command '" + cmd_name + "' already defined");
|
throw runtime_error(format("command '{}' already defined", cmd_name));
|
||||||
|
|
||||||
CommandFlags flags = CommandFlags::None;
|
CommandFlags flags = CommandFlags::None;
|
||||||
if (parser.get_switch("hidden"))
|
if (parser.get_switch("hidden"))
|
||||||
|
@ -978,7 +979,7 @@ const CommandDesc set_option_cmd = {
|
||||||
OptionManager& options = get_scope(params[0], context).options();
|
OptionManager& options = get_scope(params[0], context).options();
|
||||||
const String& docstring = options[params[1]].docstring();
|
const String& docstring = options[params[1]].docstring();
|
||||||
if (not docstring.empty())
|
if (not docstring.empty())
|
||||||
return params[1] + ": " + docstring;
|
return format("{}: {}", params[1], docstring);
|
||||||
}
|
}
|
||||||
catch (runtime_error&) {}
|
catch (runtime_error&) {}
|
||||||
return "";
|
return "";
|
||||||
|
@ -1063,7 +1064,7 @@ const CommandDesc declare_option_cmd = {
|
||||||
else if (parser[0] == "line-flag-list")
|
else if (parser[0] == "line-flag-list")
|
||||||
opt = ®.declare_option<Vector<LineAndFlag, MemoryDomain::Options>>(parser[1], docstring, {}, flags);
|
opt = ®.declare_option<Vector<LineAndFlag, MemoryDomain::Options>>(parser[1], docstring, {}, flags);
|
||||||
else
|
else
|
||||||
throw runtime_error("unknown type " + parser[0]);
|
throw runtime_error(format("unknown type {}", parser[0]));
|
||||||
|
|
||||||
if (parser.positional_count() == 3)
|
if (parser.positional_count() == 3)
|
||||||
opt->set_from_string(parser[2]);
|
opt->set_from_string(parser[2]);
|
||||||
|
@ -1080,7 +1081,7 @@ KeymapMode parse_keymap_mode(const String& str)
|
||||||
if (prefix_match("view", str)) return KeymapMode::View;
|
if (prefix_match("view", str)) return KeymapMode::View;
|
||||||
if (prefix_match("user", str)) return KeymapMode::User;
|
if (prefix_match("user", str)) return KeymapMode::User;
|
||||||
|
|
||||||
throw runtime_error("unknown keymap mode '" + str + "'");
|
throw runtime_error(format("unknown keymap mode '{}'", str));
|
||||||
}
|
}
|
||||||
|
|
||||||
const CommandDesc map_key_cmd = {
|
const CommandDesc map_key_cmd = {
|
||||||
|
@ -1282,9 +1283,7 @@ const CommandDesc eval_string_cmd = {
|
||||||
[](const ParametersParser& parser, Context& context)
|
[](const ParametersParser& parser, Context& context)
|
||||||
{
|
{
|
||||||
context_wrap(parser, context, [](const ParametersParser& parser, Context& context) {
|
context_wrap(parser, context, [](const ParametersParser& parser, Context& context) {
|
||||||
String command;
|
String command = join(parser, ' ', false);
|
||||||
for (auto& param : parser)
|
|
||||||
command += param + " ";
|
|
||||||
CommandManager::instance().execute(command, context);
|
CommandManager::instance().execute(command, context);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1427,7 +1426,7 @@ const CommandDesc info_cmd = {
|
||||||
else if (*placement == "below")
|
else if (*placement == "below")
|
||||||
style = InfoStyle::InlineBelow;
|
style = InfoStyle::InlineBelow;
|
||||||
else
|
else
|
||||||
throw runtime_error("invalid placement " + *placement);
|
throw runtime_error(format("invalid placement '{}'", *placement));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
auto title = parser.get_switch("title").value_or(StringView{});
|
auto title = parser.get_switch("title").value_or(StringView{});
|
||||||
|
@ -1502,7 +1501,7 @@ const CommandDesc set_client_name_cmd = {
|
||||||
if (ClientManager::instance().validate_client_name(parser[0]))
|
if (ClientManager::instance().validate_client_name(parser[0]))
|
||||||
context.set_name(parser[0]);
|
context.set_name(parser[0]);
|
||||||
else if (context.name() != parser[0])
|
else if (context.name() != parser[0])
|
||||||
throw runtime_error("client name '" + parser[0] + "' is not unique");
|
throw runtime_error(format("client name '{}' is not unique", parser[0]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1545,7 +1544,7 @@ const CommandDesc change_working_directory_cmd = {
|
||||||
[](const ParametersParser& parser, Context&)
|
[](const ParametersParser& parser, Context&)
|
||||||
{
|
{
|
||||||
if (chdir(parse_filename(parser[0]).c_str()) != 0)
|
if (chdir(parse_filename(parser[0]).c_str()) != 0)
|
||||||
throw runtime_error("cannot change to directory " + parser[0]);
|
throw runtime_error(format("cannot change to directory '{}'", parser[0]));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ static Face parse_face(StringView facedesc)
|
||||||
case 'b': res.attributes |= Attribute::Bold; break;
|
case 'b': res.attributes |= Attribute::Bold; break;
|
||||||
case 'B': res.attributes |= Attribute::Blink; break;
|
case 'B': res.attributes |= Attribute::Blink; break;
|
||||||
case 'd': res.attributes |= Attribute::Dim; break;
|
case 'd': res.attributes |= Attribute::Dim; break;
|
||||||
default: throw runtime_error("unknown face attribute '" + StringView(*attr_it) + "'");
|
default: throw runtime_error(format("unknown face attribute '{}'", StringView{*attr_it}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,12 +51,12 @@ void FaceRegistry::register_alias(const String& name, const String& facedesc,
|
||||||
bool override)
|
bool override)
|
||||||
{
|
{
|
||||||
if (not override and m_aliases.find(name) != m_aliases.end())
|
if (not override and m_aliases.find(name) != m_aliases.end())
|
||||||
throw runtime_error("alias '" + name + "' already defined");
|
throw runtime_error(format("alias '{}' already defined", name));
|
||||||
|
|
||||||
if (name.empty() or is_color_name(name) or
|
if (name.empty() or is_color_name(name) or
|
||||||
std::any_of(name.begin(), name.end(),
|
std::any_of(name.begin(), name.end(),
|
||||||
[](char c){ return not isalnum(c); }))
|
[](char c){ return not isalnum(c); }))
|
||||||
throw runtime_error("invalid alias name");
|
throw runtime_error(format("invalid alias name: '{}'", name));
|
||||||
|
|
||||||
FaceOrAlias& alias = m_aliases[name];
|
FaceOrAlias& alias = m_aliases[name];
|
||||||
auto it = m_aliases.find(facedesc);
|
auto it = m_aliases.find(facedesc);
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct file_access_error : runtime_error
|
||||||
public:
|
public:
|
||||||
file_access_error(StringView filename,
|
file_access_error(StringView filename,
|
||||||
StringView error_desc)
|
StringView error_desc)
|
||||||
: runtime_error(filename + ": " + error_desc) {}
|
: runtime_error(format("{}: {}", filename, error_desc)) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct file_not_found : file_access_error
|
struct file_not_found : file_access_error
|
||||||
|
|
|
@ -15,7 +15,7 @@ void HighlighterGroup::highlight(const Context& context, HighlightFlags flags,
|
||||||
void HighlighterGroup::add_child(HighlighterAndId&& hl)
|
void HighlighterGroup::add_child(HighlighterAndId&& hl)
|
||||||
{
|
{
|
||||||
if (m_highlighters.contains(hl.first))
|
if (m_highlighters.contains(hl.first))
|
||||||
throw runtime_error("duplicate id: " + hl.first);
|
throw runtime_error(format("duplicate id: '{}'", hl.first));
|
||||||
|
|
||||||
m_highlighters.append(std::move(hl));
|
m_highlighters.append(std::move(hl));
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ Highlighter& HighlighterGroup::get_child(StringView path)
|
||||||
StringView id(path.begin(), sep_it);
|
StringView id(path.begin(), sep_it);
|
||||||
auto it = m_highlighters.find(id);
|
auto it = m_highlighters.find(id);
|
||||||
if (it == m_highlighters.end())
|
if (it == m_highlighters.end())
|
||||||
throw child_not_found("no such id: " + id);
|
throw child_not_found(format("no such id: '{}'", id));
|
||||||
if (sep_it == path.end())
|
if (sep_it == path.end())
|
||||||
return *it->second;
|
return *it->second;
|
||||||
else
|
else
|
||||||
|
|
|
@ -60,8 +60,8 @@ void HookManager::run_hook(StringView hook_name,
|
||||||
}
|
}
|
||||||
catch (runtime_error& err)
|
catch (runtime_error& err)
|
||||||
{
|
{
|
||||||
write_debug("error running hook " + hook_name + "/" +
|
write_debug(format("error running hook {}/{}: {}",
|
||||||
hook.first + ": " + err.what());
|
hook_name, hook.first, err.what()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1010,7 +1010,7 @@ public:
|
||||||
{
|
{
|
||||||
auto num_sel = context().selections().size();
|
auto num_sel = context().selections().size();
|
||||||
return {AtomList{ { "insert ", Face(Color::Green) },
|
return {AtomList{ { "insert ", Face(Color::Green) },
|
||||||
{ to_string(num_sel) + " sel", Face(Color::Blue) } }};
|
{ format( "{} sel", num_sel), Face(Color::Blue) } }};
|
||||||
}
|
}
|
||||||
|
|
||||||
KeymapMode keymap_mode() const override { return KeymapMode::Insert; }
|
KeymapMode keymap_mode() const override { return KeymapMode::Insert; }
|
||||||
|
|
|
@ -56,7 +56,7 @@ void option_from_string(StringView str, InsertCompleterDesc& opt)
|
||||||
opt.param = Optional<String>{};
|
opt.param = Optional<String>{};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw runtime_error("invalid completer description: " + str);
|
throw runtime_error(format("invalid completer description: '{}'", str));
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
|
|
|
@ -211,11 +211,11 @@ void goto_commands(Context& context, NormalParams params)
|
||||||
|
|
||||||
String path = find_file(filename, paths);
|
String path = find_file(filename, paths);
|
||||||
if (path.empty())
|
if (path.empty())
|
||||||
throw runtime_error("unable to find file '" + filename + "'");
|
throw runtime_error(format("unable to find file '{}'", filename));
|
||||||
|
|
||||||
Buffer* buffer = create_buffer_from_file(path);
|
Buffer* buffer = create_buffer_from_file(path);
|
||||||
if (buffer == nullptr)
|
if (buffer == nullptr)
|
||||||
throw runtime_error("unable to open file '" + path + "'");
|
throw runtime_error(format("unable to open file '{}'", path));
|
||||||
|
|
||||||
if (buffer != &context.buffer())
|
if (buffer != &context.buffer())
|
||||||
{
|
{
|
||||||
|
|
|
@ -168,7 +168,7 @@ template<typename T> const T& Option::get() const
|
||||||
{
|
{
|
||||||
auto* typed_opt = dynamic_cast<const TypedOption<T>*>(this);
|
auto* typed_opt = dynamic_cast<const TypedOption<T>*>(this);
|
||||||
if (not typed_opt)
|
if (not typed_opt)
|
||||||
throw runtime_error("option " + name() + " is not of type " + typeid(T).name());
|
throw runtime_error(format("option '{}' is not of type '{}'", name(), typeid(T).name()));
|
||||||
return typed_opt->get();
|
return typed_opt->get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ template<typename T> void Option::set(const T& val)
|
||||||
{
|
{
|
||||||
auto* typed_opt = dynamic_cast<TypedOption<T>*>(this);
|
auto* typed_opt = dynamic_cast<TypedOption<T>*>(this);
|
||||||
if (not typed_opt)
|
if (not typed_opt)
|
||||||
throw runtime_error("option " + name() + " is not of type " + typeid(T).name());
|
throw runtime_error(format("option '{}' is not of type '{}'", name(), typeid(T).name()));
|
||||||
return typed_opt->set(val);
|
return typed_opt->set(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +208,7 @@ public:
|
||||||
{
|
{
|
||||||
if ((*it)->is_of_type<T>() and (*it)->flags() == flags)
|
if ((*it)->is_of_type<T>() and (*it)->flags() == flags)
|
||||||
return **it;
|
return **it;
|
||||||
throw runtime_error("option " + name + " already declared with different type or flags");
|
throw runtime_error(format("option '{}' already declared with different type or flags", name));
|
||||||
}
|
}
|
||||||
m_descs.emplace_back(new OptionDesc{name, docstring, flags});
|
m_descs.emplace_back(new OptionDesc{name, docstring, flags});
|
||||||
opts.emplace_back(new TypedOption<T>{m_global_manager, *m_descs.back(), value});
|
opts.emplace_back(new TypedOption<T>{m_global_manager, *m_descs.back(), value});
|
||||||
|
|
|
@ -217,7 +217,7 @@ inline void option_from_string(StringView str, YesNoAsk& opt)
|
||||||
else if (str == "ask")
|
else if (str == "ask")
|
||||||
opt = Ask;
|
opt = Ask;
|
||||||
else
|
else
|
||||||
throw runtime_error("invalid value '" + str + "', expected yes, no or ask");
|
throw runtime_error(format("invalid value '{}', expected yes, no or ask", str));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,13 +21,13 @@ struct parameter_error : public runtime_error
|
||||||
struct unknown_option : public parameter_error
|
struct unknown_option : public parameter_error
|
||||||
{
|
{
|
||||||
unknown_option(StringView name)
|
unknown_option(StringView name)
|
||||||
: parameter_error("unknown option '" + name + "'") {}
|
: parameter_error(format("unknown option '{}'", name)) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct missing_option_value: public parameter_error
|
struct missing_option_value: public parameter_error
|
||||||
{
|
{
|
||||||
missing_option_value(StringView name)
|
missing_option_value(StringView name)
|
||||||
: parameter_error("missing value for option '" + name + "'") {}
|
: parameter_error(format("missing value for option '{}'", name)) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wrong_argument_count : public parameter_error
|
struct wrong_argument_count : public parameter_error
|
||||||
|
|
|
@ -68,7 +68,7 @@ Register& RegisterManager::operator[](StringView reg)
|
||||||
};
|
};
|
||||||
auto it = reg_names.find(reg);
|
auto it = reg_names.find(reg);
|
||||||
if (it == reg_names.end())
|
if (it == reg_names.end())
|
||||||
throw runtime_error("no such register: " + reg);
|
throw runtime_error(format("no such register: '{}'", reg));
|
||||||
return (*this)[it->second];
|
return (*this)[it->second];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -287,14 +287,12 @@ RemoteUI::RemoteUI(int socket)
|
||||||
m_input_callback(mode);
|
m_input_callback(mode);
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
write_debug("remote client connected: " +
|
write_debug(format("remote client connected: {}", m_socket_watcher.fd()));
|
||||||
to_string(m_socket_watcher.fd()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RemoteUI::~RemoteUI()
|
RemoteUI::~RemoteUI()
|
||||||
{
|
{
|
||||||
write_debug("remote client disconnected: " +
|
write_debug(format("remote client disconnected: {}", m_socket_watcher.fd()));
|
||||||
to_string(m_socket_watcher.fd()));
|
|
||||||
m_socket_watcher.close_fd();
|
m_socket_watcher.close_fd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -421,7 +419,7 @@ static sockaddr_un session_addr(StringView session)
|
||||||
{
|
{
|
||||||
sockaddr_un addr;
|
sockaddr_un addr;
|
||||||
addr.sun_family = AF_UNIX;
|
addr.sun_family = AF_UNIX;
|
||||||
strncpy(addr.sun_path, ("/tmp/kak-" + session).c_str(),
|
strncpy(addr.sun_path, format("/tmp/kak-{}", session).c_str(),
|
||||||
sizeof(addr.sun_path) - 1);
|
sizeof(addr.sun_path) - 1);
|
||||||
return addr;
|
return addr;
|
||||||
}
|
}
|
||||||
|
@ -585,8 +583,8 @@ private:
|
||||||
}
|
}
|
||||||
catch (runtime_error& e)
|
catch (runtime_error& e)
|
||||||
{
|
{
|
||||||
write_debug("error running command '" + m_buffer +
|
write_debug(format("error running command '{}': {}",
|
||||||
"' : " + e.what());
|
m_buffer, e.what()));
|
||||||
}
|
}
|
||||||
catch (client_removed&) {}
|
catch (client_removed&) {}
|
||||||
close(socket);
|
close(socket);
|
||||||
|
@ -645,7 +643,7 @@ Server::Server(String session_name)
|
||||||
|
|
||||||
void Server::close_session()
|
void Server::close_session()
|
||||||
{
|
{
|
||||||
unlink(("/tmp/kak-" + m_session).c_str());
|
unlink(format("/tmp/kak-{}", m_session).c_str());
|
||||||
m_listener->close_fd();
|
m_listener->close_fd();
|
||||||
m_listener.reset();
|
m_listener.reset();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct peer_disconnected {};
|
||||||
struct connection_failed : runtime_error
|
struct connection_failed : runtime_error
|
||||||
{
|
{
|
||||||
connection_failed(StringView filename)
|
connection_failed(StringView filename)
|
||||||
: runtime_error{"connect to " + filename + " failed"}
|
: runtime_error{format("connect to {} failed", filename)}
|
||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,7 @@ Selection find_next_match(const Buffer& buffer, const Selection& sel, const Rege
|
||||||
captures.emplace_back(match.first, match.second);
|
captures.emplace_back(match.first, match.second);
|
||||||
}
|
}
|
||||||
if (not found or begin == buffer.end())
|
if (not found or begin == buffer.end())
|
||||||
throw runtime_error("'" + regex.str() + "': no matches found");
|
throw runtime_error(format("'{}': no matches found", regex.str()));
|
||||||
|
|
||||||
end = (begin == end) ? end : utf8::previous(end, begin);
|
end = (begin == end) ? end : utf8::previous(end, begin);
|
||||||
if (direction == Backward)
|
if (direction == Backward)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user