Fix regression when file on command line cannot be opened
Commit933e4a599
(Load buffer in command line order, 2022-12-06) introduced a regression: the command $ kak /boot/grub/grub.cfg Fatal error: no such buffer '/boot/grub/grub.cfg' quits with no indication of the underlying error. Prior to933e4a599
, it would open the *scratch* buffer instead, and show an error in the status line, pointing to the debug buffer, which would contain: error while opening file '/boot/grub/grub.cfg': /boot/grub/grub.cfg: Permission denied Let's fix this scenario by matching the old behavior.
This commit is contained in:
parent
938be7a7b0
commit
4f7d7a5e33
|
@ -50,10 +50,13 @@ Client* ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, int pi
|
||||||
StringView init_buffer, Optional<BufferCoord> init_coord,
|
StringView init_buffer, Optional<BufferCoord> init_coord,
|
||||||
Client::OnExitCallback on_exit)
|
Client::OnExitCallback on_exit)
|
||||||
{
|
{
|
||||||
Buffer& buffer = init_buffer.empty() ? BufferManager::instance().get_first_buffer()
|
Buffer* buffer = nullptr;
|
||||||
: BufferManager::instance().get_buffer(init_buffer);
|
if (not init_buffer.empty())
|
||||||
|
buffer = BufferManager::instance().get_buffer_ifp(init_buffer);
|
||||||
|
if (buffer == nullptr)
|
||||||
|
buffer = &BufferManager::instance().get_first_buffer();
|
||||||
|
|
||||||
WindowAndSelections ws = get_free_window(buffer);
|
WindowAndSelections ws = get_free_window(*buffer);
|
||||||
Client* client = new Client{std::move(ui), std::move(ws.window),
|
Client* client = new Client{std::move(ui), std::move(ws.window),
|
||||||
std::move(ws.selections), pid,
|
std::move(ws.selections), pid,
|
||||||
std::move(env_vars),
|
std::move(env_vars),
|
||||||
|
@ -64,7 +67,7 @@ Client* ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, int pi
|
||||||
if (init_coord)
|
if (init_coord)
|
||||||
{
|
{
|
||||||
auto& selections = client->context().selections_write_only();
|
auto& selections = client->context().selections_write_only();
|
||||||
selections = SelectionList(buffer, buffer.clamp(*init_coord));
|
selections = SelectionList(*buffer, buffer->clamp(*init_coord));
|
||||||
client->context().window().center_line(init_coord->line);
|
client->context().window().center_line(init_coord->line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user